import ModelAPI
+from model import tools
class Feature(ModelAPI.ModelAPI_Feature):
class Interface():
- """Base class of hight level Python interfaces to features."""
+ """Base class of high level Python interfaces to features."""
def __init__(self, feature):
self._feature = feature
-
-
-
- def setRealInput (self, inputid, value):
+ self._attribute_white_list = [
+ "getKind", "results", "firstResult", "lastResult",
+ ]
+
+ def __getattr__(self, name):
+ """Process missing attributes.
+
+ Add get*() methods for access feature attributes.
+ Redirect some missing attributes to the feature.
+ """
+ if name.startswith("get"):
+ possible_names = [
+ "_" + name[3:],
+ "_" + tools.convert_to_underscore(name[3:]),
+ ]
+ for possible_name in possible_names:
+ if hasattr(self, possible_name):
+ def getter():
+ return getattr(self, possible_name)
+ return getter
+
+ if name in self._attribute_white_list:
+ return getattr(self._feature, name)
+
+ raise AttributeError()
+
+ def feature(self):
+ """Return ModelAPI_Feature."""
+ return self._feature
+
+ def _fill_attribute(self, attribute, value):
+ """Fill ModelAPI_Attribute* with value."""
+ tools.fill_attribute(attribute, value)
+
+ def setRealInput(self, inputid, value):
self._feature.data().real(inputid).setValue(value)
- def areInputValid (self):
+ def areInputValid(self):
validators = ModelAPI.ModelAPI_Session.get().validators()
return validators.validate(self._feature)
- def execute (self):
+ def execute(self):
self._feature.execute()