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)