From 9eba62ef1d6b4896de693976116f69a9692332d9 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Mon, 20 May 2019 15:27:38 +0200 Subject: 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. --- src/ee/part/requirement.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/ee/part/requirement.py (limited to 'src/ee/part/requirement.py') 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) -- cgit v1.2.3