bec-widgets 2.8.2__py3-none-any.whl → 2.8.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- .github/workflows/end2end-conda.yml +4 -2
- CHANGELOG.md +18 -0
- PKG-INFO +1 -1
- bec_widgets/applications/launch_window.py +1 -1
- bec_widgets/cli/client.py +1 -1
- bec_widgets/cli/generate_cli.py +1 -1
- bec_widgets/cli/rpc/rpc_widget_handler.py +3 -4
- bec_widgets/utils/bec_plugin_helper.py +29 -16
- bec_widgets/utils/plugin_utils.py +27 -26
- bec_widgets/utils/ui_loader.py +3 -6
- {bec_widgets-2.8.2.dist-info → bec_widgets-2.8.3.dist-info}/METADATA +1 -1
- {bec_widgets-2.8.2.dist-info → bec_widgets-2.8.3.dist-info}/RECORD +16 -16
- pyproject.toml +1 -1
- {bec_widgets-2.8.2.dist-info → bec_widgets-2.8.3.dist-info}/WHEEL +0 -0
- {bec_widgets-2.8.2.dist-info → bec_widgets-2.8.3.dist-info}/entry_points.txt +0 -0
- {bec_widgets-2.8.2.dist-info → bec_widgets-2.8.3.dist-info}/licenses/LICENSE +0 -0
@@ -12,6 +12,7 @@ jobs:
|
|
12
12
|
CHILD_PIPELINE_BRANCH: main # Set the branch you want for ophyd_devices
|
13
13
|
BEC_CORE_BRANCH: main # Set the branch you want for bec
|
14
14
|
OPHYD_DEVICES_BRANCH: main # Set the branch you want for ophyd_devices
|
15
|
+
PLUGIN_REPO_BRANCH: main # Set the branch you want for the plugin repo
|
15
16
|
PROJECT_PATH: ${{ github.repository }}
|
16
17
|
QTWEBENGINE_DISABLE_SANDBOX: 1
|
17
18
|
QT_QPA_PLATFORM: "offscreen"
|
@@ -39,10 +40,11 @@ jobs:
|
|
39
40
|
echo -e "\033[35;1m Using branch $OPHYD_DEVICES_BRANCH of OPHYD_DEVICES \033[0;m";
|
40
41
|
git clone --branch $OPHYD_DEVICES_BRANCH https://github.com/bec-project/ophyd_devices.git
|
41
42
|
export OHPYD_DEVICES_PATH=$PWD/ophyd_devices
|
43
|
+
echo -e "\033[35;1m Using branch $PLUGIN_REPO_BRANCH of bec_testing_plugin \033[0;m";
|
44
|
+
git clone --branch $PLUGIN_REPO_BRANCH https://github.com/bec-project/bec_testing_plugin.git
|
42
45
|
cd ./bec
|
43
46
|
conda create -q -n test-environment python=3.11
|
44
47
|
source ./bin/install_bec_dev.sh -t
|
45
48
|
cd ../
|
46
|
-
pip install -e ./ophyd_devices
|
47
|
-
pip install -e .[dev,pyside6]
|
49
|
+
pip install -e ./ophyd_devices -e .[dev,pyside6] -e ./bec_testing_plugin
|
48
50
|
pytest -v --files-path ./ --start-servers --random-order ./tests/end-2-end
|
CHANGELOG.md
CHANGED
@@ -1,6 +1,24 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.8.3 (2025-05-30)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- Guard plugin repo import in e2e test
|
9
|
+
([`bf172b8`](https://github.com/bec-project/bec_widgets/commit/bf172b8431ec207f39206d2a0446908f7186858a))
|
10
|
+
|
11
|
+
### Refactoring
|
12
|
+
|
13
|
+
- Store modules with widget search
|
14
|
+
([`b225a7c`](https://github.com/bec-project/bec_widgets/commit/b225a7cc90b55697211c28d9411b6f85c8077217))
|
15
|
+
|
16
|
+
### Testing
|
17
|
+
|
18
|
+
- **e2e**: Add tests involving plugin repo
|
19
|
+
([`05329ab`](https://github.com/bec-project/bec_widgets/commit/05329ab50fe10ffc3c19ef3eb408912bb9068de3))
|
20
|
+
|
21
|
+
|
4
22
|
## v2.8.2 (2025-05-27)
|
5
23
|
|
6
24
|
### Bug Fixes
|
PKG-INFO
CHANGED
@@ -242,7 +242,7 @@ class LaunchWindow(BECMainWindow):
|
|
242
242
|
)
|
243
243
|
|
244
244
|
# plugin widgets
|
245
|
-
self.available_widgets: dict[str, BECWidget] = get_all_plugin_widgets()
|
245
|
+
self.available_widgets: dict[str, type[BECWidget]] = get_all_plugin_widgets().as_dict()
|
246
246
|
if self.available_widgets:
|
247
247
|
plugin_repo_name = next(iter(self.available_widgets.values())).__module__.split(".")[0]
|
248
248
|
plugin_repo_name = plugin_repo_name.removesuffix("_bec").upper()
|
bec_widgets/cli/client.py
CHANGED
@@ -63,7 +63,7 @@ _Widgets = {
|
|
63
63
|
|
64
64
|
|
65
65
|
try:
|
66
|
-
_plugin_widgets = get_all_plugin_widgets()
|
66
|
+
_plugin_widgets = get_all_plugin_widgets().as_dict()
|
67
67
|
plugin_client = get_plugin_client_module()
|
68
68
|
Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
|
69
69
|
|
bec_widgets/cli/generate_cli.py
CHANGED
@@ -111,7 +111,7 @@ _Widgets = {
|
|
111
111
|
self.content += """
|
112
112
|
|
113
113
|
try:
|
114
|
-
_plugin_widgets = get_all_plugin_widgets()
|
114
|
+
_plugin_widgets = get_all_plugin_widgets().as_dict()
|
115
115
|
plugin_client = get_plugin_client_module()
|
116
116
|
Widgets = _WidgetsEnumType("Widgets", {name: name for name in _plugin_widgets} | _Widgets)
|
117
117
|
|
@@ -31,10 +31,9 @@ class RPCWidgetHandler:
|
|
31
31
|
Returns:
|
32
32
|
None
|
33
33
|
"""
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}
|
34
|
+
self._widget_classes = (
|
35
|
+
get_custom_classes("bec_widgets") + get_all_plugin_widgets()
|
36
|
+
).as_dict(IGNORE_WIDGETS)
|
38
37
|
|
39
38
|
def create_widget(self, widget_type, **kwargs) -> BECWidget:
|
40
39
|
"""
|
@@ -3,12 +3,17 @@ from __future__ import annotations
|
|
3
3
|
import importlib.metadata
|
4
4
|
import inspect
|
5
5
|
import pkgutil
|
6
|
+
import traceback
|
6
7
|
from importlib import util as importlib_util
|
7
8
|
from importlib.machinery import FileFinder, ModuleSpec, SourceFileLoader
|
8
9
|
from types import ModuleType
|
9
10
|
from typing import Generator
|
10
11
|
|
11
|
-
from
|
12
|
+
from bec_lib.logger import bec_logger
|
13
|
+
|
14
|
+
from bec_widgets.utils.plugin_utils import BECClassContainer, BECClassInfo
|
15
|
+
|
16
|
+
logger = bec_logger.logger
|
12
17
|
|
13
18
|
|
14
19
|
def _submodule_specs(module: ModuleType) -> tuple[ModuleSpec | None, ...]:
|
@@ -30,7 +35,12 @@ def _loaded_submodules_from_specs(
|
|
30
35
|
assert isinstance(
|
31
36
|
submodule.__loader__, SourceFileLoader
|
32
37
|
), "Module found from FileFinder should have SourceFileLoader!"
|
33
|
-
|
38
|
+
try:
|
39
|
+
submodule.__loader__.exec_module(submodule)
|
40
|
+
except Exception as e:
|
41
|
+
logger.error(
|
42
|
+
f"Error loading plugin {submodule}: \n{''.join(traceback.format_exception(e))}"
|
43
|
+
)
|
34
44
|
yield submodule
|
35
45
|
|
36
46
|
|
@@ -41,27 +51,29 @@ def _submodule_by_name(module: ModuleType, name: str):
|
|
41
51
|
return None
|
42
52
|
|
43
53
|
|
44
|
-
def _get_widgets_from_module(module: ModuleType) ->
|
45
|
-
"""Find any BECWidget subclasses in the given module and return them with their
|
54
|
+
def _get_widgets_from_module(module: ModuleType) -> BECClassContainer:
|
55
|
+
"""Find any BECWidget subclasses in the given module and return them with their info."""
|
46
56
|
from bec_widgets.utils.bec_widget import BECWidget # avoid circular import
|
47
57
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
58
|
+
classes = inspect.getmembers(
|
59
|
+
module,
|
60
|
+
predicate=lambda item: inspect.isclass(item)
|
61
|
+
and issubclass(item, BECWidget)
|
62
|
+
and item is not BECWidget,
|
63
|
+
)
|
64
|
+
return BECClassContainer(
|
65
|
+
BECClassInfo(name=k, module=module.__name__, file=module.__loader__.get_filename(), obj=v)
|
66
|
+
for k, v in classes
|
55
67
|
)
|
56
68
|
|
57
69
|
|
58
|
-
def _all_widgets_from_all_submods(module):
|
70
|
+
def _all_widgets_from_all_submods(module) -> BECClassContainer:
|
59
71
|
"""Recursively load submodules, find any BECWidgets, and return them all as a flat dict."""
|
60
72
|
widgets = _get_widgets_from_module(module)
|
61
73
|
if not hasattr(module, "__path__"):
|
62
74
|
return widgets
|
63
75
|
for submod in _loaded_submodules_from_specs(_submodule_specs(module)):
|
64
|
-
widgets
|
76
|
+
widgets += _all_widgets_from_all_submods(submod)
|
65
77
|
return widgets
|
66
78
|
|
67
79
|
|
@@ -75,15 +87,16 @@ def get_plugin_client_module() -> ModuleType | None:
|
|
75
87
|
return _submodule_by_name(plugin, "client") if (plugin := user_widget_plugin()) else None
|
76
88
|
|
77
89
|
|
78
|
-
def get_all_plugin_widgets() ->
|
90
|
+
def get_all_plugin_widgets() -> BECClassContainer:
|
79
91
|
"""If there is a plugin repository installed, load all widgets from it."""
|
80
92
|
if plugin := user_widget_plugin():
|
81
93
|
return _all_widgets_from_all_submods(plugin)
|
82
94
|
else:
|
83
|
-
return
|
95
|
+
return BECClassContainer()
|
84
96
|
|
85
97
|
|
86
98
|
if __name__ == "__main__": # pragma: no cover
|
87
|
-
|
99
|
+
|
88
100
|
client = get_plugin_client_module()
|
101
|
+
print(get_all_plugin_widgets())
|
89
102
|
...
|
@@ -4,7 +4,7 @@ import importlib
|
|
4
4
|
import inspect
|
5
5
|
import os
|
6
6
|
from dataclasses import dataclass
|
7
|
-
from typing import TYPE_CHECKING
|
7
|
+
from typing import TYPE_CHECKING, Iterable
|
8
8
|
|
9
9
|
from bec_lib.plugin_helper import _get_available_plugins
|
10
10
|
from qtpy.QtWidgets import QGraphicsWidget, QWidget
|
@@ -90,15 +90,15 @@ class BECClassInfo:
|
|
90
90
|
name: str
|
91
91
|
module: str
|
92
92
|
file: str
|
93
|
-
obj: type
|
93
|
+
obj: type[BECWidget]
|
94
94
|
is_connector: bool = False
|
95
95
|
is_widget: bool = False
|
96
96
|
is_plugin: bool = False
|
97
97
|
|
98
98
|
|
99
99
|
class BECClassContainer:
|
100
|
-
def __init__(self):
|
101
|
-
self._collection: list[BECClassInfo] =
|
100
|
+
def __init__(self, initial: Iterable[BECClassInfo] = []):
|
101
|
+
self._collection: list[BECClassInfo] = list(initial)
|
102
102
|
|
103
103
|
def __repr__(self):
|
104
104
|
return str(list(cl.name for cl in self.collection))
|
@@ -106,6 +106,16 @@ class BECClassContainer:
|
|
106
106
|
def __iter__(self):
|
107
107
|
return self._collection.__iter__()
|
108
108
|
|
109
|
+
def __add__(self, other: BECClassContainer):
|
110
|
+
return BECClassContainer((*self, *(c for c in other if c.name not in self.names)))
|
111
|
+
|
112
|
+
def as_dict(self, ignores: list[str] = []) -> dict[str, type[BECWidget]]:
|
113
|
+
"""get a dict of {name: Type} for all the entries in the collection.
|
114
|
+
|
115
|
+
Args:
|
116
|
+
ignores(list[str]): a list of class names to exclude from the dictionary."""
|
117
|
+
return {c.name: c.obj for c in self if c.name not in ignores}
|
118
|
+
|
109
119
|
def add_class(self, class_info: BECClassInfo):
|
110
120
|
"""
|
111
121
|
Add a class to the collection.
|
@@ -115,53 +125,44 @@ class BECClassContainer:
|
|
115
125
|
"""
|
116
126
|
self.collection.append(class_info)
|
117
127
|
|
128
|
+
@property
|
129
|
+
def names(self):
|
130
|
+
"""Return a list of class names"""
|
131
|
+
return [c.name for c in self]
|
132
|
+
|
118
133
|
@property
|
119
134
|
def collection(self):
|
120
|
-
"""
|
121
|
-
Get the collection of classes.
|
122
|
-
"""
|
135
|
+
"""Get the collection of classes."""
|
123
136
|
return self._collection
|
124
137
|
|
125
138
|
@property
|
126
139
|
def connector_classes(self):
|
127
|
-
"""
|
128
|
-
Get all connector classes.
|
129
|
-
"""
|
140
|
+
"""Get all connector classes."""
|
130
141
|
return [info.obj for info in self.collection if info.is_connector]
|
131
142
|
|
132
143
|
@property
|
133
144
|
def top_level_classes(self):
|
134
|
-
"""
|
135
|
-
Get all top-level classes.
|
136
|
-
"""
|
145
|
+
"""Get all top-level classes."""
|
137
146
|
return [info.obj for info in self.collection if info.is_plugin]
|
138
147
|
|
139
148
|
@property
|
140
149
|
def plugins(self):
|
141
|
-
"""
|
142
|
-
Get all plugins. These are all classes that are on the top level and are widgets.
|
143
|
-
"""
|
150
|
+
"""Get all plugins. These are all classes that are on the top level and are widgets."""
|
144
151
|
return [info.obj for info in self.collection if info.is_widget and info.is_plugin]
|
145
152
|
|
146
153
|
@property
|
147
154
|
def widgets(self):
|
148
|
-
"""
|
149
|
-
Get all widgets. These are all classes inheriting from BECWidget.
|
150
|
-
"""
|
155
|
+
"""Get all widgets. These are all classes inheriting from BECWidget."""
|
151
156
|
return [info.obj for info in self.collection if info.is_widget]
|
152
157
|
|
153
158
|
@property
|
154
159
|
def rpc_top_level_classes(self):
|
155
|
-
"""
|
156
|
-
Get all top-level classes that are RPC-enabled. These are all classes that users can choose from.
|
157
|
-
"""
|
160
|
+
"""Get all top-level classes that are RPC-enabled. These are all classes that users can choose from."""
|
158
161
|
return [info.obj for info in self.collection if info.is_plugin and info.is_connector]
|
159
162
|
|
160
163
|
@property
|
161
164
|
def classes(self):
|
162
|
-
"""
|
163
|
-
Get all classes.
|
164
|
-
"""
|
165
|
+
"""Get all classes."""
|
165
166
|
return [info.obj for info in self.collection]
|
166
167
|
|
167
168
|
|
@@ -197,7 +198,7 @@ def get_custom_classes(repo_name: str) -> BECClassContainer:
|
|
197
198
|
if not hasattr(obj, "__module__") or obj.__module__ != module.__name__:
|
198
199
|
continue
|
199
200
|
if isinstance(obj, type):
|
200
|
-
class_info = BECClassInfo(name=name, module=
|
201
|
+
class_info = BECClassInfo(name=name, module=module.__name__, file=path, obj=obj)
|
201
202
|
if issubclass(obj, BECConnector):
|
202
203
|
class_info.is_connector = True
|
203
204
|
if issubclass(obj, BECWidget):
|
bec_widgets/utils/ui_loader.py
CHANGED
@@ -31,12 +31,9 @@ class UILoader:
|
|
31
31
|
def __init__(self, parent=None):
|
32
32
|
self.parent = parent
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
plugin_widgets = get_all_plugin_widgets()
|
39
|
-
self.custom_widgets.update(plugin_widgets)
|
34
|
+
self.custom_widgets = (
|
35
|
+
get_custom_classes("bec_widgets") + get_all_plugin_widgets()
|
36
|
+
).as_dict()
|
40
37
|
|
41
38
|
if PYSIDE6:
|
42
39
|
self.loader = self.load_ui_pyside6
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.gitlab-ci.yml,sha256=1nMYldzVk0tFkBWYTcUjumOrdSADASheWOAc0kOFDYs,9509
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=ivqg3HTaOxNbEW3bzWh9MXAkrekuGoNdj0Mj3SdRYuw,639
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=0WBTTBgn-v4VUYX03djHKwV47IUSHRDcrZreVEpXtxo,289561
|
6
6
|
LICENSE,sha256=Daeiu871NcAp8uYi4eB_qHgvypG-HX0ioRQyQxFwjeg,1531
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=m4bfcr8jJsEua1MIwebS06gdMZN4x8PzQ5cRHeWZo7I,1273
|
8
8
|
README.md,sha256=oY5Jc1uXehRASuwUJ0umin2vfkFh7tHF-LLruHTaQx0,3560
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=K4xA4pMZN1a6gYuOc9qCKFhNfFAROEwAAorG1PDHvPE,2902
|
10
10
|
.git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
|
11
11
|
.github/pull_request_template.md,sha256=F_cJXzooWMFgMGtLK-7KeGcQt0B4AYFse5oN0zQ9p6g,801
|
12
12
|
.github/ISSUE_TEMPLATE/bug_report.yml,sha256=WdRnt7HGxvsIBLzhkaOWNfg8IJQYa_oV9_F08Ym6znQ,1081
|
@@ -17,7 +17,7 @@ pyproject.toml,sha256=iSn7wp1hoYioNcBgHcMH86J2MBkCKCTj52r-BLVT18Q,2902
|
|
17
17
|
.github/scripts/pr_issue_sync/requirements.txt,sha256=bFVVn4_gJjJ-BCykMhfQZLPaG2cthrKwM_skcG9wJkU,17
|
18
18
|
.github/workflows/check_pr.yml,sha256=jKMtYBJTNRAdw_MAS4JzdKVSoNrv8nxUQMqobsYFAXw,903
|
19
19
|
.github/workflows/ci.yml,sha256=OVZt0UxN4wQInuMucuQcKsvHDiz27sLeuQRskxjtkY0,1863
|
20
|
-
.github/workflows/end2end-conda.yml,sha256=
|
20
|
+
.github/workflows/end2end-conda.yml,sha256=S9EyUoc084J0sUBg2_jgDAbvPZ9jrzEHOLZS91JF9Xc,2076
|
21
21
|
.github/workflows/formatter.yml,sha256=CdUVrRxWyVes9y-Ez3jiCJXqANPJtl6kfpGQxeWMhcQ,1694
|
22
22
|
.github/workflows/generate-cli-check.yml,sha256=b6TcK8F5Hy0sFjgXpk0w3BO9eMDZw9WysTl3P7zEPuQ,1742
|
23
23
|
.github/workflows/pytest-matrix.yml,sha256=0gL5wNPJKJF1JapqstlYNYiJ44ko05uaTD7epa7smVw,1834
|
@@ -27,7 +27,7 @@ pyproject.toml,sha256=iSn7wp1hoYioNcBgHcMH86J2MBkCKCTj52r-BLVT18Q,2902
|
|
27
27
|
bec_widgets/__init__.py,sha256=mZhbU6zfFt8-A7q_do74ie89budSevwpKZ6FKtEBdmo,170
|
28
28
|
bec_widgets/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
29
|
bec_widgets/applications/bw_launch.py,sha256=4lngXb8Ht_cvQtCwjjbAoqPNuE2V0Ja5WIPHpwgjcRI,687
|
30
|
-
bec_widgets/applications/launch_window.py,sha256=
|
30
|
+
bec_widgets/applications/launch_window.py,sha256=bYvgFqg1bw3obV7ETKhpqy5QFTEiAaBAAWfh25Yuzm4,21878
|
31
31
|
bec_widgets/assets/app_icons/BEC-General-App.png,sha256=hc2ktly53DZAbl_rE3cb-vdRa5gtdCmBEjfwm2y5P4g,447581
|
32
32
|
bec_widgets/assets/app_icons/alignment_1d.png,sha256=5VouaWieb4lVv3wUBNHaO5ovUW2Fk25aTKYQzOWy0mg,2071069
|
33
33
|
bec_widgets/assets/app_icons/auto_update.png,sha256=YKoAJTWAlWzreYvOm0BttDRFr29tulolZgKirRhAFlA,2197066
|
@@ -35,14 +35,14 @@ bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqg
|
|
35
35
|
bec_widgets/assets/app_icons/ui_loader_tile.png,sha256=qSK3XHqvnAVGV9Q0ulORcGFbXJ9LDq2uz8l9uTtMsNk,1812476
|
36
36
|
bec_widgets/assets/app_icons/widget_launch_tile.png,sha256=bWsICHFfSe9-ESUj3AwlE95dDOea-f6M-s9fBapsxB4,2252911
|
37
37
|
bec_widgets/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
-
bec_widgets/cli/client.py,sha256=
|
38
|
+
bec_widgets/cli/client.py,sha256=xbftm0CWcw5EgKlQg1f4jJ5BznXsXh34u-54sjBXW3M,93493
|
39
39
|
bec_widgets/cli/client_utils.py,sha256=F2hyt--jL53bN8NoWifNUMqwwx5FbpS6I1apERdTRzM,18114
|
40
|
-
bec_widgets/cli/generate_cli.py,sha256=
|
40
|
+
bec_widgets/cli/generate_cli.py,sha256=K_wMxo2XBUn92SnY3dSrlyUn8ax6Y20QBGCuP284DsQ,10986
|
41
41
|
bec_widgets/cli/server.py,sha256=h7QyBOOGjyrP_fxJIIOSEMc4E06cLG0JyaofjNV6oCA,5671
|
42
42
|
bec_widgets/cli/rpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
43
|
bec_widgets/cli/rpc/rpc_base.py,sha256=lqRr3IUqEKNLS_wHYrFbIr824kj6OYH6ky0Lwb-NovU,11130
|
44
44
|
bec_widgets/cli/rpc/rpc_register.py,sha256=2XBqPdMhJyWPsbV0ZVhl7YL6Yk6gh-VA8BOYi9jistM,5820
|
45
|
-
bec_widgets/cli/rpc/rpc_widget_handler.py,sha256
|
45
|
+
bec_widgets/cli/rpc/rpc_widget_handler.py,sha256=U_GhpWs8rHXGRVkdYHNeOXBV2pY2yrYAWgnivi4kc2c,1675
|
46
46
|
bec_widgets/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
47
|
bec_widgets/examples/general_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
48
|
bec_widgets/examples/general_app/general_app.py,sha256=PoFCTuA_1yqrpgthASpYFgH7JDUZTcXAPZ5h0e3XZfc,3053
|
@@ -63,7 +63,7 @@ bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U
|
|
63
63
|
bec_widgets/utils/bec_connector.py,sha256=ATOSyZqryn1QHPc7aotiDnUtzFhlj_gmcukMT_pqjHQ,19272
|
64
64
|
bec_widgets/utils/bec_designer.py,sha256=ehNl_i743rijmhPiIGNd1bihE7-l4oJzTVoa4yjPjls,5426
|
65
65
|
bec_widgets/utils/bec_dispatcher.py,sha256=y9EFIgU3JqIs7R10XnLh0I1_Skts9sbPe3ijOVJumYs,9837
|
66
|
-
bec_widgets/utils/bec_plugin_helper.py,sha256=
|
66
|
+
bec_widgets/utils/bec_plugin_helper.py,sha256=tLXEyzh0LWuRp-1XhJg32m-hUSLfRStC0YRUWKdhY5Q,3565
|
67
67
|
bec_widgets/utils/bec_signal_proxy.py,sha256=Yc08fdBEDABrowwNPSngT9-28R8FD4ml7oTL6BoMyEE,3263
|
68
68
|
bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
|
69
69
|
bec_widgets/utils/bec_widget.py,sha256=jS888GioWKIJafMq5r1YhJ4vgORqiw0qHbxeSbE0Aec,4119
|
@@ -84,7 +84,7 @@ bec_widgets/utils/name_utils.py,sha256=VEHq6lRty1yif3h1EK2nBRNQquGK-l_p-6H9Fmp6B
|
|
84
84
|
bec_widgets/utils/ophyd_kind_util.py,sha256=3azqxajYZY4crM04NqDqbEx7zPkWzZGYtWeCzfJu6UE,603
|
85
85
|
bec_widgets/utils/palette_viewer.py,sha256=9FEkDy4sDkVpgazGyk149_Qv1DzJdXX6SpzlIPKoHqc,6304
|
86
86
|
bec_widgets/utils/plot_indicator_items.py,sha256=d3NwWGMUiTJzab1w4dv0YZBJZza8ZMAVea9zdsOL7oM,9687
|
87
|
-
bec_widgets/utils/plugin_utils.py,sha256=
|
87
|
+
bec_widgets/utils/plugin_utils.py,sha256=EF2ICP9yb9S0xSc_lq5nyBly1sbZJjSOGrocPDJg0H0,7801
|
88
88
|
bec_widgets/utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
|
89
89
|
bec_widgets/utils/reference_utils.py,sha256=8pq06TOvZBZdim0G6hvPJXzVDib7ve4o-Ptvfp563nk,2859
|
90
90
|
bec_widgets/utils/round_frame.py,sha256=SLtoPi8sfJvjfK7G_a4_sRBMGivF5fTHNwMLq93-cVM,4920
|
@@ -95,7 +95,7 @@ bec_widgets/utils/settings_dialog.py,sha256=1z6noC9k6BSIGAw12DvHHiW3LmvPquaGMjWS
|
|
95
95
|
bec_widgets/utils/side_panel.py,sha256=enxcQOwJOMfD3MxgPA9mQSKSX_F6Omy2zePncYDW1FA,14193
|
96
96
|
bec_widgets/utils/thread_checker.py,sha256=rDNuA3X6KQyA7JPb67mccTg0z8YkInynLAENQDQpbuE,1607
|
97
97
|
bec_widgets/utils/toolbar.py,sha256=nQM2h5WqTmQDxlU4GMk6OyRJr-0_4VAKSbug7yOUwWY,40769
|
98
|
-
bec_widgets/utils/ui_loader.py,sha256=
|
98
|
+
bec_widgets/utils/ui_loader.py,sha256=E1tAprb5Vqc3gttANwuCaAx07paGMH6ezGbEDbb1-kE,5002
|
99
99
|
bec_widgets/utils/validator_delegate.py,sha256=Emj1WF6W8Ke1ruBWUfmHdVJpmOSPezuOt4zvQTay_44,442
|
100
100
|
bec_widgets/utils/widget_io.py,sha256=afR7i59fw2WrEQCmkH5dwhz1uNjfMPnJTIhE8NWVBsU,21552
|
101
101
|
bec_widgets/utils/widget_state_manager.py,sha256=tzrxVmnGa6IHSEdeh-R68aQ934BsuS9nLQbwYQ78J90,7651
|
@@ -404,8 +404,8 @@ bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py,sha256=O
|
|
404
404
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject,sha256=Lbi9zb6HNlIq14k6hlzR-oz6PIFShBuF7QxE6d87d64,34
|
405
405
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py,sha256=CzChz2SSETYsR8-36meqWnsXCT-FIy_J_xeU5coWDY8,1350
|
406
406
|
bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py,sha256=rMpZ1CaoucwobgPj1FuKTnt07W82bV1GaSYdoqcdMb8,521
|
407
|
-
bec_widgets-2.8.
|
408
|
-
bec_widgets-2.8.
|
409
|
-
bec_widgets-2.8.
|
410
|
-
bec_widgets-2.8.
|
411
|
-
bec_widgets-2.8.
|
407
|
+
bec_widgets-2.8.3.dist-info/METADATA,sha256=m4bfcr8jJsEua1MIwebS06gdMZN4x8PzQ5cRHeWZo7I,1273
|
408
|
+
bec_widgets-2.8.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
409
|
+
bec_widgets-2.8.3.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
410
|
+
bec_widgets-2.8.3.dist-info/licenses/LICENSE,sha256=Daeiu871NcAp8uYi4eB_qHgvypG-HX0ioRQyQxFwjeg,1531
|
411
|
+
bec_widgets-2.8.3.dist-info/RECORD,,
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|
File without changes
|