diff --git a/bec_widgets/__init__.py b/bec_widgets/__init__.py index f88f7db6..9593ae95 100644 --- a/bec_widgets/__init__.py +++ b/bec_widgets/__init__.py @@ -1,19 +1,13 @@ -import os -import sys - -import bec_widgets.widgets.containers.qt_ads as QtAds -from bec_widgets.utils.bec_widget import BECWidget -from bec_widgets.utils.error_popups import SafeProperty, SafeSlot - -if sys.platform.startswith("linux"): - qt_platform = os.environ.get("QT_QPA_PLATFORM", "") - if qt_platform != "offscreen": - os.environ["QT_QPA_PLATFORM"] = "xcb" - -# Default QtAds configuration -QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.eConfigFlag.FocusHighlighting, True) -QtAds.CDockManager.setConfigFlag( - QtAds.CDockManager.eConfigFlag.RetainTabSizeWhenCloseButtonHidden, True -) - __all__ = ["BECWidget", "SafeSlot", "SafeProperty"] + + +def __getattr__(name): + if name == "BECWidget": + from bec_widgets.utils.bec_widget import BECWidget + + return BECWidget + if name in {"SafeSlot", "SafeProperty"}: + from bec_widgets.utils.error_popups import SafeProperty, SafeSlot + + return {"SafeSlot": SafeSlot, "SafeProperty": SafeProperty}[name] + raise AttributeError(f"module {__name__!r} has no attribute {name!r}") diff --git a/bec_widgets/applications/__init__.py b/bec_widgets/applications/__init__.py index e69de29b..e39a9c37 100644 --- a/bec_widgets/applications/__init__.py +++ b/bec_widgets/applications/__init__.py @@ -0,0 +1,15 @@ +import os +import sys + +import bec_widgets.widgets.containers.qt_ads as QtAds + +if sys.platform.startswith("linux"): + qt_platform = os.environ.get("QT_QPA_PLATFORM", "") + if qt_platform != "offscreen": + os.environ["QT_QPA_PLATFORM"] = "xcb" + +# Default QtAds configuration +QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.eConfigFlag.FocusHighlighting, True) +QtAds.CDockManager.setConfigFlag( + QtAds.CDockManager.eConfigFlag.RetainTabSizeWhenCloseButtonHidden, True +) diff --git a/bec_widgets/applications/launch_window.py b/bec_widgets/applications/launch_window.py index 9c92673c..4eae81a4 100644 --- a/bec_widgets/applications/launch_window.py +++ b/bec_widgets/applications/launch_window.py @@ -20,13 +20,13 @@ from qtpy.QtWidgets import ( ) import bec_widgets -from bec_widgets.cli.rpc.rpc_register import RPCRegister from bec_widgets.utils.bec_plugin_helper import get_all_plugin_widgets from bec_widgets.utils.container_utils import WidgetContainerUtils from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.name_utils import pascal_to_snake from bec_widgets.utils.plugin_utils import get_plugin_auto_updates from bec_widgets.utils.round_frame import RoundedFrame +from bec_widgets.utils.rpc_register import RPCRegister from bec_widgets.utils.screen_utils import apply_window_geometry, centered_geometry_for_app from bec_widgets.utils.toolbars.toolbar import ModularToolBar from bec_widgets.utils.ui_loader import UILoader diff --git a/bec_widgets/cli/__init__.py b/bec_widgets/cli/__init__.py index e69de29b..3d30d694 100644 --- a/bec_widgets/cli/__init__.py +++ b/bec_widgets/cli/__init__.py @@ -0,0 +1 @@ +from bec_widgets.cli.rpc import rpc_base diff --git a/bec_widgets/cli/server.py b/bec_widgets/cli/server.py index d673490e..c1053ae3 100644 --- a/bec_widgets/cli/server.py +++ b/bec_widgets/cli/server.py @@ -19,7 +19,7 @@ from qtpy.QtWidgets import QApplication import bec_widgets from bec_widgets.applications.launch_window import LaunchWindow -from bec_widgets.cli.rpc.rpc_register import RPCRegister +from bec_widgets.utils.rpc_register import RPCRegister from bec_widgets.utils.bec_dispatcher import BECDispatcher logger = bec_logger.logger diff --git a/bec_widgets/examples/jupyter_console/jupyter_console_window.py b/bec_widgets/examples/jupyter_console/jupyter_console_window.py index 5cb0fefd..87cb27c0 100644 --- a/bec_widgets/examples/jupyter_console/jupyter_console_window.py +++ b/bec_widgets/examples/jupyter_console/jupyter_console_window.py @@ -25,8 +25,8 @@ from qtpy.QtWidgets import ( QWidget, ) -from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler from bec_widgets.utils.colors import apply_theme +from bec_widgets.utils.rpc_widget_handler import widget_handler from bec_widgets.utils.widget_io import WidgetHierarchy as wh from bec_widgets.widgets.editors.jupyter_console.jupyter_console import BECJupyterConsole diff --git a/bec_widgets/utils/__init__.py b/bec_widgets/utils/__init__.py index 9d584849..8b137891 100644 --- a/bec_widgets/utils/__init__.py +++ b/bec_widgets/utils/__init__.py @@ -1,13 +1 @@ -from qtpy.QtWebEngineWidgets import QWebEngineView -from .bec_connector import BECConnector, ConnectionConfig -from .bec_dispatcher import BECDispatcher -from .bec_table import BECTable -from .colors import Colors -from .container_utils import WidgetContainerUtils -from .crosshair import Crosshair -from .entry_validator import EntryValidator -from .layout_manager import GridLayoutManager -from .rpc_decorator import register_rpc_methods, rpc_public -from .ui_loader import UILoader -from .validator_delegate import DoubleValidationDelegate diff --git a/bec_widgets/utils/bec_connector.py b/bec_widgets/utils/bec_connector.py index 17ef7fad..67be8ab5 100644 --- a/bec_widgets/utils/bec_connector.py +++ b/bec_widgets/utils/bec_connector.py @@ -15,9 +15,9 @@ from pydantic import BaseModel, Field, field_validator from qtpy.QtCore import Property, QObject, QRunnable, QThreadPool, Signal from qtpy.QtWidgets import QApplication -from bec_widgets.cli.rpc.rpc_register import RPCRegister from bec_widgets.utils.error_popups import ErrorPopupUtility, SafeSlot from bec_widgets.utils.name_utils import sanitize_namespace +from bec_widgets.utils.rpc_register import RPCRegister from bec_widgets.utils.widget_io import WidgetHierarchy from bec_widgets.utils.yaml_dialog import load_yaml, load_yaml_gui, save_yaml, save_yaml_gui diff --git a/bec_widgets/utils/bec_widget.py b/bec_widgets/utils/bec_widget.py index e091e0a2..d1d99656 100644 --- a/bec_widgets/utils/bec_widget.py +++ b/bec_widgets/utils/bec_widget.py @@ -10,11 +10,11 @@ from qtpy.QtGui import QFont, QPixmap from qtpy.QtWidgets import QApplication, QFileDialog, QLabel, QVBoxLayout, QWidget import bec_widgets.widgets.containers.qt_ads as QtAds -from bec_widgets.cli.rpc.rpc_register import RPCRegister from bec_widgets.utils.bec_connector import BECConnector, ConnectionConfig from bec_widgets.utils.busy_loader import install_busy_loader from bec_widgets.utils.error_popups import SafeConnect, SafeSlot from bec_widgets.utils.rpc_decorator import rpc_timeout +from bec_widgets.utils.rpc_register import RPCRegister from bec_widgets.utils.widget_io import WidgetHierarchy from bec_widgets.widgets.utility.spinner.spinner import SpinnerWidget diff --git a/bec_widgets/cli/generate_cli.py b/bec_widgets/utils/generate_cli.py similarity index 100% rename from bec_widgets/cli/generate_cli.py rename to bec_widgets/utils/generate_cli.py diff --git a/bec_widgets/utils/plugin_utils.py b/bec_widgets/utils/plugin_utils.py index 32ac9c9d..c9c367ae 100644 --- a/bec_widgets/utils/plugin_utils.py +++ b/bec_widgets/utils/plugin_utils.py @@ -9,7 +9,7 @@ from typing import TYPE_CHECKING, Iterable from bec_lib.plugin_helper import _get_available_plugins from qtpy.QtWidgets import QWidget -from bec_widgets.utils import BECConnector +from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.bec_widget import BECWidget if TYPE_CHECKING: # pragma: no cover diff --git a/bec_widgets/cli/rpc/rpc_register.py b/bec_widgets/utils/rpc_register.py similarity index 100% rename from bec_widgets/cli/rpc/rpc_register.py rename to bec_widgets/utils/rpc_register.py diff --git a/bec_widgets/utils/rpc_server.py b/bec_widgets/utils/rpc_server.py index d94f9c51..25fd0cca 100644 --- a/bec_widgets/utils/rpc_server.py +++ b/bec_widgets/utils/rpc_server.py @@ -14,11 +14,11 @@ from qtpy.QtCore import Qt, QTimer from qtpy.QtWidgets import QWidget from redis.exceptions import RedisError -from bec_widgets.cli.rpc.rpc_register import RPCRegister -from bec_widgets.utils import BECDispatcher from bec_widgets.utils.bec_connector import BECConnector +from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.utils.container_utils import WidgetContainerUtils from bec_widgets.utils.error_popups import ErrorPopupUtility +from bec_widgets.utils.rpc_register import RPCRegister from bec_widgets.utils.screen_utils import apply_window_geometry from bec_widgets.widgets.containers.dock_area.dock_area import BECDockArea from bec_widgets.widgets.containers.main_window.main_window import BECMainWindow, BECMainWindowNoRPC diff --git a/bec_widgets/cli/rpc/rpc_widget_handler.py b/bec_widgets/utils/rpc_widget_handler.py similarity index 100% rename from bec_widgets/cli/rpc/rpc_widget_handler.py rename to bec_widgets/utils/rpc_widget_handler.py diff --git a/bec_widgets/utils/widget_io.py b/bec_widgets/utils/widget_io.py index 9a454861..aab7f29e 100644 --- a/bec_widgets/utils/widget_io.py +++ b/bec_widgets/utils/widget_io.py @@ -26,7 +26,7 @@ from qtpy.QtWidgets import ( from bec_widgets.widgets.utility.toggle.toggle import ToggleSwitch if TYPE_CHECKING: # pragma: no cover - from bec_widgets.utils import BECConnector + from bec_widgets.utils.bec_connector import BECConnector logger = bec_logger.logger @@ -418,7 +418,7 @@ class WidgetHierarchy: only_bec_widgets(bool, optional): Whether to print only widgets that are instances of BECWidget. show_parent(bool, optional): Whether to display which BECWidget is the parent of each discovered BECWidget. """ - from bec_widgets.utils import BECConnector + from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.widgets.plots.waveform.waveform import Waveform for node in WidgetHierarchy.iter_widget_tree( @@ -468,7 +468,7 @@ class WidgetHierarchy: from qtpy.QtWidgets import QApplication - from bec_widgets.utils import BECConnector + from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.widgets.plots.plot_base import PlotBase # 1) Gather ALL QWidget-based BECConnector objects @@ -534,7 +534,7 @@ class WidgetHierarchy: Returns: The nearest ancestor that is a BECConnector, or None if not found. """ - from bec_widgets.utils import BECConnector + from bec_widgets.utils.bec_connector import BECConnector # Guard against deleted/invalid Qt wrappers if not shb.isValid(widget): @@ -636,7 +636,7 @@ class WidgetHierarchy: Return all BECConnector instances whose closest BECConnector ancestor is the given widget, including the widget itself if it is a BECConnector. """ - from bec_widgets.utils import BECConnector + from bec_widgets.utils.bec_connector import BECConnector connectors: list[BECConnector] = [] if isinstance(widget, BECConnector): @@ -664,7 +664,7 @@ class WidgetHierarchy: return None try: - from bec_widgets.utils import BECConnector # local import to avoid cycles + from bec_widgets.utils.bec_connector import BECConnector # local import to avoid cycles is_bec_target = False if isinstance(ancestor_class, str): diff --git a/bec_widgets/widgets/containers/dock_area/basic_dock_area.py b/bec_widgets/widgets/containers/dock_area/basic_dock_area.py index 5491f471..088050ae 100644 --- a/bec_widgets/widgets/containers/dock_area/basic_dock_area.py +++ b/bec_widgets/widgets/containers/dock_area/basic_dock_area.py @@ -13,9 +13,9 @@ from shiboken6 import isValid import bec_widgets.widgets.containers.qt_ads as QtAds from bec_widgets import BECWidget, SafeSlot -from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.property_editor import PropertyEditor +from bec_widgets.utils.rpc_widget_handler import widget_handler from bec_widgets.utils.toolbars.actions import MaterialIconAction from bec_widgets.widgets.containers.qt_ads import ( CDockAreaWidget, diff --git a/bec_widgets/widgets/containers/dock_area/dock_area.py b/bec_widgets/widgets/containers/dock_area/dock_area.py index 11a6f332..4c8b90e2 100644 --- a/bec_widgets/widgets/containers/dock_area/dock_area.py +++ b/bec_widgets/widgets/containers/dock_area/dock_area.py @@ -20,10 +20,10 @@ from qtpy.QtWidgets import ( import bec_widgets.widgets.containers.qt_ads as QtAds from bec_widgets import BECWidget, SafeProperty, SafeSlot from bec_widgets.applications.views.view import ViewTourSteps -from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler -from bec_widgets.utils import BECDispatcher +from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.rpc_decorator import rpc_timeout +from bec_widgets.utils.rpc_widget_handler import widget_handler from bec_widgets.utils.toolbars.actions import ( ExpandableMenuAction, MaterialIconAction, diff --git a/bec_widgets/widgets/containers/layout_manager/layout_manager.py b/bec_widgets/widgets/containers/layout_manager/layout_manager.py index 82d780a8..c99d753b 100644 --- a/bec_widgets/widgets/containers/layout_manager/layout_manager.py +++ b/bec_widgets/widgets/containers/layout_manager/layout_manager.py @@ -22,7 +22,7 @@ from qtpy.QtWidgets import ( ) from typeguard import typechecked -from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler +from bec_widgets.utils.rpc_widget_handler import widget_handler class LayoutManagerWidget(QWidget): diff --git a/bec_widgets/widgets/containers/main_window/addons/notification_center/notification_banner.py b/bec_widgets/widgets/containers/main_window/addons/notification_center/notification_banner.py index 4b99a48f..53f7a204 100644 --- a/bec_widgets/widgets/containers/main_window/addons/notification_center/notification_banner.py +++ b/bec_widgets/widgets/containers/main_window/addons/notification_center/notification_banner.py @@ -28,7 +28,7 @@ from qtpy.QtCore import QObject, QTimer from qtpy.QtWidgets import QApplication, QFrame, QMainWindow, QScrollArea, QWidget from bec_widgets import SafeProperty, SafeSlot -from bec_widgets.utils import BECConnector +from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.widget_io import WidgetIO diff --git a/bec_widgets/widgets/containers/main_window/main_window.py b/bec_widgets/widgets/containers/main_window/main_window.py index e0f84a08..0d3713a0 100644 --- a/bec_widgets/widgets/containers/main_window/main_window.py +++ b/bec_widgets/widgets/containers/main_window/main_window.py @@ -18,10 +18,10 @@ from qtpy.QtWidgets import ( ) import bec_widgets -from bec_widgets.utils import UILoader from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.error_popups import SafeSlot +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.widgets.containers.main_window.addons.hover_widget import HoverWidget from bec_widgets.widgets.containers.main_window.addons.notification_center.notification_banner import ( BECNotificationBroker, diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py index 8e8239dd..41e6ae62 100644 --- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py @@ -11,9 +11,9 @@ from qtpy.QtCore import Qt, Signal from qtpy.QtGui import QDoubleValidator from qtpy.QtWidgets import QDoubleSpinBox -from bec_widgets.utils import UILoader from bec_widgets.utils.colors import apply_theme, get_accent_colors from bec_widgets.utils.error_popups import SafeProperty, SafeSlot +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.widgets.control.device_control.positioner_box.positioner_box_base import ( DeviceUpdateUIComponents, PositionerBoxBase, diff --git a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py index b7396b0c..83bb73e1 100644 --- a/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +++ b/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py @@ -12,9 +12,9 @@ from qtpy.QtCore import Signal from qtpy.QtGui import QDoubleValidator from qtpy.QtWidgets import QDoubleSpinBox -from bec_widgets.utils import UILoader from bec_widgets.utils.colors import apply_theme from bec_widgets.utils.error_popups import SafeProperty, SafeSlot +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.widgets.control.device_control.positioner_box.positioner_box_base import ( DeviceUpdateUIComponents, PositionerBoxBase, diff --git a/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py b/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py index 8db1a14a..a9a488bb 100644 --- a/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +++ b/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py @@ -7,7 +7,7 @@ from bec_lib.device import Signal as BECSignal from bec_lib.logger import bec_logger from pydantic import field_validator -from bec_widgets.utils import ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.filter_io import FilterIO 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 cc03c9a3..788dea83 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 @@ -3,7 +3,7 @@ from bec_lib.device import Signal from bec_lib.logger import bec_logger from qtpy.QtCore import Property -from bec_widgets.utils import ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.filter_io import FilterIO diff --git a/bec_widgets/widgets/control/scan_control/scan_control.py b/bec_widgets/widgets/control/scan_control/scan_control.py index c0bc1e24..b5cb4722 100644 --- a/bec_widgets/widgets/control/scan_control/scan_control.py +++ b/bec_widgets/widgets/control/scan_control/scan_control.py @@ -19,7 +19,7 @@ from qtpy.QtWidgets import ( QWidget, ) -from bec_widgets.utils import ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.colors import apply_theme, get_accent_colors from bec_widgets.utils.error_popups import SafeProperty, SafeSlot diff --git a/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py b/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py index 2b5be14d..f6111927 100644 --- a/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +++ b/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py @@ -5,10 +5,10 @@ from bec_lib.logger import bec_logger from qtpy.QtCore import Signal from qtpy.QtWidgets import QPushButton, QSizePolicy, QTreeWidgetItem, QVBoxLayout, QWidget -from bec_widgets.utils import UILoader from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.error_popups import SafeProperty, SafeSlot +from bec_widgets.utils.ui_loader import UILoader logger = bec_logger.logger diff --git a/bec_widgets/widgets/plots/heatmap/heatmap.py b/bec_widgets/widgets/plots/heatmap/heatmap.py index 22287ca3..7dd6ff4d 100644 --- a/bec_widgets/widgets/plots/heatmap/heatmap.py +++ b/bec_widgets/widgets/plots/heatmap/heatmap.py @@ -19,8 +19,8 @@ from scipy.interpolate import ( from scipy.spatial import cKDTree from toolz import partition -from bec_widgets.utils import Colors from bec_widgets.utils.bec_connector import ConnectionConfig +from bec_widgets.utils.colors import Colors from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.settings_dialog import SettingsDialog from bec_widgets.utils.toolbars.actions import MaterialIconAction diff --git a/bec_widgets/widgets/plots/heatmap/settings/heatmap_setting.py b/bec_widgets/widgets/plots/heatmap/settings/heatmap_setting.py index 8238caa7..dd60a38f 100644 --- a/bec_widgets/widgets/plots/heatmap/settings/heatmap_setting.py +++ b/bec_widgets/widgets/plots/heatmap/settings/heatmap_setting.py @@ -4,9 +4,9 @@ import os from qtpy.QtWidgets import QFrame, QScrollArea, QVBoxLayout -from bec_widgets.utils import UILoader from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.settings_dialog import SettingWidget +from bec_widgets.utils.ui_loader import UILoader class HeatmapSettings(SettingWidget): diff --git a/bec_widgets/widgets/plots/image/image.py b/bec_widgets/widgets/plots/image/image.py index d2ed8e39..14429080 100644 --- a/bec_widgets/widgets/plots/image/image.py +++ b/bec_widgets/widgets/plots/image/image.py @@ -10,7 +10,7 @@ from pydantic import BaseModel, Field, field_validator from qtpy.QtCore import QTimer from qtpy.QtWidgets import QWidget -from bec_widgets.utils import ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.colors import Colors, apply_theme from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.widgets.plots.image.image_base import ImageBase diff --git a/bec_widgets/widgets/plots/image/image_base.py b/bec_widgets/widgets/plots/image/image_base.py index 8a0bcaae..57bbf95c 100644 --- a/bec_widgets/widgets/plots/image/image_base.py +++ b/bec_widgets/widgets/plots/image/image_base.py @@ -9,7 +9,7 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError from qtpy.QtCore import QPointF, Signal, SignalInstance from qtpy.QtWidgets import QDialog, QVBoxLayout -from bec_widgets.utils import Colors +from bec_widgets.utils.colors import Colors from bec_widgets.utils.container_utils import WidgetContainerUtils from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.side_panel import SidePanel diff --git a/bec_widgets/widgets/plots/image/image_item.py b/bec_widgets/widgets/plots/image/image_item.py index 6f24ca3b..66ee0926 100644 --- a/bec_widgets/widgets/plots/image/image_item.py +++ b/bec_widgets/widgets/plots/image/image_item.py @@ -9,7 +9,8 @@ from pydantic import Field, ValidationError, field_validator from qtpy.QtCore import Signal from qtpy.QtGui import QTransform -from bec_widgets.utils import BECConnector, Colors, ConnectionConfig +from bec_widgets.utils.bec_connector import BECConnector, ConnectionConfig +from bec_widgets.utils.colors import Colors from bec_widgets.widgets.plots.image.image_processor import ( ImageProcessor, ImageStats, diff --git a/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py b/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py index 91ed3dcb..8c9d7b5b 100644 --- a/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +++ b/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py @@ -20,7 +20,8 @@ from qtpy.QtWidgets import ( ) from bec_widgets import BECWidget -from bec_widgets.utils import BECDispatcher, ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig +from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.utils.toolbars.actions import WidgetAction from bec_widgets.utils.toolbars.bundles import ToolbarBundle from bec_widgets.utils.toolbars.toolbar import MaterialIconAction, ModularToolBar diff --git a/bec_widgets/widgets/plots/motor_map/motor_map.py b/bec_widgets/widgets/plots/motor_map/motor_map.py index d2f01486..32c3d151 100644 --- a/bec_widgets/widgets/plots/motor_map/motor_map.py +++ b/bec_widgets/widgets/plots/motor_map/motor_map.py @@ -10,8 +10,8 @@ from qtpy.QtCore import Signal from qtpy.QtGui import QColor from qtpy.QtWidgets import QHBoxLayout, QMainWindow, QWidget -from bec_widgets.utils import Colors, ConnectionConfig -from bec_widgets.utils.colors import apply_theme +from bec_widgets.utils.bec_connector import ConnectionConfig +from bec_widgets.utils.colors import Colors, apply_theme from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.settings_dialog import SettingsDialog from bec_widgets.utils.toolbars.toolbar import MaterialIconAction diff --git a/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py b/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py index 0cab9d3a..e67aecaf 100644 --- a/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +++ b/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py @@ -2,9 +2,9 @@ import os from qtpy.QtWidgets import QFrame, QScrollArea, QVBoxLayout, QWidget -from bec_widgets.utils import UILoader from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.settings_dialog import SettingWidget +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.utils.widget_io import WidgetIO diff --git a/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py b/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py index e0e214db..291a15cc 100644 --- a/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +++ b/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py @@ -10,7 +10,8 @@ from pydantic import Field, ValidationError, field_validator from qtpy.QtCore import Signal from qtpy.QtWidgets import QWidget -from bec_widgets.utils import Colors, ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig +from bec_widgets.utils.colors import Colors from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.side_panel import SidePanel from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox diff --git a/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py b/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py index 5ab4278b..707a96a6 100644 --- a/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +++ b/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py @@ -2,9 +2,9 @@ import os from qtpy.QtWidgets import QVBoxLayout, QWidget -from bec_widgets.utils import UILoader from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.settings_dialog import SettingWidget +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.utils.widget_io import WidgetIO diff --git a/bec_widgets/widgets/plots/plot_base.py b/bec_widgets/widgets/plots/plot_base.py index 88c23482..f2041a90 100644 --- a/bec_widgets/widgets/plots/plot_base.py +++ b/bec_widgets/widgets/plots/plot_base.py @@ -8,8 +8,10 @@ from bec_lib import bec_logger from qtpy.QtCore import QPoint, QPointF, Qt, Signal from qtpy.QtWidgets import QHBoxLayout, QLabel, QMainWindow, QVBoxLayout, QWidget -from bec_widgets.utils import ConnectionConfig, Crosshair, EntryValidator +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget +from bec_widgets.utils.crosshair import Crosshair +from bec_widgets.utils.entry_validator import EntryValidator from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.fps_counter import FPSCounter from bec_widgets.utils.plot_indicator_items import BECArrowItem, BECTickItem diff --git a/bec_widgets/widgets/plots/roi/image_roi.py b/bec_widgets/widgets/plots/roi/image_roi.py index 9c22f7bc..d6a45dba 100644 --- a/bec_widgets/widgets/plots/roi/image_roi.py +++ b/bec_widgets/widgets/plots/roi/image_roi.py @@ -10,7 +10,7 @@ from qtpy import QtCore from qtpy.QtCore import QObject, Signal from bec_widgets import SafeProperty -from bec_widgets.utils import BECConnector, ConnectionConfig +from bec_widgets.utils.bec_connector import BECConnector, ConnectionConfig from bec_widgets.utils.colors import Colors if TYPE_CHECKING: diff --git a/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py b/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py index 4624e50c..5ca0e660 100644 --- a/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +++ b/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py @@ -8,7 +8,8 @@ from bec_lib import bec_logger from pydantic import BaseModel, Field, ValidationError, field_validator from qtpy import QtCore -from bec_widgets.utils import BECConnector, Colors, ConnectionConfig +from bec_widgets.utils.bec_connector import BECConnector, ConnectionConfig +from bec_widgets.utils.colors import Colors if TYPE_CHECKING: # pragma: no cover from bec_widgets.widgets.plots.scatter_waveform.scatter_waveform import ScatterWaveform diff --git a/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py b/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py index 94fb063f..dcd90598 100644 --- a/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +++ b/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py @@ -7,7 +7,8 @@ from pydantic import Field, ValidationError, field_validator from qtpy.QtCore import QTimer, Signal from qtpy.QtWidgets import QHBoxLayout, QMainWindow, QWidget -from bec_widgets.utils import Colors, ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig +from bec_widgets.utils.colors import Colors from bec_widgets.utils.error_popups import SafeProperty, SafeSlot from bec_widgets.utils.settings_dialog import SettingsDialog from bec_widgets.utils.toolbars.toolbar import MaterialIconAction diff --git a/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py b/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py index 46f211f5..b08fd168 100644 --- a/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +++ b/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py @@ -2,9 +2,9 @@ import os from qtpy.QtWidgets import QFrame, QScrollArea, QVBoxLayout -from bec_widgets.utils import UILoader from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.settings_dialog import SettingWidget +from bec_widgets.utils.ui_loader import UILoader class ScatterCurveSettings(SettingWidget): diff --git a/bec_widgets/widgets/plots/setting_menus/axis_settings.py b/bec_widgets/widgets/plots/setting_menus/axis_settings.py index 68f4ba7b..655adceb 100644 --- a/bec_widgets/widgets/plots/setting_menus/axis_settings.py +++ b/bec_widgets/widgets/plots/setting_menus/axis_settings.py @@ -2,9 +2,9 @@ import os from qtpy.QtWidgets import QFrame, QScrollArea, QVBoxLayout, QWidget -from bec_widgets.utils import UILoader from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.settings_dialog import SettingWidget +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.utils.widget_io import WidgetIO diff --git a/bec_widgets/widgets/plots/waveform/curve.py b/bec_widgets/widgets/plots/waveform/curve.py index a4dca716..f5bd030c 100644 --- a/bec_widgets/widgets/plots/waveform/curve.py +++ b/bec_widgets/widgets/plots/waveform/curve.py @@ -8,7 +8,8 @@ from bec_lib import bec_logger from pydantic import BaseModel, Field, field_validator from qtpy import QtCore -from bec_widgets.utils import BECConnector, Colors, ConnectionConfig +from bec_widgets.utils.bec_connector import BECConnector, ConnectionConfig +from bec_widgets.utils.colors import Colors if TYPE_CHECKING: # pragma: no cover from bec_widgets.widgets.plots.waveform.waveform import Waveform diff --git a/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py b/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py index 10c78b46..3f73677e 100644 --- a/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +++ b/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py @@ -50,9 +50,10 @@ from qtpy.QtWidgets import ( ) from bec_widgets import SafeSlot -from bec_widgets.utils import ConnectionConfig, EntryValidator +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.colors import Colors +from bec_widgets.utils.entry_validator import EntryValidator from bec_widgets.utils.toolbars.actions import WidgetAction from bec_widgets.utils.toolbars.bundles import ToolbarBundle from bec_widgets.utils.toolbars.toolbar import MaterialIconAction, ModularToolBar diff --git a/bec_widgets/widgets/plots/waveform/waveform.py b/bec_widgets/widgets/plots/waveform/waveform.py index 95a96fb4..ee9a90fc 100644 --- a/bec_widgets/widgets/plots/waveform/waveform.py +++ b/bec_widgets/widgets/plots/waveform/waveform.py @@ -25,7 +25,7 @@ from qtpy.QtWidgets import ( QWidget, ) -from bec_widgets.utils import ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_signal_proxy import BECSignalProxy from bec_widgets.utils.colors import Colors, apply_theme from bec_widgets.utils.container_utils import WidgetContainerUtils diff --git a/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py b/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py index 78627680..e427caa4 100644 --- a/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +++ b/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py @@ -6,8 +6,8 @@ from bec_lib.logger import bec_logger from qtpy.QtCore import QPointF, QSize, Qt from qtpy.QtWidgets import QHBoxLayout, QLabel, QVBoxLayout, QWidget -from bec_widgets.utils import Colors from bec_widgets.utils.bec_widget import BECWidget +from bec_widgets.utils.colors import Colors from bec_widgets.utils.error_popups import SafeProperty from bec_widgets.utils.settings_dialog import SettingsDialog from bec_widgets.utils.toolbars.actions import MaterialIconAction diff --git a/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_settings_cards.py b/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_settings_cards.py index 20d90164..d5abfc00 100644 --- a/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_settings_cards.py +++ b/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_settings_cards.py @@ -19,9 +19,9 @@ from qtpy.QtWidgets import ( QWidget, ) -from bec_widgets.utils import UILoader from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.settings_dialog import SettingWidget +from bec_widgets.utils.ui_loader import UILoader from bec_widgets.widgets.progress.ring_progress_bar.ring import Ring from bec_widgets.widgets.utility.visual.colormap_widget.colormap_widget import BECColorMapWidget diff --git a/bec_widgets/widgets/services/device_browser/device_browser.py b/bec_widgets/widgets/services/device_browser/device_browser.py index 831f7e54..d0fc5af9 100644 --- a/bec_widgets/widgets/services/device_browser/device_browser.py +++ b/bec_widgets/widgets/services/device_browser/device_browser.py @@ -12,10 +12,10 @@ from pyqtgraph import SignalProxy from qtpy.QtCore import QThreadPool, Signal from qtpy.QtWidgets import QFileDialog, QListWidget, QToolButton, QVBoxLayout, QWidget -from bec_widgets.cli.rpc.rpc_register import RPCRegister from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.list_of_expandable_frames import ListOfExpandableFrames +from bec_widgets.utils.rpc_register import RPCRegister from bec_widgets.utils.ui_loader import UILoader from bec_widgets.widgets.services.device_browser.device_item import DeviceItem from bec_widgets.widgets.services.device_browser.device_item.device_config_dialog import ( diff --git a/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py b/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py index 5317843c..0c30acbf 100644 --- a/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +++ b/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py @@ -3,8 +3,8 @@ from qtpy import QtCore, QtGui from qtpy.QtCore import Property, Signal, Slot from qtpy.QtWidgets import QSizePolicy, QVBoxLayout, QWidget -from bec_widgets.utils import Colors from bec_widgets.utils.bec_widget import BECWidget +from bec_widgets.utils.colors import Colors class RoundedColorMapButton(ColorMapButton): diff --git a/bec_widgets/widgets/utility/widget_hierarchy_tree/widget_hierarchy_tree.py b/bec_widgets/widgets/utility/widget_hierarchy_tree/widget_hierarchy_tree.py index c3ec0266..a77e8232 100644 --- a/bec_widgets/widgets/utility/widget_hierarchy_tree/widget_hierarchy_tree.py +++ b/bec_widgets/widgets/utility/widget_hierarchy_tree/widget_hierarchy_tree.py @@ -19,7 +19,7 @@ from qtpy.QtWidgets import ( QWidget, ) -from bec_widgets.utils import BECConnector +from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.widget_highlighter import WidgetHighlighter from bec_widgets.utils.widget_io import WidgetHierarchy diff --git a/pyproject.toml b/pyproject.toml index 70134760..50410229 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,19 +12,19 @@ dependencies = [ "PyJWT~=2.9", "PySide6==6.9.0", "PySide6-QtAds==4.4.0", - "bec_ipython_client~=3.107,>=3.107.2", # needed for jupyter console + "bec_ipython_client~=3.107,>=3.107.2", # needed for jupyter console "bec_lib~=3.107,>=3.107.2", "bec_qthemes~=1.0, >=1.3.4", - "black>=26,<27", # needed for bw-generate-cli + "black>=26,<27", # needed for bw-generate-cli "copier~=9.7", "darkdetect~=0.8", - "isort>=5.13, <9.0", # needed for bw-generate-cli + "isort>=5.13, <9.0", # needed for bw-generate-cli "markdown~=3.9", "ophyd_devices~=1.29, >=1.29.1", "pydantic~=2.0", "pylsp-bec~=1.2", "pyqtgraph==0.13.7", - "qtconsole~=5.5, >=5.5.1", # needed for jupyter console + "qtconsole~=5.5, >=5.5.1", # needed for jupyter console "qtmonaco~=0.8, >=0.8.1", "qtpy~=2.4", "thefuzz~=0.22", @@ -38,8 +38,8 @@ Homepage = "https://gitlab.psi.ch/bec/bec_widgets" [project.scripts] bec-app = "bec_widgets.applications.main_app:main" bec-designer = "bec_widgets.utils.bec_designer:main" -bec-gui-server = "bec_widgets.cli.server:main" -bw-generate-cli = "bec_widgets.cli.generate_cli:main" +bec-gui-server = "bec_widgets.applications.companion_app:main" +bw-generate-cli = "bec_widgets.utils.generate_cli:main" [project.optional-dependencies] dev = [ @@ -55,9 +55,7 @@ dev = [ "watchdog~=6.0", "pre_commit~=4.2", ] -qtermwidget = [ - "pyside6_qtermwidget", -] +qtermwidget = ["pyside6_qtermwidget"] [build-system] requires = ["hatchling"] @@ -68,7 +66,7 @@ line-length = 100 skip-magic-trailing-comma = true [tool.coverage.report] -skip_empty = true # exclude empty *files*, e.g. __init__.py, from the report +skip_empty = true # exclude empty *files*, e.g. __init__.py, from the report exclude_lines = [ "pragma: no cover", "if TYPE_CHECKING:", diff --git a/tests/unit_tests/conftest.py b/tests/unit_tests/conftest.py index 2f230bb5..1b599171 100644 --- a/tests/unit_tests/conftest.py +++ b/tests/unit_tests/conftest.py @@ -23,11 +23,11 @@ from pytestqt.exceptions import TimeoutError as QtBotTimeoutError from qtpy.QtCore import QEvent, QEventLoop from qtpy.QtWidgets import QApplication, QMessageBox -from bec_widgets.cli.rpc.rpc_register import RPCRegister from bec_widgets.tests.utils import DEVICES, DMMock from bec_widgets.utils import bec_dispatcher as bec_dispatcher_module from bec_widgets.utils import error_popups from bec_widgets.utils.bec_dispatcher import QtRedisConnector +from bec_widgets.utils.rpc_register import RPCRegister # Patch to set default RAISE_ERROR_DEFAULT to True for tests # This means that by default, error popups will raise exceptions during tests diff --git a/tests/unit_tests/test_bec_connector.py b/tests/unit_tests/test_bec_connector.py index 55773232..04be4659 100644 --- a/tests/unit_tests/test_bec_connector.py +++ b/tests/unit_tests/test_bec_connector.py @@ -5,7 +5,7 @@ import pytest from qtpy.QtCore import QObject from qtpy.QtWidgets import QApplication, QWidget -from bec_widgets.utils import BECConnector +from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.utils.error_popups import SafeProperty from bec_widgets.utils.error_popups import SafeSlot as Slot diff --git a/tests/unit_tests/test_color_utils.py b/tests/unit_tests/test_color_utils.py index 39c46473..fc68acb6 100644 --- a/tests/unit_tests/test_color_utils.py +++ b/tests/unit_tests/test_color_utils.py @@ -4,9 +4,9 @@ from pydantic import ValidationError from qtpy.QtGui import QColor from qtpy.QtWidgets import QVBoxLayout, QWidget -from bec_widgets.utils import Colors, ConnectionConfig +from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget -from bec_widgets.utils.colors import apply_theme +from bec_widgets.utils.colors import Colors, apply_theme from bec_widgets.widgets.plots.waveform.curve import CurveConfig from tests.unit_tests.client_mocks import mocked_client from tests.unit_tests.conftest import create_widget diff --git a/tests/unit_tests/test_crosshair.py b/tests/unit_tests/test_crosshair.py index 28662a27..0012c9d4 100644 --- a/tests/unit_tests/test_crosshair.py +++ b/tests/unit_tests/test_crosshair.py @@ -4,7 +4,7 @@ import pytest from qtpy.QtCore import QPointF, Qt from qtpy.QtGui import QTransform -from bec_widgets.utils import Crosshair +from bec_widgets.utils.crosshair import Crosshair from bec_widgets.widgets.plots.image.image_item import ImageItem from bec_widgets.widgets.plots.waveform.waveform import Waveform from tests.unit_tests.client_mocks import mocked_client diff --git a/tests/unit_tests/test_generate_cli_client.py b/tests/unit_tests/test_generate_cli_client.py index 3b0013c7..a5ace4a2 100644 --- a/tests/unit_tests/test_generate_cli_client.py +++ b/tests/unit_tests/test_generate_cli_client.py @@ -5,7 +5,7 @@ import black import isort import pytest -from bec_widgets.cli.generate_cli import ClientGenerator +from bec_widgets.utils.generate_cli import ClientGenerator from bec_widgets.utils.plugin_utils import BECClassContainer, BECClassInfo # pylint: disable=missing-function-docstring diff --git a/tests/unit_tests/test_ring_progress_bar.py b/tests/unit_tests/test_ring_progress_bar.py index e00f0fc6..5abf7bb7 100644 --- a/tests/unit_tests/test_ring_progress_bar.py +++ b/tests/unit_tests/test_ring_progress_bar.py @@ -8,7 +8,7 @@ from qtpy.QtCore import QEvent, QPoint, QPointF, Qt from qtpy.QtGui import QColor, QMouseEvent from qtpy.QtWidgets import QApplication -from bec_widgets.utils import Colors +from bec_widgets.utils.colors import Colors from bec_widgets.widgets.progress.ring_progress_bar.ring_progress_bar import ( RingProgressBar, RingProgressContainerWidget, diff --git a/tests/unit_tests/test_rpc_register.py b/tests/unit_tests/test_rpc_register.py index 574f11bb..5250d138 100644 --- a/tests/unit_tests/test_rpc_register.py +++ b/tests/unit_tests/test_rpc_register.py @@ -1,4 +1,4 @@ -from bec_widgets.cli.rpc.rpc_register import RPCRegister +from bec_widgets.utils.rpc_register import RPCRegister class FakeObject: diff --git a/tests/unit_tests/test_rpc_widget_handler.py b/tests/unit_tests/test_rpc_widget_handler.py index ed213b8b..a8a2c210 100644 --- a/tests/unit_tests/test_rpc_widget_handler.py +++ b/tests/unit_tests/test_rpc_widget_handler.py @@ -1,8 +1,8 @@ from unittest.mock import patch -from bec_widgets.cli.rpc.rpc_widget_handler import RPCWidgetHandler from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.plugin_utils import BECClassContainer, BECClassInfo +from bec_widgets.utils.rpc_widget_handler import RPCWidgetHandler def test_rpc_widget_handler(): @@ -16,7 +16,7 @@ class _TestPluginWidget(BECWidget): ... @patch( - "bec_widgets.cli.rpc.rpc_widget_handler.get_all_plugin_widgets", + "bec_widgets.utils.rpc_widget_handler.get_all_plugin_widgets", return_value=BECClassContainer( [ BECClassInfo(name="DeviceComboBox", obj=_TestPluginWidget, module="", file=""),