diff --git a/src/ophyd_async/core/soft_signal_backend.py b/src/ophyd_async/core/soft_signal_backend.py index 415c167089..c7c7c6043a 100644 --- a/src/ophyd_async/core/soft_signal_backend.py +++ b/src/ophyd_async/core/soft_signal_backend.py @@ -93,10 +93,7 @@ def __init__(self, datatype: Union[RuntimeSubsetEnum, Enum]): self.choices = datatype.choices def write_value(self, value: Union[Enum, str]) -> str: - if isinstance(value, Enum): - return value.value - else: # Runtime enum - return value + return value def get_datakey(self, source: str, value, **metadata) -> DataKey: return { diff --git a/tests/core/test_soft_signal_backend.py b/tests/core/test_soft_signal_backend.py index 66d0bb07dd..109f22c97d 100644 --- a/tests/core/test_soft_signal_backend.py +++ b/tests/core/test_soft_signal_backend.py @@ -115,6 +115,14 @@ async def test_soft_signal_backend_get_put_monitor( q.close() +async def test_soft_signal_backend_enum_value_equivalence(): + soft_signal = SoftSignalBackend(MyEnum) + await soft_signal.connect() + assert (await soft_signal.get_value()) is MyEnum.a + await soft_signal.put(MyEnum.b) + assert (await soft_signal.get_value()) is MyEnum.b + + async def test_soft_signal_backend_with_numpy_typing(): soft_backend = SoftSignalBackend(npt.NDArray[np.float64]) await soft_backend.connect()