From 54b7b2d3a521dd6739acc0e8b4db0e959ba9b26d Mon Sep 17 00:00:00 2001 From: Ben Gyori Date: Wed, 20 Mar 2024 22:45:40 -0400 Subject: [PATCH 1/2] Handle float and int in expression constructor --- mira/metamodel/utils.py | 4 ++++ 1 file changed, 4 insertions(+) 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 From ed46f804fec8d88202921c4320f5f77876150f92 Mon Sep 17 00:00:00 2001 From: Ben Gyori Date: Wed, 20 Mar 2024 22:53:56 -0400 Subject: [PATCH 2/2] Add test for new feature --- tests/test_metamodel.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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)