diff --git a/bec_widgets/utils/ophyd_kind_util.py b/bec_widgets/utils/ophyd_kind_util.py new file mode 100644 index 00000000..be3b52be --- /dev/null +++ b/bec_widgets/utils/ophyd_kind_util.py @@ -0,0 +1,26 @@ +from enum import IntFlag + +try: + + from enum import KEEP + + class IFBase(IntFlag, boundary=KEEP): ... + +except ImportError: + + IFBase = IntFlag + + +class Kind(IFBase): + """ + This is used in the .kind attribute of all OphydObj (Signals, Devices). + + A Device examines its components' .kind atttribute to decide whether to + traverse it in read(), read_configuration(), or neither. Additionally, if + decides whether to include its name in `hints['fields']`. + """ + + omitted = 0b000 + normal = 0b001 + config = 0b010 + hinted = 0b101 # Notice that bool(hinted & normal) is True. diff --git a/bec_widgets/widgets/base_classes/device_signal_input_base.py b/bec_widgets/widgets/base_classes/device_signal_input_base.py index 6029b53f..33ad9528 100644 --- a/bec_widgets/widgets/base_classes/device_signal_input_base.py +++ b/bec_widgets/widgets/base_classes/device_signal_input_base.py @@ -1,12 +1,12 @@ from bec_lib.callback_handler import EventType from bec_lib.device import Signal from bec_lib.logger import bec_logger -from ophyd import Kind from qtpy.QtCore import Property, Slot from bec_widgets.utils import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget from bec_widgets.utils.filter_io import FilterIO +from bec_widgets.utils.ophyd_kind_util import Kind from bec_widgets.utils.widget_io import WidgetIO logger = bec_logger.logger diff --git a/bec_widgets/widgets/signal_combobox/signal_combobox.py b/bec_widgets/widgets/signal_combobox/signal_combobox.py index ec60b3ea..3415ada4 100644 --- a/bec_widgets/widgets/signal_combobox/signal_combobox.py +++ b/bec_widgets/widgets/signal_combobox/signal_combobox.py @@ -1,9 +1,9 @@ from bec_lib.device import Positioner -from ophyd import Kind from qtpy.QtCore import QSize, Signal, Slot from qtpy.QtWidgets import QComboBox, QSizePolicy from bec_widgets.utils.filter_io import ComboBoxFilterHandler, FilterIO +from bec_widgets.utils.ophyd_kind_util import Kind from bec_widgets.widgets.base_classes.device_signal_input_base import DeviceSignalInputBase diff --git a/bec_widgets/widgets/signal_line_edit/signal_line_edit.py b/bec_widgets/widgets/signal_line_edit/signal_line_edit.py index 36027fbe..e8c3e38c 100644 --- a/bec_widgets/widgets/signal_line_edit/signal_line_edit.py +++ b/bec_widgets/widgets/signal_line_edit/signal_line_edit.py @@ -1,10 +1,10 @@ from bec_lib.device import Positioner -from ophyd import Kind from qtpy.QtCore import QSize, Signal, Slot from qtpy.QtGui import QPainter, QPaintEvent, QPen from qtpy.QtWidgets import QCompleter, QLineEdit, QSizePolicy from bec_widgets.utils.colors import get_accent_colors +from bec_widgets.utils.ophyd_kind_util import Kind from bec_widgets.widgets.base_classes.device_signal_input_base import DeviceSignalInputBase diff --git a/tests/unit_tests/test_device_signal_input.py b/tests/unit_tests/test_device_signal_input.py index 82374aa3..30e14906 100644 --- a/tests/unit_tests/test_device_signal_input.py +++ b/tests/unit_tests/test_device_signal_input.py @@ -1,9 +1,9 @@ from unittest import mock import pytest -from ophyd import Kind from qtpy.QtWidgets import QWidget +from bec_widgets.utils.ophyd_kind_util import Kind from bec_widgets.widgets.base_classes.device_input_base import BECDeviceFilter from bec_widgets.widgets.base_classes.device_signal_input_base import DeviceSignalInputBase from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox