From ca852af91d24663f0b97c5dd61304b37b9f58cd8 Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Mon, 14 Oct 2024 11:40:17 +0200 Subject: [PATCH 1/2] Add a `free` alias for parameters that are not `fixed` --- src/easyscience/Objects/Variable.py | 9 +++++++++ src/easyscience/Objects/new_variable/parameter.py | 9 +++++++++ tests/unit_tests/Objects/new_variable/test_parameter.py | 1 + 3 files changed, 19 insertions(+) diff --git a/src/easyscience/Objects/Variable.py b/src/easyscience/Objects/Variable.py index 10362ba9..f5e6480c 100644 --- a/src/easyscience/Objects/Variable.py +++ b/src/easyscience/Objects/Variable.py @@ -503,6 +503,7 @@ def __init__( min: Optional[numbers.Number] = -np.inf, max: Optional[numbers.Number] = np.inf, fixed: Optional[bool] = False, + free: Optional[bool] = True, **kwargs, ): """ @@ -721,6 +722,14 @@ def fixed(self, value: bool): raise ValueError self._fixed = value + @property + def free(self) -> bool: + return not self.fixed + + @free.setter + def free(self, value: bool) -> None: + self.fixed = not value + @property def error(self) -> float: """ diff --git a/src/easyscience/Objects/new_variable/parameter.py b/src/easyscience/Objects/new_variable/parameter.py index 26992c04..711b65d6 100644 --- a/src/easyscience/Objects/new_variable/parameter.py +++ b/src/easyscience/Objects/new_variable/parameter.py @@ -49,6 +49,7 @@ def __init__( min: Optional[numbers.Number] = -np.inf, max: Optional[numbers.Number] = np.inf, fixed: Optional[bool] = False, + free: Optional[bool] = True, unique_name: Optional[str] = None, description: Optional[str] = None, url: Optional[str] = None, @@ -301,6 +302,14 @@ def fixed(self, fixed: bool) -> None: raise ValueError(f'{fixed=} must be a boolean. Got {type(fixed)}') self._fixed = fixed + @property + def free(self) -> bool: + return not self.fixed + + @free.setter + def free(self, value: bool) -> None: + self.fixed = not value + @property def bounds(self) -> Tuple[numbers.Number, numbers.Number]: """ diff --git a/tests/unit_tests/Objects/new_variable/test_parameter.py b/tests/unit_tests/Objects/new_variable/test_parameter.py index 5269d81b..bfe92081 100644 --- a/tests/unit_tests/Objects/new_variable/test_parameter.py +++ b/tests/unit_tests/Objects/new_variable/test_parameter.py @@ -328,6 +328,7 @@ def test_as_data_dict(self, clear, parameter: Parameter): "min": 0, "max": 10, "fixed": False, + "free": True, "description": "description", "url": "url", "display_name": "display_name", From e2c3c4b686ea0038ba589e0615a506d6ec3c8aee Mon Sep 17 00:00:00 2001 From: Andrew Sazonov Date: Tue, 29 Oct 2024 12:53:00 +0100 Subject: [PATCH 2/2] Changes following the PR review --- src/easyscience/Objects/Variable.py | 1 - src/easyscience/Objects/new_variable/parameter.py | 1 - tests/unit_tests/Objects/new_variable/test_parameter.py | 1 - 3 files changed, 3 deletions(-) diff --git a/src/easyscience/Objects/Variable.py b/src/easyscience/Objects/Variable.py index f5e6480c..3de9bef0 100644 --- a/src/easyscience/Objects/Variable.py +++ b/src/easyscience/Objects/Variable.py @@ -503,7 +503,6 @@ def __init__( min: Optional[numbers.Number] = -np.inf, max: Optional[numbers.Number] = np.inf, fixed: Optional[bool] = False, - free: Optional[bool] = True, **kwargs, ): """ diff --git a/src/easyscience/Objects/new_variable/parameter.py b/src/easyscience/Objects/new_variable/parameter.py index 711b65d6..ebad24b4 100644 --- a/src/easyscience/Objects/new_variable/parameter.py +++ b/src/easyscience/Objects/new_variable/parameter.py @@ -49,7 +49,6 @@ def __init__( min: Optional[numbers.Number] = -np.inf, max: Optional[numbers.Number] = np.inf, fixed: Optional[bool] = False, - free: Optional[bool] = True, unique_name: Optional[str] = None, description: Optional[str] = None, url: Optional[str] = None, diff --git a/tests/unit_tests/Objects/new_variable/test_parameter.py b/tests/unit_tests/Objects/new_variable/test_parameter.py index bfe92081..5269d81b 100644 --- a/tests/unit_tests/Objects/new_variable/test_parameter.py +++ b/tests/unit_tests/Objects/new_variable/test_parameter.py @@ -328,7 +328,6 @@ def test_as_data_dict(self, clear, parameter: Parameter): "min": 0, "max": 10, "fixed": False, - "free": True, "description": "description", "url": "url", "display_name": "display_name",