aboutsummaryrefslogtreecommitdiff
path: root/src/ee/part/requirement.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-05-20 15:27:38 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2019-05-20 15:27:38 +0200
commit9eba62ef1d6b4896de693976116f69a9692332d9 (patch)
tree98ae9fdf48818206a6db552938c53e35abf1c45d /src/ee/part/requirement.py
parentdef66a1bd81283d38b468b66ff6e4e34621a5ce2 (diff)
downloadee-python-9eba62ef1d6b4896de693976116f69a9692332d9.tar.gz
ee-python-9eba62ef1d6b4896de693976116f69a9692332d9.tar.bz2
ee-python-9eba62ef1d6b4896de693976116f69a9692332d9.tar.xz
ee-python-9eba62ef1d6b4896de693976116f69a9692332d9.zip
ee:
o Adding FactType as a smaller wrapper around the fact uri. o Adding ee.part.Facts, used as Part.facts o Renaming 'type' uri to 'ee-component-type'. kicad-make-bom: Removing strategy functionality, replaced with part-apply-function. Moving default strategy contents into ee.kicad.functions.
Diffstat (limited to 'src/ee/part/requirement.py')
-rw-r--r--src/ee/part/requirement.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/ee/part/requirement.py b/src/ee/part/requirement.py
new file mode 100644
index 0000000..a9381df
--- /dev/null
+++ b/src/ee/part/requirement.py
@@ -0,0 +1,58 @@
+from typing import List
+
+from ee.part import Part, fact_keys, FactType, common_fact_types
+
+
+class Requirement(object):
+ def __init__(self, part: Part):
+ self.part = part
+
+
+class EqualRequirement(Requirement):
+ def __init__(self, part: Part, fact_type: FactType, value: str):
+ super().__init__(part)
+ self.fact_type = fact_type
+ self.value = value
+
+ def __str__(self):
+ return "{}.{} == {}".format(self.part.printable_reference, self.fact_type, self.value)
+
+
+class MinRequirement(Requirement):
+ def __init__(self, part: Part, fact_type: FactType, value: str):
+ super().__init__(part)
+ self.fact_type = fact_type
+ self.value = value
+
+ def __str__(self):
+ return "{}.{} == {}".format(self.part.printable_reference, self.fact_type, self.value)
+
+
+class MaxRequirement(Requirement):
+ def __init__(self, part: Part, fact_type: FactType, value: str):
+ super().__init__(part)
+ self.fact_type = fact_type
+ self.value = value
+
+ def __str__(self):
+ return "{}.{} == {}".format(self.part.printable_reference, self.fact_type, self.value)
+
+
+class PartAnalysis(object):
+ def __init__(self, part: Part, requirements: List[Requirement]):
+ self.part = part
+ self.requirements = requirements
+
+
+def analyze_requirements(part: Part) -> PartAnalysis:
+ rs = []
+
+ resistance = part.find_fact(common_fact_types.resistance.uri)
+ if resistance:
+ rs.append(EqualRequirement(part, common_fact_types.resistance, resistance.valueProp))
+
+ capacitance = part.find_fact(common_fact_types.capacitance.uri)
+ if capacitance:
+ rs.append(EqualRequirement(part, common_fact_types.capacitance, capacitance.valueProp))
+
+ return PartAnalysis(part, rs)