diff --git a/mira/metamodel/utils.py b/mira/metamodel/utils.py index e77732fb3..86489f44e 100644 --- a/mira/metamodel/utils.py +++ b/mira/metamodel/utils.py @@ -43,6 +43,10 @@ def __get_validators__(cls): def validate(cls, v): if isinstance(v, cls): return v + elif isinstance(v, float): + return cls(sympy.Float(v)) + elif isinstance(v, int): + return cls(sympy.Integer(v)) return cls(v) @classmethod diff --git a/tests/test_metamodel.py b/tests/test_metamodel.py index 6fd3f46f4..5b86d996a 100644 --- a/tests/test_metamodel.py +++ b/tests/test_metamodel.py @@ -249,4 +249,13 @@ def test_safe_parse_nfkc(): def test_safe_parse_curly_braces(): var = 'x_{a}' var_sym = sympy.Symbol('x_{a}') - assert safe_parse_expr(var, local_dict={var: var_sym}) == var_sym \ No newline at end of file + assert safe_parse_expr(var, local_dict={var: var_sym}) == var_sym + + +def test_initial_expression_float(): + init = Initial(concept=Concept(name='x'), expression=1.0) + assert isinstance(init.expression, SympyExprStr) + assert isinstance(init.expression.args[0], sympy.Expr) + init = Initial(concept=Concept(name='x'), expression=1) + assert isinstance(init.expression, SympyExprStr) + assert isinstance(init.expression.args[0], sympy.Expr)