aboutsummaryrefslogtreecommitdiff
path: root/src/ee/kicad/model.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/kicad/model.py')
-rw-r--r--src/ee/kicad/model.py33
1 files changed, 23 insertions, 10 deletions
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):