diff --git a/src/easyscience/Objects/new_variable/parameter.py b/src/easyscience/Objects/new_variable/parameter.py index 56dad214..66626cdc 100644 --- a/src/easyscience/Objects/new_variable/parameter.py +++ b/src/easyscience/Objects/new_variable/parameter.py @@ -126,7 +126,7 @@ def __init__( @property def value_no_call_back(self) -> numbers.Number: """ - Get the currently hold value of self surpassing call back. + Get the currently hold value of self suppressing call back. :return: Value of self without unit. """ diff --git a/src/easyscience/fitting/Constraints.py b/src/easyscience/fitting/Constraints.py index 7f6de1e8..b123d124 100644 --- a/src/easyscience/fitting/Constraints.py +++ b/src/easyscience/fitting/Constraints.py @@ -197,7 +197,7 @@ def _parse_operator(self, obj: V, *args, **kwargs) -> Number: import easyscience.Objects.new_variable.parameter if isinstance(obj, easyscience.Objects.new_variable.parameter.Parameter): - value = obj.value + value = obj.value_no_call_back else: value = obj.raw_value @@ -260,7 +260,7 @@ def _parse_operator(self, obj: V, *args, **kwargs) -> Number: import easyscience.Objects.new_variable.parameter if isinstance(obj, easyscience.Objects.new_variable.parameter.Parameter): - value = obj.value + value = obj.value_no_call_back else: value = obj.raw_value @@ -323,7 +323,7 @@ def _parse_operator(self, obj: V, *args, **kwargs) -> Number: import easyscience.Objects.new_variable.parameter if isinstance(obj, easyscience.Objects.new_variable.parameter.Parameter): - value = obj.value + value = obj.value_no_call_back else: value = obj.raw_value @@ -420,7 +420,7 @@ def _parse_operator(self, independent_objs: List[V], *args, **kwargs) -> Number: for idx, obj in enumerate(independent_objs): ## TODO clean when full move to new_variable if isinstance(obj, easyscience.Objects.new_variable.parameter.Parameter): - self.aeval.symtable['p' + str(self.independent_obj_ids[idx])] = obj.value + self.aeval.symtable['p' + str(self.independent_obj_ids[idx])] = obj.value_no_call_back else: self.aeval.symtable['p' + str(self.independent_obj_ids[idx])] = obj.raw_value @@ -488,15 +488,15 @@ def _parse_operator(self, obj: V, *args, **kwargs) -> Number: for o in obj: ## TODO clean when full move to new_variable if isinstance(o, easyscience.Objects.new_variable.parameter.Parameter): - value_str += f'{o.value},' + value_str += f'{o.value_no_call_back},' else: value_str += f'{o.raw_value},' value_str = value_str[:-1] else: ## TODO clean when full move to new_variable - if isinstance(o, easyscience.Objects.new_variable.parameter.Parameter): - value_str += f'{obj.value}' + if isinstance(obj, easyscience.Objects.new_variable.parameter.Parameter): + value_str += f'{obj.value_no_call_back}' else: value_str += f'{obj.raw_value}' diff --git a/tests/unit_tests/Fitting/test_constraints.py b/tests/unit_tests/Fitting/test_constraints.py index c2237a78..b20247e5 100644 --- a/tests/unit_tests/Fitting/test_constraints.py +++ b/tests/unit_tests/Fitting/test_constraints.py @@ -9,6 +9,7 @@ from typing import Tuple import pytest +from unittest.mock import MagicMock from easyscience.fitting.Constraints import NumericConstraint from easyscience.fitting.Constraints import ObjConstraint @@ -17,7 +18,9 @@ @pytest.fixture def twoPars() -> Tuple[List[Parameter], List[int]]: - return [Parameter("a", 1), Parameter("b", 2)], [1, 2] + mock_callback = MagicMock() + mock_callback.fget = MagicMock(return_value=-10) + return [Parameter("a", 1, callback=mock_callback), Parameter("b", 2, callback=mock_callback)], [1, 2] @pytest.fixture @@ -35,12 +38,12 @@ def test_NumericConstraints_Equals(twoPars): # Should skip c = NumericConstraint(twoPars[0][0], "==", value) c() - assert twoPars[0][0].value == twoPars[1][0] + assert twoPars[0][0].value_no_call_back == twoPars[1][0] # Should update to new value c = NumericConstraint(twoPars[0][1], "==", value) c() - assert twoPars[0][1].value == value + assert twoPars[0][1].value_no_call_back == value def test_NumericConstraints_Greater(twoPars): @@ -49,12 +52,12 @@ def test_NumericConstraints_Greater(twoPars): # Should update to new value c = NumericConstraint(twoPars[0][0], ">", value) c() - assert twoPars[0][0].value == value + assert twoPars[0][0].value_no_call_back == value # Should skip c = NumericConstraint(twoPars[0][1], ">", value) c() - assert twoPars[0][1].value == twoPars[1][1] + assert twoPars[0][1].value_no_call_back == twoPars[1][1] def test_NumericConstraints_Less(twoPars): @@ -63,12 +66,12 @@ def test_NumericConstraints_Less(twoPars): # Should skip c = NumericConstraint(twoPars[0][0], "<", value) c() - assert twoPars[0][0].value == twoPars[1][0] + assert twoPars[0][0].value_no_call_back == twoPars[1][0] # Should update to new value c = NumericConstraint(twoPars[0][1], "<", value) c() - assert twoPars[0][1].value == value + assert twoPars[0][1].value_no_call_back == value @pytest.mark.parametrize("multiplication_factor", [None, 1, 2, 3, 4.5]) @@ -80,7 +83,7 @@ def test_ObjConstraintMultiply(twoPars, multiplication_factor): operator_str = f"{multiplication_factor}*" c = ObjConstraint(twoPars[0][0], operator_str, twoPars[0][1]) c() - assert twoPars[0][0].value == multiplication_factor * twoPars[1][1] + assert twoPars[0][0].value_no_call_back == multiplication_factor * twoPars[1][1] @pytest.mark.parametrize("division_factor", [1, 2, 3, 4.5]) @@ -88,7 +91,7 @@ def test_ObjConstraintDivide(twoPars, division_factor): operator_str = f"{division_factor}/" c = ObjConstraint(twoPars[0][0], operator_str, twoPars[0][1]) c() - assert twoPars[0][0].value == division_factor / twoPars[1][1] + assert twoPars[0][0].value_no_call_back == division_factor / twoPars[1][1] def test_ObjConstraint_Multiple(threePars): @@ -103,9 +106,9 @@ def test_ObjConstraint_Multiple(threePars): p0.user_constraints["num_2"] = ObjConstraint(p2, "", p0) p0.value = value - assert p0.value == value - assert p1.value == value - assert p2.value == value + assert p0.value_no_call_back == value + assert p1.value_no_call_back == value + assert p2.value_no_call_back == value def test_ConstraintEnable_Disable(twoPars):