From 7de228a412e9ea3513a52cc7d7f8c70faeb4a661 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Fri, 20 Feb 2026 14:11:32 +0100 Subject: [PATCH] fix(becconnector): sanitize the setObjectName from qobject inheritance --- bec_widgets/utils/bec_connector.py | 2 ++ tests/unit_tests/test_bec_connector.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/bec_widgets/utils/bec_connector.py b/bec_widgets/utils/bec_connector.py index 0551aa6f..4b45662c 100644 --- a/bec_widgets/utils/bec_connector.py +++ b/bec_widgets/utils/bec_connector.py @@ -272,6 +272,8 @@ class BECConnector: Args: name (str): The new object name. """ + # sanitize before setting to avoid issues with Qt object names and RPC namespaces + name = sanitize_namespace(name) super().setObjectName(name) self.object_name = name if self.rpc_register.object_is_registered(self): diff --git a/tests/unit_tests/test_bec_connector.py b/tests/unit_tests/test_bec_connector.py index 4610fbc3..55773232 100644 --- a/tests/unit_tests/test_bec_connector.py +++ b/tests/unit_tests/test_bec_connector.py @@ -39,6 +39,18 @@ def test_bec_connector_set_gui_id(bec_connector): assert bec_connector.config.gui_id == "test_gui_id" +def test_bec_connector_sanitize_names(mocked_client): + class MyWidget(BECConnector, QWidget): + def __init__(self, parent=None, client=None, **kwargs): + super().__init__(parent=parent, client=client, **kwargs) + + widget = MyWidget(client=mocked_client) + widget.setObjectName("Test Name With Spaces") + assert widget.objectName() == "Test_Name_With_Spaces" + widget.setObjectName("Test@Name#With$Special%Characters!") + assert widget.objectName() == "Test_Name_With_Special_Characters_" + + def test_bec_connector_change_config(bec_connector): bec_connector.on_config_update({"gui_id": "test_gui_id"}) assert bec_connector.config.gui_id == "test_gui_id"