aboutsummaryrefslogtreecommitdiff
path: root/trygvis/eda/digikey/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'trygvis/eda/digikey/__init__.py')
-rw-r--r--trygvis/eda/digikey/__init__.py17
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)