from pathlib import Path from ee.part import PartDb, load_db, save_db from ee.xml import types, bom_file_utils __all__ = ["create_distributor_search_list"] 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 part in in_parts.iterparts(): pn_value = next((p.valueProp for p in bom_file_utils.part_numbers(part)), None) if pn_value is None: # TODO: use schematic reference if found print("Skipping part with no part number: uri={}".format(part.uriProp)) continue entry = out_parts.find_by_pn(pn_value) if entry is not None: continue new_part = types.Part(id=pn_value) new_part.referencesProp = part.referencesProp out_parts.add_entry(new_part, True) print("Saving {} work parts".format(out_parts.size())) save_db(out_path, out_parts)