def __init__(self, expressions, element): self.expressions = [] self._is_constant = True for e in expressions: expr = UnitExpression(e, element) self.expressions.append(expr) self._is_constant = self._is_constant and expr.is_constant() if self._is_constant: self.value = self._evaluate()
def __init__(self, expressions, element): self.expressions = [] self._is_constant = True for e in expressions: if _LIST_COMPONENTS_ARE_CONSTANT: expr = constant_expression(e) else: expr = UnitExpression(e, element) self.expressions.append(expr) self._is_constant = self._is_constant and expr.is_constant() if self._is_constant: self.value = self._evaluate()
def variable(description, element): if not isinstance(description, dict): return UnitExpression(description, element) description = copy.copy(description) vtype = description.pop('type', None) if not vtype: raise Exception('No type in variable, description="%s".' % description) return REGISTRY.function(vtype)(description, element)
def expression(expr, element): try: if isinstance(expr, dict): return Envelope(expr, element) if isinstance(expr, (list, tuple)): return ListExpression(expr, element) if isinstance(expr, six.string_types) and ',' in expr: return ListExpression(expr.split(','), element) return UnitExpression(expr, element) except Exception as e: e.message = "Couldn't evaluate expression %s because %s" % ( expr, e.message) raise
def convert(number, element=None, assume_minutes=True): if number is None: return number return UnitExpression(number, element, assume_minutes).evaluate()
def constant_expression(expr): ue = UnitExpression(None) ue.value = expr return ue