From a00dcfc7f6d12442fca8c5b7d43f12b707f0c877 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 9 Apr 2019 06:03:33 +0200 Subject: o Renaming part-create-distributor-search-list to pn-part-search-list. Making the search more narrow, it is only responsible to find parts based on MPN or SPN. --- src/ee/part/__init__.py | 11 +++++++ src/ee/part/create_distributor_search_list.py | 44 --------------------------- src/ee/part/pn_part_search_list.py | 44 +++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 44 deletions(-) delete mode 100644 src/ee/part/create_distributor_search_list.py create mode 100644 src/ee/part/pn_part_search_list.py (limited to 'src/ee/part') diff --git a/src/ee/part/__init__.py b/src/ee/part/__init__.py index 7a58f75..fbf0838 100644 --- a/src/ee/part/__init__.py +++ b/src/ee/part/__init__.py @@ -56,6 +56,17 @@ class Part(object): def get_part_references(self) -> List[types.PartReference]: return self.xml.referencesProp.part_referenceProp + def get_exactly_one_part_reference(self) -> types.PartReference: + refs = self.get_part_references() + if len(refs) == 0: + raise EeException("This part does not contain any part references{}". + format(", uri=" + self.uri if self.uri else "")) + if len(refs) != 1: + raise EeException("This part does not contain exactly one part reference: {}". + format(", ".join([ref.part_uriProp for ref in refs]))) + + return refs[0] + # Schematic references def add_schematic_reference(self, ref): diff --git a/src/ee/part/create_distributor_search_list.py b/src/ee/part/create_distributor_search_list.py deleted file mode 100644 index 8d70e3e..0000000 --- a/src/ee/part/create_distributor_search_list.py +++ /dev/null @@ -1,44 +0,0 @@ -from pathlib import Path - -from ee.part import PartDb, load_db, save_db, Part, fact_keys -from ee.xml import types - -__all__ = ["create_distributor_search_list"] - -ignored_part_classes = [ - "mechanical" -] - - -def create_distributor_search_list(in_path: Path, out_path: Path): - in_parts = load_db(in_path) - out_parts = PartDb() - - print("loaded {} existing parts".format(in_parts.size())) - - for xml in in_parts.iterparts(): - part = Part(xml) - pn_value = next((p.valueProp for p in part.get_mpns()), None) - - part_class = part.find_fact(fact_keys.part_class) - if part_class: - if part_class.valueProp in ignored_part_classes: - continue - - if pn_value is None: - refs = [ref.referenceProp for ref in part.get_schematic_references()] - print("Skipping part with no part number: schematic reference: {}".format(", ".join(refs))) - continue - - entry = out_parts.find_by_pn(pn_value) - - if entry is not None: - continue - - new_part = types.Part() - new_part.referencesProp = xml.referencesProp - - out_parts.add_entry(new_part, True) - - print("Saving {} work parts".format(out_parts.size())) - save_db(out_path, out_parts) diff --git a/src/ee/part/pn_part_search_list.py b/src/ee/part/pn_part_search_list.py new file mode 100644 index 0000000..049d0b8 --- /dev/null +++ b/src/ee/part/pn_part_search_list.py @@ -0,0 +1,44 @@ +from pathlib import Path + +from ee.part import PartDb, load_db, save_db, Part, fact_keys +from ee.xml import types + +__all__ = ["pn_part_search_list"] + +ignored_part_classes = [ + "mechanical" +] + + +def pn_part_search_list(in_path: Path, out_path: Path, supplier: str): + in_parts = load_db(in_path) + out_parts = PartDb() + + # print("loaded {} existing parts".format(in_parts.size())) + + for xml in in_parts.iterparts(): + part = Part(xml) + pn_value = next((p.valueProp for p in part.get_mpns()), None) + + part_class = part.find_fact(fact_keys.part_class) + if part_class: + if part_class.valueProp in ignored_part_classes: + continue + + if pn_value is None: + refs = [ref.referenceProp for ref in part.get_schematic_references()] + print("Skipping part with no part number: schematic reference: {}".format(", ".join(refs))) + continue + + entry = out_parts.find_by_pn(pn_value) + + if entry is not None: + continue + + new_part = types.Part() + new_part.referencesProp = xml.referencesProp + + out_parts.add_entry(new_part, True) + + # print("Saving {} work parts".format(out_parts.size())) + save_db(out_path, out_parts) -- cgit v1.2.3