From b9c8e02072ea6da04ddc9fe9795f699697f25d07 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Thu, 21 Feb 2019 08:18:52 +0100 Subject: o Reformat. to_bom: export to_tom_xml too. model: o More type annotations. o Parse ref_type and ref_num when constructed. --- src/ee/kicad/model.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'src/ee/kicad/model.py') diff --git a/src/ee/kicad/model.py b/src/ee/kicad/model.py index f6bd8c1..edc900c 100644 --- a/src/ee/kicad/model.py +++ b/src/ee/kicad/model.py @@ -1,8 +1,10 @@ import re -from typing import List +from typing import List, Set from functools import total_ordering +from ee import EeException + class Position(object): def __init__(self, x, y): @@ -61,8 +63,17 @@ class Component(object): self._ref = ref self._fields = fields # type List[ComponentField] + r = re.compile("([^0-9]+)(.+)") + try: + parts = r.split(self._ref) + self._ref_type = parts[1] + self._ref_num = int(parts[2]) + except ValueError: + self._ref_type = None + self._ref_num = None + def __eq__(self, o: object) -> bool: - other = o # type Component + other = o # type: Component return isinstance(o, Component) and self.ref == other.ref def __lt__(self, o: object) -> bool: @@ -94,17 +105,19 @@ class Component(object): @property def has_ref_num(self): - return not self._ref.endswith("?") + return self._ref_num is not None @property def ref_type(self) -> str: - r = re.compile("([^0-9]+)(.+)") - return r.split(self._ref)[1] + if self._ref_type is not None: + return self._ref_type + raise EeException("This component does not have a ref type") @property def ref_num(self) -> int: - r = re.compile("([^0-9]+)(.+)") - return int(r.split(self._ref)[2]) + if self._ref_num is not None: + return self._ref_num + raise EeException("This component does not have a ref num") @property def is_pwr(self) -> bool: @@ -115,11 +128,11 @@ class Component(object): return self.ref_type == "#FLG" @property - def value(self): + def value(self) -> str: return self._fields[1].value @property - def footprint(self): + def footprint(self) -> str: return self._fields[2].value @property @@ -177,7 +190,7 @@ class Schematic(object): self._sheets.append(sheet) @property - def components(self): + def components(self) -> Set[Component]: return frozenset(self._components) def add_component(self, component): -- cgit v1.2.3