diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2019-05-20 15:27:38 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2019-05-20 15:27:38 +0200 |
commit | 9eba62ef1d6b4896de693976116f69a9692332d9 (patch) | |
tree | 98ae9fdf48818206a6db552938c53e35abf1c45d /src/ee/part/requirement.py | |
parent | def66a1bd81283d38b468b66ff6e4e34621a5ce2 (diff) | |
download | ee-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.py | 58 |
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) |