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