From 91195ae0fdf024daf2daaa4ea2963992b4e40e04 Mon Sep 17 00:00:00 2001 From: David Perl Date: Fri, 16 May 2025 10:52:18 +0200 Subject: [PATCH] fix(DeviceSignalInput): improve robustness use set for storing filter properties to allow multiple set to true or false --- .../base_classes/device_signal_input_base.py | 14 +++++++------- tests/unit_tests/test_device_signal_input.py | 14 ++++++++++---- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py b/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py index 66c26029..352fac15 100644 --- a/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +++ b/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py @@ -49,7 +49,7 @@ class DeviceSignalInputBase(BECWidget): self._device = None self.get_bec_shortcuts() - self._signal_filter = [] + self._signal_filter = set() self._signals = [] self._hinted_signals = [] self._normal_signals = [] @@ -158,9 +158,9 @@ class DeviceSignalInputBase(BECWidget): @include_hinted_signals.setter def include_hinted_signals(self, value: bool): if value: - self._signal_filter.append(Kind.hinted) + self._signal_filter.add(Kind.hinted) else: - self._signal_filter.remove(Kind.hinted) + self._signal_filter.discard(Kind.hinted) self.update_signals_from_filters() @Property(bool) @@ -171,9 +171,9 @@ class DeviceSignalInputBase(BECWidget): @include_normal_signals.setter def include_normal_signals(self, value: bool): if value: - self._signal_filter.append(Kind.normal) + self._signal_filter.add(Kind.normal) else: - self._signal_filter.remove(Kind.normal) + self._signal_filter.discard(Kind.normal) self.update_signals_from_filters() @Property(bool) @@ -184,9 +184,9 @@ class DeviceSignalInputBase(BECWidget): @include_config_signals.setter def include_config_signals(self, value: bool): if value: - self._signal_filter.append(Kind.config) + self._signal_filter.add(Kind.config) else: - self._signal_filter.remove(Kind.config) + self._signal_filter.discard(Kind.config) self.update_signals_from_filters() ### Properties and Methods ### diff --git a/tests/unit_tests/test_device_signal_input.py b/tests/unit_tests/test_device_signal_input.py index c4ac76d7..324ea481 100644 --- a/tests/unit_tests/test_device_signal_input.py +++ b/tests/unit_tests/test_device_signal_input.py @@ -67,7 +67,7 @@ def test_device_signal_combo(qtbot, mocked_client): def test_device_signal_base_init(device_signal_base): """Test if the DeviceSignalInputBase is initialized correctly""" assert device_signal_base._device is None - assert device_signal_base._signal_filter == [] + assert device_signal_base._signal_filter == set() assert device_signal_base._signals == [] assert device_signal_base._hinted_signals == [] assert device_signal_base._normal_signals == [] @@ -77,11 +77,17 @@ def test_device_signal_base_init(device_signal_base): def test_device_signal_qproperties(device_signal_base): """Test if the DeviceSignalInputBase has the correct QProperties""" device_signal_base.include_config_signals = True - assert device_signal_base._signal_filter == [Kind.config] + assert device_signal_base._signal_filter == {Kind.config} device_signal_base.include_normal_signals = True - assert device_signal_base._signal_filter == [Kind.config, Kind.normal] + assert device_signal_base._signal_filter == {Kind.config, Kind.normal} device_signal_base.include_hinted_signals = True - assert device_signal_base._signal_filter == [Kind.config, Kind.normal, Kind.hinted] + assert device_signal_base._signal_filter == {Kind.config, Kind.normal, Kind.hinted} + device_signal_base.include_hinted_signals = True + assert device_signal_base._signal_filter == {Kind.config, Kind.normal, Kind.hinted} + device_signal_base.include_hinted_signals = True + assert device_signal_base._signal_filter == {Kind.config, Kind.normal, Kind.hinted} + device_signal_base.include_hinted_signals = False + assert device_signal_base._signal_filter == {Kind.config, Kind.normal} def test_device_signal_set_device(device_signal_base):