def __init__(self, measureNode): self.propSpec = measureNode.get("property") self.property = Property(self.propSpec) self.key = Property( measureNode.get("key")) if "key" in measureNode.attrib else None self.category = measureNode.get("category", self.propSpec) self.kind = Collector.types.index(measureNode.get("type"))
def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.epoch = Property(xmlSource.get("epoch", "s.t")) self.period = xmlSource.get("period", None) if self.period is not None: self.period = number(self.period) self.time = getXValue(xmlSource, "time", XValueHelper(self))
class SetEntity(SimpleEntity): def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.value = getXValue(xmlSource, "value", self.xcontext) self.property = Property(xmlSource.get("property")) def action(self): yield self.hold(0) self.property.set(self.transaction, self, float(self.value))
class While(Loop): def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.property = Property(xmlSource.get("property")) def test(self): return bool(self.property.get(self.transaction, self))
class PauseTo(SimpleEntity): tag = "pause_to" def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.epoch = Property(xmlSource.get("epoch", "s.t")) self.period = xmlSource.get("period", None) if self.period is not None: self.period = number(self.period) self.time = getXValue(xmlSource, "time", XValueHelper(self)) def duration(self): ptime = float(self.time) atime = float(self.epoch.get(self.transaction, self)) if self.period is not None: comper = math.floor(atime / self.period) start = comper * self.period rem = atime - start if ptime < rem: start += self.period ptime = start + ptime return ptime - atime def action(self): yield self.hold(self.duration())
class IfInRange(Branching): def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.property = Property(xmlSource.get("property")) self.attributeSetter(("minimum", float), ("maximum", float)) def test(self): value = float(self.property.get(self.transaction, self)) return self.minimum <= value <= self.maximum
class If(Branching): """ If-section (= first subentity) is executed if property is interpreted as true (normal Python boolean semantics), otherwise else-section is only executed. Declarative element: if """ def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.property = Property(xmlSource.get("property")) def test(self): return bool(self.property.get(self.transaction, self))
def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.property = Property(xmlSource.get("property")) self.attributeSetter(("minimum", float), ("maximum", float))
def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.property = Property(xmlSource.get("property"))
def __init__(self, transaction, xmlSource): super().__init__(transaction, xmlSource) self.value = getXValue(xmlSource, "value", self.xcontext) self.property = Property(xmlSource.get("property"))