diff options
Diffstat (limited to 'trygvis/eda/digikey/__init__.py')
-rw-r--r-- | trygvis/eda/digikey/__init__.py | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/trygvis/eda/digikey/__init__.py b/trygvis/eda/digikey/__init__.py index 5f4ad8a..ec1167d 100644 --- a/trygvis/eda/digikey/__init__.py +++ b/trygvis/eda/digikey/__init__.py @@ -1,5 +1,6 @@ import re +from typing import List import requests from cachecontrol import CacheControl from cachecontrol.caches.file_cache import FileCache @@ -10,9 +11,11 @@ from rdflib.namespace import RDF, RDFS import trygvis.eda.digikey.rdf + def normalize_filename(part): return part.replace('/', '_').replace(' ', '_') + def _clean(s): if s is None: return None @@ -22,7 +25,7 @@ def _clean(s): class DigikeyDatabase(object): def __init__(self): - self.productCategories = [] + self.productCategories = [] # type: List[DigikeyProductCategory] self.attributeTypes = {} def add_product_category(self, pc): @@ -55,8 +58,8 @@ class DigikeyProductCategory(object): self.label = _clean(label) self.digikey_url = digikey_url if digikey_url is None or digikey_url.startswith("http") else \ "http://www.digikey.com" + digikey_url - self.parent = parent - self.subCategories = [] + self.parent = parent # type: DigikeyProductCategory + self.subCategories = [] # type: List[DigikeyProductCategory assert self.id is not None assert self.label is not None @@ -154,6 +157,7 @@ class DigikeyProduct(object): class DigikeyClient(object): def __init__(self): + # TODO: this should be put under .eda-rdf/ cache = FileCache('digikey_cache', forever=True) self.sess = CacheControl(requests.Session(), cache=cache, heuristic=ExpiresAfter(days=1)) @@ -177,7 +181,8 @@ def _id_from_url(url): return m.group(1) if m else None -def download_category_tree(database, client, baseurl="http://www.digikey.com/products/en"): +def download_category_tree(database: DigikeyDatabase, client: DigikeyClient, + baseurl="http://www.digikey.com/products/en"): page = client.req(baseurl) dom = html.fromstring(page.content) @@ -212,7 +217,7 @@ def download_category_tree(database, client, baseurl="http://www.digikey.com/pro database.add_product_category(pc) -def download_attribute_types_from_category(category, client): +def download_attribute_types_from_category(category: DigikeyProductCategory, client: DigikeyClient) -> List[DigikeyAttributeType]: page = client.req(category.digikey_url) tree = html.fromstring(page.content) @@ -242,7 +247,7 @@ def download_attribute_types_from_category(category, client): return attributes -def download_product(client, db, query): +def download_product(client: DigikeyClient, db, query): # http://www.digikey.com/products/en?x=0&y=0&lang=en&site=us&keywords=553-2320-1-ND page = client.req("http://www.digikey.com/products/en", params={'lang': 'en', 'site': 'us', 'keywords': query}) tree = html.fromstring(page.content) |