aboutsummaryrefslogtreecommitdiff
path: root/src/ee/xml/bom_file_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/xml/bom_file_utils.py')
-rw-r--r--src/ee/xml/bom_file_utils.py50
1 files changed, 50 insertions, 0 deletions
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