from pathlib import Path from ee.part import PartDb, load_db, save_db, Part from ee.xml import types __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 xml in in_parts.iterparts(): part = Part(xml) pn_value = next((p.valueProp for p in part.get_mpns()), None) if pn_value is None: # TODO: use schematic reference if found print("Skipping part with no part number: uri={}".format(xml.uriProp)) 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)