From 38eb2441cdf677939354c7066f854c22cf261932 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Tue, 27 Jan 2026 18:45:45 +0100 Subject: [PATCH] fix(rpc_register): listing only valid connections --- bec_widgets/cli/rpc/rpc_register.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/bec_widgets/cli/rpc/rpc_register.py b/bec_widgets/cli/rpc/rpc_register.py index b984e333..0b007774 100644 --- a/bec_widgets/cli/rpc/rpc_register.py +++ b/bec_widgets/cli/rpc/rpc_register.py @@ -5,14 +5,13 @@ from threading import RLock from typing import TYPE_CHECKING, Callable from weakref import WeakValueDictionary +import shiboken6 as shb from bec_lib.logger import bec_logger from qtpy.QtCore import QObject if TYPE_CHECKING: # pragma: no cover from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.bec_widget import BECWidget - from bec_widgets.widgets.containers.dock.dock import BECDock - from bec_widgets.widgets.containers.dock.dock_area import BECDockArea logger = bec_logger.logger @@ -109,11 +108,19 @@ class RPCRegister: dict: A dictionary containing all the registered RPC objects. """ with self._lock: - connections = dict(self._rpc_register) + connections = {} + for gui_id, obj in self._rpc_register.items(): + try: + if not shb.isValid(obj): + continue + connections[gui_id] = obj + except Exception as e: + logger.warning(f"Error checking validity of object {gui_id}: {e}") + continue return connections def get_names_of_rpc_by_class_type( - self, cls: type[BECWidget] | type[BECConnector] | type[BECDock] | type[BECDockArea] + self, cls: type[BECWidget] | type[BECConnector] ) -> list[str]: """Get all the names of the widgets.