Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/easyscience/Objects/new_variable/descriptor_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def full_value(self) -> Variable:

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

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

@property
def unit(self) -> str:
Expand Down
20 changes: 2 additions & 18 deletions src/easyscience/Objects/new_variable/parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,24 +147,8 @@ def full_value(self) -> Variable:
return self._scalar

@full_value.setter
@property_stack_deco
def full_value(self, scalar: Variable) -> None:
"""
Set the value of self. This creates a scipp scalar with a unit.

:param full_value: New value of self
"""
if not self.enabled:
if global_object.debug:
raise CoreSetException(f'{str(self)} is not enabled.')
return
if not isinstance(scalar, Variable) and len(scalar.dims) == 0:
raise TypeError(f'{scalar=} must be a Scipp scalar')
if not isinstance(scalar.value, numbers.Number) or isinstance(scalar.value, bool):
raise TypeError('value of Scipp scalar must be a number')
self._scalar = scalar
if self._callback.fset is not None:
self._callback.fset(scalar)
raise AttributeError(f'Full_value is read-only. Change the value and variance seperately. Or create a new {self.__class__.__name__}.') # noqa: E501

@property
def value(self) -> numbers.Number:
Expand Down Expand Up @@ -215,7 +199,7 @@ def value(self, value: numbers.Number) -> None:

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

self._scalar.value = value
self._scalar.value = float(value)
if self._callback.fset is not None:
self._callback.fset(self._scalar.value)

Expand Down
12 changes: 3 additions & 9 deletions tests/unit_tests/Objects/new_variable/test_parameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,15 +292,9 @@ def test_full_value_no_match_callback(self, parameter: Parameter):
assert parameter._callback.fget.call_count == 1

def test_set_full_value(self, parameter: Parameter):
# When
self.mock_callback.fget.return_value = sc.scalar(1, unit='m')

# Then
parameter.full_value = sc.scalar(2, unit='m')

# Expect
parameter._callback.fset.assert_called_once_with(sc.scalar(2, unit='m'))
assert parameter._scalar == sc.scalar(2, unit='m')
# When Then Expect
with pytest.raises(AttributeError):
parameter.full_value = sc.scalar(2, unit='s')

def test_copy(self, parameter: Parameter):
# When Then
Expand Down