From a7e375fdbff218732a58551beea2c93eb2d0c524 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Mon, 16 Mar 2026 13:26:46 +0100 Subject: [PATCH] fix(device_manage_view): lazy imports --- .../device_manager_display_widget.py | 34 ++++++++++++------- .../device_manager_view.py | 9 +++-- .../device_manager_widget.py | 9 +++-- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/bec_widgets/applications/views/device_manager_view/device_manager_display_widget.py b/bec_widgets/applications/views/device_manager_view/device_manager_display_widget.py index 3fd41bb8..f7941d67 100644 --- a/bec_widgets/applications/views/device_manager_view/device_manager_display_widget.py +++ b/bec_widgets/applications/views/device_manager_view/device_manager_display_widget.py @@ -13,6 +13,7 @@ from bec_lib.file_utils import DeviceConfigWriter from bec_lib.logger import bec_logger from bec_lib.messages import ConfigAction, ScanStatusMessage from bec_lib.plugin_helper import plugin_package_name, plugin_repo_path +from bec_lib.utils.import_utils import lazy_import_from from bec_qthemes import apply_theme, material_icon from qtpy.QtCore import QMetaObject, Qt, QThreadPool, Signal from qtpy.QtGui import QColor @@ -26,15 +27,6 @@ from qtpy.QtWidgets import ( QWidget, ) -from bec_widgets.applications.views.device_manager_view.device_manager_dialogs.config_choice_dialog import ( - ConfigChoiceDialog, -) -from bec_widgets.applications.views.device_manager_view.device_manager_dialogs.device_form_dialog import ( - DeviceFormDialog, -) -from bec_widgets.applications.views.device_manager_view.device_manager_dialogs.upload_redis_dialog import ( - UploadRedisDialog, -) from bec_widgets.utils.colors import get_accent_colors from bec_widgets.utils.error_popups import SafeSlot from bec_widgets.utils.toolbars.actions import MaterialIconAction @@ -47,9 +39,6 @@ from bec_widgets.widgets.control.device_manager.components.device_table.device_t ) from bec_widgets.widgets.control.device_manager.components.dm_config_view import DMConfigView from bec_widgets.widgets.control.device_manager.components.dm_docstring_view import DocstringView -from bec_widgets.widgets.control.device_manager.components.ophyd_validation.ophyd_validation import ( - OphydValidation, -) from bec_widgets.widgets.control.device_manager.components.ophyd_validation.ophyd_validation_utils import ( ConfigStatus, ConnectionStatus, @@ -65,8 +54,29 @@ from bec_widgets.widgets.utility.spinner.spinner import SpinnerWidget if TYPE_CHECKING: # pragma: no cover from bec_lib.client import BECClient + from bec_widgets.applications.views.device_manager_view.device_manager_dialogs.upload_redis_dialog import ( + UploadRedisDialog, + ) + logger = bec_logger.logger +ConfigChoiceDialog = lazy_import_from( + "bec_widgets.applications.views.device_manager_view.device_manager_dialogs.config_choice_dialog", + ("ConfigChoiceDialog",), +) +DeviceFormDialog = lazy_import_from( + "bec_widgets.applications.views.device_manager_view.device_manager_dialogs.device_form_dialog", + ("DeviceFormDialog",), +) +UploadRedisDialog = lazy_import_from( + "bec_widgets.applications.views.device_manager_view.device_manager_dialogs.upload_redis_dialog", + ("UploadRedisDialog",), +) +OphydValidation = lazy_import_from( + "bec_widgets.widgets.control.device_manager.components.ophyd_validation.ophyd_validation", + ("OphydValidation",), +) + _yes_no_question = partial( QMessageBox.question, buttons=QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No, diff --git a/bec_widgets/applications/views/device_manager_view/device_manager_view.py b/bec_widgets/applications/views/device_manager_view/device_manager_view.py index 79770847..36491fca 100644 --- a/bec_widgets/applications/views/device_manager_view/device_manager_view.py +++ b/bec_widgets/applications/views/device_manager_view/device_manager_view.py @@ -1,14 +1,17 @@ """Module for Device Manager View.""" +from bec_lib.utils.import_utils import lazy_import_from from qtpy.QtCore import QRect from qtpy.QtWidgets import QWidget -from bec_widgets.applications.views.device_manager_view.device_manager_widget import ( - DeviceManagerWidget, -) from bec_widgets.applications.views.view import ViewBase, ViewTourSteps from bec_widgets.utils.error_popups import SafeSlot +DeviceManagerWidget = lazy_import_from( + "bec_widgets.applications.views.device_manager_view.device_manager_widget", + ("DeviceManagerWidget",), +) + class DeviceManagerView(ViewBase): """ diff --git a/bec_widgets/applications/views/device_manager_view/device_manager_widget.py b/bec_widgets/applications/views/device_manager_view/device_manager_widget.py index d6201500..0658abcf 100644 --- a/bec_widgets/applications/views/device_manager_view/device_manager_widget.py +++ b/bec_widgets/applications/views/device_manager_view/device_manager_widget.py @@ -6,15 +6,18 @@ import os from bec_lib.bec_yaml_loader import yaml_load from bec_lib.logger import bec_logger +from bec_lib.utils.import_utils import lazy_import_from from bec_qthemes import material_icon from qtpy import QtCore, QtWidgets -from bec_widgets.applications.views.device_manager_view.device_manager_display_widget import ( - DeviceManagerDisplayWidget, -) from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.error_popups import SafeSlot +DeviceManagerDisplayWidget = lazy_import_from( + "bec_widgets.applications.views.device_manager_view.device_manager_display_widget", + ("DeviceManagerDisplayWidget",), +) + logger = bec_logger.logger