Skip to content

Commit b177361

Browse files
authored
58 ensure values are always floats (#62)
1 parent 2c80044 commit b177361

File tree

3 files changed

+7
-29
lines changed

3 files changed

+7
-29
lines changed

src/easyscience/Objects/new_variable/descriptor_number.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def full_value(self) -> Variable:
101101

102102
@full_value.setter
103103
def full_value(self, full_value: Variable) -> None:
104-
raise AttributeError(f'Full_value is read-only. Change the value and variance seperately. or create a new {self.__class__.__name__}.') # noqa: E501
104+
raise AttributeError(f'Full_value is read-only. Change the value and variance seperately. Or create a new {self.__class__.__name__}.') # noqa: E501
105105

106106
@property
107107
def value(self) -> numbers.Number:
@@ -122,7 +122,7 @@ def value(self, value: numbers.Number) -> None:
122122
"""
123123
if not isinstance(value, numbers.Number) or isinstance(value, bool):
124124
raise TypeError(f'{value=} must be a number')
125-
self._scalar.value = value
125+
self._scalar.value = float(value)
126126

127127
@property
128128
def unit(self) -> str:

src/easyscience/Objects/new_variable/parameter.py

+2-18
Original file line numberDiff line numberDiff line change
@@ -147,24 +147,8 @@ def full_value(self) -> Variable:
147147
return self._scalar
148148

149149
@full_value.setter
150-
@property_stack_deco
151150
def full_value(self, scalar: Variable) -> None:
152-
"""
153-
Set the value of self. This creates a scipp scalar with a unit.
154-
155-
:param full_value: New value of self
156-
"""
157-
if not self.enabled:
158-
if global_object.debug:
159-
raise CoreSetException(f'{str(self)} is not enabled.')
160-
return
161-
if not isinstance(scalar, Variable) and len(scalar.dims) == 0:
162-
raise TypeError(f'{scalar=} must be a Scipp scalar')
163-
if not isinstance(scalar.value, numbers.Number) or isinstance(scalar.value, bool):
164-
raise TypeError('value of Scipp scalar must be a number')
165-
self._scalar = scalar
166-
if self._callback.fset is not None:
167-
self._callback.fset(scalar)
151+
raise AttributeError(f'Full_value is read-only. Change the value and variance seperately. Or create a new {self.__class__.__name__}.') # noqa: E501
168152

169153
@property
170154
def value(self) -> numbers.Number:
@@ -215,7 +199,7 @@ def value(self, value: numbers.Number) -> None:
215199

216200
value = self._constraint_runner(self._constraints.virtual, value)
217201

218-
self._scalar.value = value
202+
self._scalar.value = float(value)
219203
if self._callback.fset is not None:
220204
self._callback.fset(self._scalar.value)
221205

tests/unit_tests/Objects/new_variable/test_parameter.py

+3-9
Original file line numberDiff line numberDiff line change
@@ -292,15 +292,9 @@ def test_full_value_no_match_callback(self, parameter: Parameter):
292292
assert parameter._callback.fget.call_count == 1
293293

294294
def test_set_full_value(self, parameter: Parameter):
295-
# When
296-
self.mock_callback.fget.return_value = sc.scalar(1, unit='m')
297-
298-
# Then
299-
parameter.full_value = sc.scalar(2, unit='m')
300-
301-
# Expect
302-
parameter._callback.fset.assert_called_once_with(sc.scalar(2, unit='m'))
303-
assert parameter._scalar == sc.scalar(2, unit='m')
295+
# When Then Expect
296+
with pytest.raises(AttributeError):
297+
parameter.full_value = sc.scalar(2, unit='s')
304298

305299
def test_copy(self, parameter: Parameter):
306300
# When Then

0 commit comments

Comments
 (0)