From 87e226804e7e65d88226410c2ee569c31a80aebc Mon Sep 17 00:00:00 2001 From: appel_c Date: Tue, 5 Aug 2025 12:38:28 +0200 Subject: [PATCH] fix(undulator): remove raise for operator controlled pvs, log instead and return None --- ophyd_devices/devices/undulator.py | 3 ++- tests/test_undulator.py | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ophyd_devices/devices/undulator.py b/ophyd_devices/devices/undulator.py index 1df9a5f..78a612d 100644 --- a/ophyd_devices/devices/undulator.py +++ b/ophyd_devices/devices/undulator.py @@ -45,9 +45,10 @@ class UndulatorEpicsSignal(EpicsSignal): If the undulator is operator controlled, it will not move. """ if self.parent.select_control.get() == UNDULATORCONTROL.OPERATOR.value: - raise PermissionError( + logger.error( f"Cannot use put for signal {self.name}; Undulator is operator controlled!" ) + return # Do not raise an error, just log it and return None. return super().put( value, force=force, diff --git a/tests/test_undulator.py b/tests/test_undulator.py index 967ae19..7b779c1 100644 --- a/tests/test_undulator.py +++ b/tests/test_undulator.py @@ -56,7 +56,11 @@ def test_undulator_raises_when_disabled(mock_undulator): def test_undulator_stop_call(mock_undulator): mock_undulator.select_control._read_pv.mock_data = 1 + mock_undulator.stop_signal.put(0) mock_undulator.stop() + assert mock_undulator.stop_signal.get() == 1 + mock_undulator.stop_signal.put(0) mock_undulator.select_control._read_pv.mock_data = 0 - with pytest.raises(PermissionError) as e: - mock_undulator.stop() + # Error should just be logged, not raised. + mock_undulator.stop() + assert mock_undulator.stop_signal.get() == 0