From 80e0623913e87c6480049520590e424a831e0401 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 24 Feb 2019 21:51:38 +0100 Subject: Digikey: replacing requests-based code with selenium. Adding new tools: digikey-import-parts and digikey-refresh-parts. --- src/ee/xml/bom_file_utils.py | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/ee/xml/bom_file_utils.py (limited to 'src/ee/xml/bom_file_utils.py') diff --git a/src/ee/xml/bom_file_utils.py b/src/ee/xml/bom_file_utils.py new file mode 100644 index 0000000..f09a3dd --- /dev/null +++ b/src/ee/xml/bom_file_utils.py @@ -0,0 +1,50 @@ +from typing import List, Optional + +from ee.xml import bomFile + +__all__ = [ + "part_numbers", + "find_pn", + "find_dpn", +] + + +def part_numbers(part: bomFile.Part) -> List[bomFile.PartNumber]: + pns = part.part_numbersProp # type: bomFile.PartNumberList + + if pns is None: + return [] + + return pns.part_numberProp + + +def find_pn(part: bomFile.Part) -> str: + for pn in part_numbers(part): + if pn.distributor is None: + return pn.value + + +def find_dpn(part: bomFile.Part, distributor: str) -> str: + for pn in part_numbers(part): + if pn.distributor == distributor: + return pn.value + + +def find_fact_set(part: bomFile.Part, uri: str, create=False) -> Optional[bomFile.FactSet]: + fact_set_list: bomFile.FactSetList = part.fact_setsProp + + if fact_set_list is None: + if not create: + return + + fact_set_list = part.fact_setsProp = bomFile.FactSetList() + + for fs in fact_set_list.fact_setProp: + fact_set: bomFile.FactSet = fs + + if fact_set.sourceProp == uri: + return fact_set + + fact_set = bomFile.FactSet(source=uri) + fact_set_list.add_fact_set(fact_set) + return fact_set -- cgit v1.2.3