aboutsummaryrefslogtreecommitdiff
path: root/src/ee/part/requirement.py
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2019-05-23 21:08:36 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2019-05-26 21:55:41 +0200
commit1699cca793c6a8ebc00942557b6764fff6739044 (patch)
treeee8162390db5a7607298fe5f40841bb131b60542 /src/ee/part/requirement.py
parent4afac7dc4c743284e5243428f00928aa7eaacfdc (diff)
downloadee-python-1699cca793c6a8ebc00942557b6764fff6739044.tar.gz
ee-python-1699cca793c6a8ebc00942557b6764fff6739044.tar.bz2
ee-python-1699cca793c6a8ebc00942557b6764fff6739044.tar.xz
ee-python-1699cca793c6a8ebc00942557b6764fff6739044.zip
part-find-requirements: wip
Diffstat (limited to 'src/ee/part/requirement.py')
-rw-r--r--src/ee/part/requirement.py30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/ee/part/requirement.py b/src/ee/part/requirement.py
index a9381df..297727b 100644
--- a/src/ee/part/requirement.py
+++ b/src/ee/part/requirement.py
@@ -1,6 +1,20 @@
from typing import List
-from ee.part import Part, fact_keys, FactType, common_fact_types
+from ee import EeVal
+from ee.part import Part, FactType, common_fact_types, EeValueFactType
+
+
+def to_str(part, fact_type, value, op):
+ v = None
+ if isinstance(fact_type, EeValueFactType):
+ eeft: EeValueFactType=fact_type
+ ev = EeVal.try_parse(value, eeft.ee_type.symbol)
+ v = str(ev)
+
+ if not v:
+ v = value
+
+ return "{}.{} {} {}".format(part.printable_reference, fact_type.label or fact_type.uri, op, v)
class Requirement(object):
@@ -15,7 +29,7 @@ class EqualRequirement(Requirement):
self.value = value
def __str__(self):
- return "{}.{} == {}".format(self.part.printable_reference, self.fact_type, self.value)
+ return to_str(self.part, self.fact_type, self.value, "==")
class MinRequirement(Requirement):
@@ -25,7 +39,7 @@ class MinRequirement(Requirement):
self.value = value
def __str__(self):
- return "{}.{} == {}".format(self.part.printable_reference, self.fact_type, self.value)
+ return to_str(self.part, self.fact_type, self.value, ">")
class MaxRequirement(Requirement):
@@ -35,7 +49,7 @@ class MaxRequirement(Requirement):
self.value = value
def __str__(self):
- return "{}.{} == {}".format(self.part.printable_reference, self.fact_type, self.value)
+ return to_str(self.part, self.fact_type, self.value, "<")
class PartAnalysis(object):
@@ -47,12 +61,12 @@ class PartAnalysis(object):
def analyze_requirements(part: Part) -> PartAnalysis:
rs = []
- resistance = part.find_fact(common_fact_types.resistance.uri)
+ resistance = part.facts.get_value(common_fact_types.resistance)
if resistance:
- rs.append(EqualRequirement(part, common_fact_types.resistance, resistance.valueProp))
+ rs.append(EqualRequirement(part, common_fact_types.resistance, resistance))
- capacitance = part.find_fact(common_fact_types.capacitance.uri)
+ capacitance = part.facts.get_value(common_fact_types.capacitance)
if capacitance:
- rs.append(EqualRequirement(part, common_fact_types.capacitance, capacitance.valueProp))
+ rs.append(EqualRequirement(part, common_fact_types.capacitance, capacitance))
return PartAnalysis(part, rs)