From 5f12ee84322731ce9b846a27852999ff219c75b5 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Thu, 15 Aug 2019 13:56:51 +0200 Subject: kicad.dl: Always add fact-type/value for all components. Still adding the more specific values for known part types. bom: Use the correct URI for finding the value. Don't die if a part has both value and mpn, and they reference the same part. --- src/ee/bom.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/ee/bom.py') diff --git a/src/ee/bom.py b/src/ee/bom.py index e12260c..cf18955 100644 --- a/src/ee/bom.py +++ b/src/ee/bom.py @@ -25,7 +25,7 @@ class BomPart(object): self.part = part ref = self.part.get_only_schematic_reference() self.ref = ref.referenceProp if ref else None - self.hits = [] + self.hits: List[Hit] = [] self.selected_part: Optional[Part] = None def add_hit(self, part, method): @@ -94,11 +94,14 @@ def create_bom(project: Project, schematic_path: Path, out_path: Path, part_dbs: sch_part_numbers = [pn.valueProp for pn in bom_part.part.get_mpns()] sch_supplier_part_numbers = [spn.valueProp for spn in bom_part.part.get_spns()] - value_fact = bom_part.part.find_fact(make_fact_key("value")) + value_fact = bom_part.part.find_fact(fact_keys.value) if value_fact: value_fact = value_fact.valueProp for supplier in suppliers: + if value_fact is not None: + pass + # Part number search pns = supplier_pn_idx.get(supplier.uri) for sch_pn in sch_part_numbers: @@ -126,9 +129,12 @@ def create_bom(project: Project, schematic_path: Path, out_path: Path, part_dbs: elif len(bom_part.hits) == 1: bom_part.selected_part = bom_part.hits[0].part else: - references = [hit.part.printable_reference for hit in bom_part.hits] - raise EeException("Multiple hits when looking for part: {}". - format(bom_part.ref, ",".join(references))) + if len(set(hit.part.uri for hit in bom_part.hits)) == 1: + bom_part.selected_part = bom_part.hits[0].part + else: + references = [hit.part.printable_reference for hit in bom_part.hits] + raise StopToolException("Multiple hits when looking for part: {}". + format(bom_part.ref, ",".join(references))) bom_parts.add_index("uri", lambda bp: bp.selected_part.uri if bp.selected_part else None) bom_parts.add_multi_index("supplier,part", lambda op: ( -- cgit v1.2.3