From 237a6faa8a23826e68bbc00bc107b2d6f97235d0 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 15 Mar 2019 14:55:15 +0100 Subject: Refactoring: o Renaming part.id to part.uri. Changing to URIs and use that as an identifier if the part is known. Schematic part does not have an URI. o Merging and into o Creating as a possible . Used by order to point to other parts. --- src/ee/part/__init__.py | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'src/ee/part/__init__.py') diff --git a/src/ee/part/__init__.py b/src/ee/part/__init__.py index 45561ec..36a3d3c 100644 --- a/src/ee/part/__init__.py +++ b/src/ee/part/__init__.py @@ -1,9 +1,7 @@ from pathlib import Path from typing import List, MutableMapping, Optional, Iterator -from ee import EeException from ee.xml import types, bom_file_utils -from ee.xml.bom_file_utils import find_pn, find_dpn, find_root_tag __all__ = [ "PartDb", @@ -17,10 +15,10 @@ class Entry(object): self.new = new self.part = part - self.pn = find_pn(part) + self.pn = next((p.valueProp for p in bom_file_utils.part_numbers(part)), None) def dpn(self, uri: str): - return find_dpn(self.part, uri) + return [spn for spn in bom_file_utils.supplier_part_numbers(self.part) if spn.supplierProp == uri] class PartDb(object): @@ -42,7 +40,7 @@ class PartDb(object): def iterparts(self, sort=False) -> Iterator[types.Part]: it = (e.part for e in self.parts) - return sorted(it, key=lambda p: p.idProp) if sort else it + return sorted(it, key=lambda p: p.uriProp) if sort else it def size(self) -> int: return len(self.parts) @@ -51,16 +49,6 @@ class PartDb(object): entry = self.pn_index.get(pn, None) return entry.part if entry else None - def find_by_dpn(self, distributor: str, pn: str) -> types.Part: - idx = self.dpn_indexes.get(distributor) - - if idx is None: - tmp = [(find_dpn(entry.part, distributor), entry) for entry in self.parts] - idx = {dpn: entry for dpn, entry in tmp if dpn is not None} - self.dpn_indexes[distributor] = idx - - return idx[pn].part - def load_db(path: Path) -> PartDb: db = PartDb() @@ -76,10 +64,10 @@ def load_db(path: Path) -> PartDb: return db -def save_db(path: Path, db: PartDb): +def save_db(path: Path, db: PartDb, sort=False): part_db = types.PartDb() parts = part_db.parts = types.PartList() - parts.partProp.extend(db.iterparts(sort=True)) + parts.partProp.extend(db.iterparts(sort=sort)) with path.open("w") as f: - part_db.export(outfile=f, level=0, name_=find_root_tag(part_db)) + part_db.export(outfile=f, level=0, name_=bom_file_utils.find_root_tag(part_db)) -- cgit v1.2.3