feat: move to lazy widget import

This commit is contained in:
2026-04-20 16:18:48 +02:00
committed by Jan Wyzula
parent bb1544ecb7
commit 5cc82425f0
12 changed files with 451 additions and 217 deletions
+15 -15
View File
@@ -1,7 +1,6 @@
from unittest.mock import patch
from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.plugin_utils import BECClassContainer, BECClassInfo
from bec_widgets.utils import plugin_utils
from bec_widgets.utils.rpc_widget_handler import RPCWidgetHandler
@@ -10,21 +9,22 @@ def test_rpc_widget_handler():
assert "Image" in handler.widget_classes
assert "RingProgressBar" in handler.widget_classes
assert "BECDockArea" in handler.widget_classes
class _TestPluginWidget(BECWidget): ...
assert isinstance(handler.widget_classes["Image"], tuple)
@patch(
"bec_widgets.utils.rpc_widget_handler.get_all_plugin_widgets",
return_value=BECClassContainer(
[
BECClassInfo(name="DeviceComboBox", obj=_TestPluginWidget, module="", file=""),
BECClassInfo(name="NewPluginWidget", obj=_TestPluginWidget, module="", file=""),
]
),
"bec_widgets.utils.bec_plugin_helper.get_plugin_rpc_widget_registry",
return_value={
"Image": ("plugin.module", "PluginImage"),
"NewPluginWidget": ("plugin.module", "NewPluginWidget"),
},
)
def test_duplicate_plugins_not_allowed(_):
handler = RPCWidgetHandler()
assert handler.widget_classes["DeviceComboBox"] is not _TestPluginWidget
assert handler.widget_classes["NewPluginWidget"] is _TestPluginWidget
plugin_utils.rpc_widget_registry.cache_clear()
try:
handler = RPCWidgetHandler()
assert handler.widget_classes["Image"] != ("plugin.module", "PluginImage")
assert handler.widget_classes["NewPluginWidget"] == ("plugin.module", "NewPluginWidget")
finally:
plugin_utils.rpc_widget_registry.cache_clear()