From 70a32dee4fca6fd22b320761964ce1a67e6207d6 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Fri, 3 Jul 2026 19:40:08 +0200 Subject: [PATCH] refactor: replace deprecated bec_lib connector internals --- bec_widgets/utils/bec_dispatcher.py | 7 +++++-- bec_widgets/utils/redis_message_waiter.py | 4 +++- tests/unit_tests/test_bec_dispatcher.py | 22 +++++++++++----------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/bec_widgets/utils/bec_dispatcher.py b/bec_widgets/utils/bec_dispatcher.py index cca3ecb5..34441a86 100644 --- a/bec_widgets/utils/bec_dispatcher.py +++ b/bec_widgets/utils/bec_dispatcher.py @@ -308,8 +308,11 @@ class BECDispatcher: *args: Arbitrary positional arguments **kwargs: Arbitrary keyword arguments """ - # pylint: disable=protected-access - self.disconnect_topics(self.client.connector._topics_cb) + topics = set() + for connected_slot in self._registered_slots.values(): + topics.update(connected_slot.topics) + if topics: + self.disconnect_topics(list(topics)) def disconnect_owner(self, owner: BECWidget) -> int: """ diff --git a/bec_widgets/utils/redis_message_waiter.py b/bec_widgets/utils/redis_message_waiter.py index 4df9dfbc..3ca7801b 100644 --- a/bec_widgets/utils/redis_message_waiter.py +++ b/bec_widgets/utils/redis_message_waiter.py @@ -11,7 +11,9 @@ class QtRedisMessageWaiter: self.response = None self.connector = redis_connector self.message_to_wait = message_to_wait - self.pubsub = redis_connector._redis_conn.pubsub() + # Access the managed (buffered) connection directly; the connector-level + # _redis_conn accessor is deprecated in bec_lib. + self.pubsub = redis_connector._managed_connection._redis_conn.pubsub() self.pubsub.subscribe(self.message_to_wait.endpoint) fd = self.pubsub.connection._sock.fileno() self.notifier = QSocketNotifier(fd, QSocketNotifier.Read) diff --git a/tests/unit_tests/test_bec_dispatcher.py b/tests/unit_tests/test_bec_dispatcher.py index 85acda48..c0ec3071 100644 --- a/tests/unit_tests/test_bec_dispatcher.py +++ b/tests/unit_tests/test_bec_dispatcher.py @@ -85,7 +85,7 @@ def test_dispatcher_disconnect_all(bec_dispatcher_w_connector, qtbot, send_msg_e bec_dispatcher.connect_slot(cb1, "topic2") bec_dispatcher.connect_slot(cb2, "topic2") bec_dispatcher.connect_slot(cb2, "topic3") - assert len(bec_dispatcher.client.connector._topics_cb) == 3 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 3 send_msg_event.set() qtbot.wait(10) assert cb1.call_count == 2 @@ -93,7 +93,7 @@ def test_dispatcher_disconnect_all(bec_dispatcher_w_connector, qtbot, send_msg_e bec_dispatcher.disconnect_all() - assert len(bec_dispatcher.client.connector._topics_cb) == 0 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 0 @pytest.mark.parametrize("topics_msg_list", [(("topic1", dummy_msg), ("topic2", dummy_msg))]) @@ -104,9 +104,9 @@ def test_dispatcher_disconnect_one(bec_dispatcher_w_connector, qtbot, send_msg_e bec_dispatcher.connect_slot(cb1, "topic1") bec_dispatcher.connect_slot(cb2, "topic2") - assert len(bec_dispatcher.client.connector._topics_cb) == 2 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 2 bec_dispatcher.disconnect_slot(cb1, "topic1") - assert len(bec_dispatcher.client.connector._topics_cb) == 1 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 1 send_msg_event.set() qtbot.wait(10) @@ -127,10 +127,10 @@ def test_dispatcher_2_cb_same_topic(bec_dispatcher_w_connector, qtbot, send_msg_ bec_dispatcher.connect_slot(cb2, "topic1") # The redis connector should only subscribe once to the topic - assert len(bec_dispatcher.client.connector._topics_cb) == 1 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 1 # The the given topic, two callbacks should be registered - assert len(bec_dispatcher.client.connector._topics_cb["topic1"]) == 2 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb["topic1"]) == 2 # The dispatcher should have two slots assert len(bec_dispatcher._registered_slots) == num_slots + 2 @@ -150,7 +150,7 @@ def test_dispatcher_2_cb_same_topic_same_slot(bec_dispatcher_w_connector, qtbot, bec_dispatcher.connect_slot(cb1, "topic1") bec_dispatcher.connect_slot(cb1, "topic1") - assert len(bec_dispatcher.client.connector._topics_cb) == 1 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 1 assert ( len(list(filter(lambda slot: slot.cb == cb1, bec_dispatcher._registered_slots.values()))) == 1 @@ -173,9 +173,9 @@ def test_dispatcher_2_topic_same_cb(bec_dispatcher_w_connector, qtbot, send_msg_ bec_dispatcher.connect_slot(cb1, "topic1") bec_dispatcher.connect_slot(cb1, "topic2") - assert len(bec_dispatcher.client.connector._topics_cb) == 2 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 2 bec_dispatcher.disconnect_slot(cb1, "topic1") - assert len(bec_dispatcher.client.connector._topics_cb) == 1 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 1 send_msg_event.set() qtbot.wait(10) @@ -205,10 +205,10 @@ def test_dispatcher_2_topic_same_cb_with_boundmethod( ) ) - assert len(bec_dispatcher.client.connector._topics_cb) == 1 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 1 assert len(_get_slots()) == 1 bec_dispatcher.disconnect_slot(cb1.mock_slot, "topic1") - assert len(bec_dispatcher.client.connector._topics_cb) == 0 + assert len(bec_dispatcher.client.connector._managed_connection._topics_cb) == 0 assert len(_get_slots()) == 0 send_msg_event.set()