aboutsummaryrefslogtreecommitdiff
path: root/src/ee/part/__init__.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-03-15 14:55:15 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2019-03-15 14:55:15 +0100
commit237a6faa8a23826e68bbc00bc107b2d6f97235d0 (patch)
treefe1a6a6b1a4ed991a6eacd9ec6960325db3f9e4f /src/ee/part/__init__.py
parent3523190bb7ca1c38caea3a1aae51062d22e56b09 (diff)
downloadee-python-237a6faa8a23826e68bbc00bc107b2d6f97235d0.tar.gz
ee-python-237a6faa8a23826e68bbc00bc107b2d6f97235d0.tar.bz2
ee-python-237a6faa8a23826e68bbc00bc107b2d6f97235d0.tar.xz
ee-python-237a6faa8a23826e68bbc00bc107b2d6f97235d0.zip
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 <schema-reference> and <part-numbers> into <references> o Creating <part-uri> as a possible <reference>. Used by order to point to other parts.
Diffstat (limited to 'src/ee/part/__init__.py')
-rw-r--r--src/ee/part/__init__.py24
1 files changed, 6 insertions, 18 deletions
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))