bec-widgets 0.56.1__py3-none-any.whl → 0.56.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.
- .gitlab-ci.yml +1 -1
- CHANGELOG.md +28 -30
- PKG-INFO +1 -1
- bec_widgets/cli/__init__.py +0 -7
- bec_widgets/cli/auto_updates.py +45 -13
- bec_widgets/cli/client.py +20 -0
- bec_widgets/cli/client_utils.py +11 -5
- bec_widgets/widgets/dock/dock.py +6 -2
- bec_widgets/widgets/dock/dock_area.py +8 -3
- bec_widgets/widgets/figure/figure.py +1 -1
- bec_widgets/widgets/spiral_progress_bar/ring.py +2 -2
- bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py +1 -2
- {bec_widgets-0.56.1.dist-info → bec_widgets-0.56.3.dist-info}/METADATA +1 -1
- {bec_widgets-0.56.1.dist-info → bec_widgets-0.56.3.dist-info}/RECORD +38 -28
- docs/_static/custom.css +170 -0
- docs/{developer/reference.md → api_reference/api_reference.md} +3 -1
- docs/assets/apps_48dp.svg +1 -0
- docs/assets/display_settings_48dp.svg +1 -0
- docs/assets/index_api.svg +97 -0
- docs/assets/index_contribute.svg +76 -0
- docs/assets/index_getting_started.svg +66 -0
- docs/assets/index_user_guide.svg +67 -0
- docs/assets/rocket_launch_48dp.svg +1 -0
- docs/conf.py +3 -3
- docs/developer/developer.md +0 -8
- docs/index.md +39 -8
- docs/user/api_reference/api_reference.md +11 -0
- docs/user/{apps.md → applications/applications.md} +1 -1
- docs/user/getting_started/getting_started.md +12 -0
- docs/user/{installation.md → getting_started/installation.md} +1 -1
- docs/user/user.md +51 -22
- docs/user/{widgets.md → widgets/widgets.md} +3 -3
- pyproject.toml +1 -1
- tests/end-2-end/test_bec_dock_rpc_e2e.py +73 -5
- tests/unit_tests/test_client_utils.py +2 -2
- tests/unit_tests/test_spiral_progress_bar.py +5 -5
- {bec_widgets-0.56.1.dist-info → bec_widgets-0.56.3.dist-info}/WHEEL +0 -0
- {bec_widgets-0.56.1.dist-info → bec_widgets-0.56.3.dist-info}/licenses/LICENSE +0 -0
.gitlab-ci.yml
CHANGED
CHANGELOG.md
CHANGED
@@ -2,6 +2,34 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
## v0.56.3 (2024-06-05)
|
6
|
+
|
7
|
+
### Ci
|
8
|
+
|
9
|
+
* ci: increased verbosity for e2e tests ([`4af1abe`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4af1abe4e15b62d2f7e70bf987a1a7d8694ef4d5))
|
10
|
+
|
11
|
+
### Fix
|
12
|
+
|
13
|
+
* fix: fixed support for auto updates ([`131f49d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/131f49da8ea65af4d44b50e81c1acfc29cd92093))
|
14
|
+
|
15
|
+
|
16
|
+
## v0.56.2 (2024-06-05)
|
17
|
+
|
18
|
+
### Documentation
|
19
|
+
|
20
|
+
* docs: restructured docs layout ([`3c9181d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3c9181d93d68faa4efb3b91c486ca9ca935975a0))
|
21
|
+
|
22
|
+
### Fix
|
23
|
+
|
24
|
+
* fix(bar): ring saves current value in config ([`9648e3e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9648e3ea96a4109be6be694d855151ed6d3ad661))
|
25
|
+
|
26
|
+
* fix(dock): dock saves configs of all children widgets ([`4be756a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4be756a8676421c3a3451458995232407295df84))
|
27
|
+
|
28
|
+
* fix(dock_area): save/restore state is saved in config ([`46face0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/46face0ee59122f04cb383da685a6658beeeb389))
|
29
|
+
|
30
|
+
* fix(figure): added correct types of configs to subplot widgets ([`6f3b1ea`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6f3b1ea985c18929b9bab54239eeb600f03b274a))
|
31
|
+
|
32
|
+
|
5
33
|
## v0.56.1 (2024-06-04)
|
6
34
|
|
7
35
|
### Fix
|
@@ -145,33 +173,3 @@
|
|
145
173
|
|
146
174
|
|
147
175
|
## v0.51.0 (2024-05-07)
|
148
|
-
|
149
|
-
### Build
|
150
|
-
|
151
|
-
* build(cli): changed repo name to bec_widgets ([`799ea55`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/799ea554de9a7f3720d100be4886a63f02c6a390))
|
152
|
-
|
153
|
-
* build(setup): fakeredis added to dev env ([`df32350`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/df323504fea024a97304d96c2e39e61450714069))
|
154
|
-
|
155
|
-
* build(setup): PyQt6 version is set to 6.7 ([`0ab8aa3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0ab8aa3a2fe51b5c38b25fca44c1c422bb42478d))
|
156
|
-
|
157
|
-
### Ci
|
158
|
-
|
159
|
-
* ci: added rule for parent-child pipelines ([`e085125`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e0851250eecb85503db929d37f75d2ba366308a6))
|
160
|
-
|
161
|
-
### Feature
|
162
|
-
|
163
|
-
* feat(utils): added plugin helper to find and load ([`5ece269`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5ece269adb0e9b0c2a468f1dfbaa6212e86d3561))
|
164
|
-
|
165
|
-
|
166
|
-
## v0.50.2 (2024-04-30)
|
167
|
-
|
168
|
-
### Fix
|
169
|
-
|
170
|
-
* fix: 'disconnect_slot' has to be symmetric with 'connect_slot' regarding QtThreadSafeCallback ([`0dfcaa4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0dfcaa4b708948af0a40ec7cf34d03ff1e96ffac))
|
171
|
-
|
172
|
-
|
173
|
-
## v0.50.1 (2024-04-29)
|
174
|
-
|
175
|
-
### Fix
|
176
|
-
|
177
|
-
* fix(cli): BECFigure takes the port to connect to redis from the current BECClient, supporting plugins ([`57cb136`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/57cb136a098e87a452414bf44e627edb562f6799))
|
PKG-INFO
CHANGED
bec_widgets/cli/__init__.py
CHANGED
@@ -1,8 +1 @@
|
|
1
|
-
from bec_lib.utils.import_utils import lazy_import_from
|
2
|
-
|
3
|
-
# from .auto_updates import AutoUpdates, ScanInfo
|
4
|
-
# TODO: put back when Pydantic gets faster
|
5
|
-
AutoUpdates, ScanInfo = lazy_import_from(
|
6
|
-
"bec_widgets.cli.auto_updates", ("AutoUpdates", "ScanInfo")
|
7
|
-
)
|
8
1
|
from .client import BECDockArea, BECFigure
|
bec_widgets/cli/auto_updates.py
CHANGED
@@ -5,7 +5,7 @@ from typing import TYPE_CHECKING
|
|
5
5
|
from pydantic import BaseModel
|
6
6
|
|
7
7
|
if TYPE_CHECKING:
|
8
|
-
from .client import BECFigure
|
8
|
+
from .client import BECDockArea, BECFigure
|
9
9
|
|
10
10
|
|
11
11
|
class ScanInfo(BaseModel):
|
@@ -18,9 +18,20 @@ class ScanInfo(BaseModel):
|
|
18
18
|
|
19
19
|
|
20
20
|
class AutoUpdates:
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
create_default_dock: bool = False
|
22
|
+
enabled: bool = False
|
23
|
+
dock_name: str = None
|
24
|
+
|
25
|
+
def __init__(self, gui: BECDockArea):
|
26
|
+
self.gui = gui
|
27
|
+
|
28
|
+
def start_default_dock(self):
|
29
|
+
"""
|
30
|
+
Create a default dock for the auto updates.
|
31
|
+
"""
|
32
|
+
dock = self.gui.add_dock("default_figure")
|
33
|
+
dock.add_widget_bec("BECFigure")
|
34
|
+
self.dock_name = "default_figure"
|
24
35
|
|
25
36
|
@staticmethod
|
26
37
|
def get_scan_info(msg) -> ScanInfo:
|
@@ -44,6 +55,18 @@ class AutoUpdates:
|
|
44
55
|
status=status,
|
45
56
|
)
|
46
57
|
|
58
|
+
def get_default_figure(self) -> BECFigure | None:
|
59
|
+
"""
|
60
|
+
Get the default figure from the GUI.
|
61
|
+
"""
|
62
|
+
dock = self.gui.panels.get(self.dock_name, [])
|
63
|
+
if not dock:
|
64
|
+
return None
|
65
|
+
widgets = dock.widget_list
|
66
|
+
if not widgets:
|
67
|
+
return None
|
68
|
+
return widgets[0]
|
69
|
+
|
47
70
|
def run(self, msg):
|
48
71
|
"""
|
49
72
|
Run the update function if enabled.
|
@@ -86,33 +109,42 @@ class AutoUpdates:
|
|
86
109
|
"""
|
87
110
|
Simple line scan.
|
88
111
|
"""
|
112
|
+
fig = self.get_default_figure()
|
113
|
+
if not fig:
|
114
|
+
return
|
89
115
|
dev_x = info.scan_report_devices[0]
|
90
|
-
dev_y = self.get_selected_device(info.monitored_devices, self.
|
116
|
+
dev_y = self.get_selected_device(info.monitored_devices, self.gui.selected_device)
|
91
117
|
if not dev_y:
|
92
118
|
return
|
93
|
-
|
94
|
-
plt =
|
119
|
+
fig.clear_all()
|
120
|
+
plt = fig.plot(x_name=dev_x, y_name=dev_y)
|
95
121
|
plt.set(title=f"Scan {info.scan_number}", x_label=dev_x, y_label=dev_y)
|
96
122
|
|
97
123
|
def simple_grid_scan(self, info: ScanInfo) -> None:
|
98
124
|
"""
|
99
125
|
Simple grid scan.
|
100
126
|
"""
|
127
|
+
fig = self.get_default_figure()
|
128
|
+
if not fig:
|
129
|
+
return
|
101
130
|
dev_x = info.scan_report_devices[0]
|
102
131
|
dev_y = info.scan_report_devices[1]
|
103
|
-
dev_z = self.get_selected_device(info.monitored_devices, self.
|
104
|
-
|
105
|
-
plt =
|
132
|
+
dev_z = self.get_selected_device(info.monitored_devices, self.gui.selected_device)
|
133
|
+
fig.clear_all()
|
134
|
+
plt = fig.plot(x_name=dev_x, y_name=dev_y, z_name=dev_z, label=f"Scan {info.scan_number}")
|
106
135
|
plt.set(title=f"Scan {info.scan_number}", x_label=dev_x, y_label=dev_y)
|
107
136
|
|
108
137
|
def best_effort(self, info: ScanInfo) -> None:
|
109
138
|
"""
|
110
139
|
Best effort scan.
|
111
140
|
"""
|
141
|
+
fig = self.get_default_figure()
|
142
|
+
if not fig:
|
143
|
+
return
|
112
144
|
dev_x = info.scan_report_devices[0]
|
113
|
-
dev_y = self.get_selected_device(info.monitored_devices, self.
|
145
|
+
dev_y = self.get_selected_device(info.monitored_devices, self.gui.selected_device)
|
114
146
|
if not dev_y:
|
115
147
|
return
|
116
|
-
|
117
|
-
plt =
|
148
|
+
fig.clear_all()
|
149
|
+
plt = fig.plot(x_name=dev_x, y_name=dev_y, label=f"Scan {info.scan_number}")
|
118
150
|
plt.set(title=f"Scan {info.scan_number}", x_label=dev_x, y_label=dev_y)
|
bec_widgets/cli/client.py
CHANGED
@@ -1410,6 +1410,16 @@ class BECMotorMap(RPCBase):
|
|
1410
1410
|
|
1411
1411
|
|
1412
1412
|
class BECDock(RPCBase):
|
1413
|
+
@property
|
1414
|
+
@rpc_call
|
1415
|
+
def config_dict(self) -> "dict":
|
1416
|
+
"""
|
1417
|
+
Get the configuration of the widget.
|
1418
|
+
|
1419
|
+
Returns:
|
1420
|
+
dict: The configuration of the widget.
|
1421
|
+
"""
|
1422
|
+
|
1413
1423
|
@property
|
1414
1424
|
@rpc_call
|
1415
1425
|
def rpc_id(self) -> "str":
|
@@ -1528,6 +1538,16 @@ class BECDock(RPCBase):
|
|
1528
1538
|
|
1529
1539
|
|
1530
1540
|
class BECDockArea(RPCBase, BECGuiClientMixin):
|
1541
|
+
@property
|
1542
|
+
@rpc_call
|
1543
|
+
def config_dict(self) -> "dict":
|
1544
|
+
"""
|
1545
|
+
Get the configuration of the widget.
|
1546
|
+
|
1547
|
+
Returns:
|
1548
|
+
dict: The configuration of the widget.
|
1549
|
+
"""
|
1550
|
+
|
1531
1551
|
@property
|
1532
1552
|
@rpc_call
|
1533
1553
|
def panels(self) -> "dict":
|
bec_widgets/cli/client_utils.py
CHANGED
@@ -17,10 +17,13 @@ from bec_lib.utils.import_utils import isinstance_based_on_class_name, lazy_impo
|
|
17
17
|
from qtpy.QtCore import QCoreApplication
|
18
18
|
|
19
19
|
import bec_widgets.cli.client as client
|
20
|
+
from bec_widgets.cli.auto_updates import AutoUpdates
|
20
21
|
|
21
22
|
if TYPE_CHECKING:
|
22
23
|
from bec_lib.device import DeviceBase
|
23
24
|
|
25
|
+
from bec_widgets.cli.client import BECDockArea, BECFigure
|
26
|
+
|
24
27
|
messages = lazy_import("bec_lib.messages")
|
25
28
|
# from bec_lib.connector import MessageObject
|
26
29
|
MessageObject = lazy_import_from("bec_lib.connector", ("MessageObject",))
|
@@ -62,16 +65,19 @@ class BECGuiClientMixin:
|
|
62
65
|
def __init__(self, **kwargs) -> None:
|
63
66
|
super().__init__(**kwargs)
|
64
67
|
self._process = None
|
65
|
-
self.
|
68
|
+
self.auto_updates = self._get_update_script()
|
66
69
|
self._target_endpoint = MessageEndpoints.scan_status()
|
67
70
|
self._selected_device = None
|
68
71
|
self.stderr_output = []
|
69
72
|
|
70
|
-
def _get_update_script(self) -> AutoUpdates:
|
73
|
+
def _get_update_script(self) -> AutoUpdates | None:
|
71
74
|
eps = imd.entry_points(group="bec.widgets.auto_updates")
|
72
75
|
for ep in eps:
|
73
76
|
if ep.name == "plugin_widgets_update":
|
74
|
-
|
77
|
+
try:
|
78
|
+
return ep.load()(gui=self)
|
79
|
+
except Exception as e:
|
80
|
+
print(f"Error loading auto update script from plugin: {str(e)}")
|
75
81
|
return None
|
76
82
|
|
77
83
|
@property
|
@@ -97,7 +103,7 @@ class BECGuiClientMixin:
|
|
97
103
|
|
98
104
|
@staticmethod
|
99
105
|
def _handle_msg_update(msg: MessageObject, parent: BECGuiClientMixin) -> None:
|
100
|
-
if parent.
|
106
|
+
if parent.auto_updates is not None:
|
101
107
|
# pylint: disable=protected-access
|
102
108
|
parent._update_script_msg_parser(msg.value)
|
103
109
|
|
@@ -105,7 +111,7 @@ class BECGuiClientMixin:
|
|
105
111
|
if isinstance(msg, messages.ScanStatusMessage):
|
106
112
|
if not self.gui_is_alive():
|
107
113
|
return
|
108
|
-
self.
|
114
|
+
self.auto_updates.run(msg)
|
109
115
|
|
110
116
|
def show(self) -> None:
|
111
117
|
"""
|
bec_widgets/widgets/dock/dock.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
from typing import TYPE_CHECKING, Literal, Optional
|
3
|
+
from typing import TYPE_CHECKING, Any, Literal, Optional
|
4
4
|
|
5
5
|
from pydantic import Field
|
6
6
|
from pyqtgraph.dockarea import Dock
|
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
|
15
15
|
|
16
16
|
|
17
17
|
class DockConfig(ConnectionConfig):
|
18
|
-
widgets: dict[str,
|
18
|
+
widgets: dict[str, Any] = Field({}, description="The widgets in the dock.")
|
19
19
|
position: Literal["bottom", "top", "left", "right", "above", "below"] = Field(
|
20
20
|
"bottom", description="The position of the dock."
|
21
21
|
)
|
@@ -26,6 +26,7 @@ class DockConfig(ConnectionConfig):
|
|
26
26
|
|
27
27
|
class BECDock(BECConnector, Dock):
|
28
28
|
USER_ACCESS = [
|
29
|
+
"config_dict",
|
29
30
|
"rpc_id",
|
30
31
|
"widget_list",
|
31
32
|
"show_title_bar",
|
@@ -179,6 +180,7 @@ class BECDock(BECConnector, Dock):
|
|
179
180
|
|
180
181
|
widget = RPCWidgetHandler.create_widget(widget_type)
|
181
182
|
self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
|
183
|
+
self.config.widgets[widget.gui_id] = widget.config
|
182
184
|
|
183
185
|
return widget
|
184
186
|
|
@@ -209,6 +211,7 @@ class BECDock(BECConnector, Dock):
|
|
209
211
|
self.layout_manager.shift_widgets(shift, start_row=row)
|
210
212
|
|
211
213
|
self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
|
214
|
+
self.config.widgets[widget.gui_id] = widget.config
|
212
215
|
|
213
216
|
def move_widget(self, widget: QWidget, new_row: int, new_col: int):
|
214
217
|
"""
|
@@ -242,6 +245,7 @@ class BECDock(BECConnector, Dock):
|
|
242
245
|
"""
|
243
246
|
widget = self.rpc_register.get_rpc_by_id(widget_rpc_id)
|
244
247
|
self.layout.removeWidget(widget)
|
248
|
+
self.config.widgets.pop(widget_rpc_id, None)
|
245
249
|
widget.close()
|
246
250
|
|
247
251
|
def remove(self):
|
@@ -16,10 +16,14 @@ from .dock import BECDock, DockConfig
|
|
16
16
|
|
17
17
|
class DockAreaConfig(ConnectionConfig):
|
18
18
|
docks: dict[str, DockConfig] = Field({}, description="The docks in the dock area.")
|
19
|
+
docks_state: Optional[dict] = Field(
|
20
|
+
None, description="The state of the docks in the dock area."
|
21
|
+
)
|
19
22
|
|
20
23
|
|
21
24
|
class BECDockArea(BECConnector, DockArea):
|
22
25
|
USER_ACCESS = [
|
26
|
+
"config_dict",
|
23
27
|
"panels",
|
24
28
|
"save_state",
|
25
29
|
"remove_dock",
|
@@ -81,7 +85,7 @@ class BECDockArea(BECConnector, DockArea):
|
|
81
85
|
extra(str): Extra docks that are in the dockarea but that are not mentioned in state will be added to the bottom of the dockarea, unless otherwise specified by the extra argument.
|
82
86
|
"""
|
83
87
|
if state is None:
|
84
|
-
state = self.
|
88
|
+
state = self.config.docks_state
|
85
89
|
self.restoreState(state, missing=missing, extra=extra)
|
86
90
|
|
87
91
|
def save_state(self) -> dict:
|
@@ -91,8 +95,9 @@ class BECDockArea(BECConnector, DockArea):
|
|
91
95
|
Returns:
|
92
96
|
dict: The state of the dock area.
|
93
97
|
"""
|
94
|
-
|
95
|
-
|
98
|
+
last_state = self.saveState()
|
99
|
+
self.config.docks_state = last_state
|
100
|
+
return last_state
|
96
101
|
|
97
102
|
def remove_dock(self, name: str):
|
98
103
|
"""
|
@@ -26,7 +26,7 @@ class FigureConfig(ConnectionConfig):
|
|
26
26
|
theme: Literal["dark", "light"] = Field("dark", description="The theme of the figure widget.")
|
27
27
|
num_cols: int = Field(1, description="The number of columns in the figure widget.")
|
28
28
|
num_rows: int = Field(1, description="The number of rows in the figure widget.")
|
29
|
-
widgets: dict[str, SubplotConfig] = Field(
|
29
|
+
widgets: dict[str, Waveform1DConfig | ImageConfig | MotorMapConfig | SubplotConfig] = Field(
|
30
30
|
{}, description="The list of widgets to be added to the figure widget."
|
31
31
|
)
|
32
32
|
|
@@ -36,6 +36,7 @@ class RingConnections(BaseModel):
|
|
36
36
|
|
37
37
|
|
38
38
|
class RingConfig(ConnectionConfig):
|
39
|
+
value: int | float | None = Field(0, description="Value for the progress bars.")
|
39
40
|
direction: int | None = Field(
|
40
41
|
-1, description="Direction of the progress bars. -1 for clockwise, 1 for counter-clockwise."
|
41
42
|
)
|
@@ -102,7 +103,6 @@ class Ring(BECConnector):
|
|
102
103
|
self.background_color = None
|
103
104
|
self.start_position = None
|
104
105
|
self.config = config
|
105
|
-
self.value = 0
|
106
106
|
self.RID = None
|
107
107
|
self._init_config_params()
|
108
108
|
|
@@ -114,7 +114,7 @@ class Ring(BECConnector):
|
|
114
114
|
self.set_connections(self.config.connections.slot, self.config.connections.endpoint)
|
115
115
|
|
116
116
|
def set_value(self, value: int | float):
|
117
|
-
self.value = round(
|
117
|
+
self.config.value = round(
|
118
118
|
max(self.config.min_value, min(self.config.max_value, value)), self.config.precision
|
119
119
|
)
|
120
120
|
|
@@ -115,7 +115,6 @@ class SpiralProgressBar(BECConnector, QWidget):
|
|
115
115
|
self.entry_validator = EntryValidator(self.dev)
|
116
116
|
|
117
117
|
self.RID = None
|
118
|
-
self.values = None
|
119
118
|
|
120
119
|
# For updating bar behaviour
|
121
120
|
self._auto_updates = True
|
@@ -544,7 +543,7 @@ class SpiralProgressBar(BECConnector, QWidget):
|
|
544
543
|
pen = QtGui.QPen(ring.color, ring.config.line_width, QtCore.Qt.SolidLine)
|
545
544
|
pen.setCapStyle(QtCore.Qt.RoundCap)
|
546
545
|
painter.setPen(pen)
|
547
|
-
proportion = (ring.value - ring.config.min_value) / (
|
546
|
+
proportion = (ring.config.value - ring.config.min_value) / (
|
548
547
|
(ring.config.max_value - ring.config.min_value) + 1e-3
|
549
548
|
)
|
550
549
|
angle = int(proportion * 360 * 16 * ring.config.direction)
|
@@ -1,12 +1,12 @@
|
|
1
1
|
.gitignore,sha256=cMQ1MLmnoR88aMCCJwUyfoTnufzl4-ckmHtlFUqHcT4,3253
|
2
|
-
.gitlab-ci.yml,sha256=
|
2
|
+
.gitlab-ci.yml,sha256=RF2JeGh8tG09DyAOwEu991IZy3C8Vm6lI8O_4Dr9B9Q,12239
|
3
3
|
.pylintrc,sha256=OstrgmEyP0smNFBKoIN5_26-UmNZgMHnbjvAWX0UrLs,18535
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=kanSLoK5uphXdlmpcQqyPg1Z31HfUlC-tbK4nmYvz8o,6924
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=V34V-R1GQv2uDyzy9qDYTnNNe2dbkeeDVpFI-Q8GSkU,1135
|
8
8
|
README.md,sha256=y4jB6wvArS7N8_iTbKWnSM_oRAqLA2GqgzUR-FMh5sU,2645
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=zn3vc-ka-y-TAwav3-etEpelzU-jsqo1KOzt55_6Ucw,1803
|
10
10
|
.git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
|
11
11
|
.gitlab/issue_templates/bug_report_template.md,sha256=gAuyEwl7XlnebBrkiJ9AqffSNOywmr8vygUFWKTuQeI,386
|
12
12
|
.gitlab/issue_templates/documentation_update_template.md,sha256=FHLdb3TS_D9aL4CYZCjyXSulbaW5mrN2CmwTaeLPbNw,860
|
@@ -15,10 +15,10 @@ pyproject.toml,sha256=FfsH75R3b_wXYFyNh22RBMlAabKycZ7JpBrm3_fvsGo,1803
|
|
15
15
|
bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
bec_widgets/assets/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
|
17
17
|
bec_widgets/assets/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
|
18
|
-
bec_widgets/cli/__init__.py,sha256=
|
19
|
-
bec_widgets/cli/auto_updates.py,sha256=
|
20
|
-
bec_widgets/cli/client.py,sha256=
|
21
|
-
bec_widgets/cli/client_utils.py,sha256=
|
18
|
+
bec_widgets/cli/__init__.py,sha256=tLD8HWgyURhMjYlKZ43pBu-qvGD1LI5o3n3rEieg-70,43
|
19
|
+
bec_widgets/cli/auto_updates.py,sha256=RFc9sbNE9Ec8K3U1DSrLzwUweM3W51Lmcp9D2gSt2e4,4696
|
20
|
+
bec_widgets/cli/client.py,sha256=tQIaQcNnOkF3M-Ym4_U7vMwpYWgVPEGAJY4ibnlPLgM,52909
|
21
|
+
bec_widgets/cli/client_utils.py,sha256=gxa9TpYCWa0a7jsrMaWv_FQOnfeqP-xht8PYbhcEgys,10802
|
22
22
|
bec_widgets/cli/generate_cli.py,sha256=tBt-F4Xccg9Pj2zuDEGHd0Ho1fKLfCf3PuSa8KmelQk,4431
|
23
23
|
bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
|
24
24
|
bec_widgets/cli/rpc_wigdet_handler.py,sha256=OXHoiDFJPzbQ5RO0bzIX5aUXeMMlJTwAiTmB0_7Chj4,913
|
@@ -48,10 +48,10 @@ bec_widgets/utils/widget_io.py,sha256=f36198CvT_EzWQ_cg2G-4tRRsaMdJ3yVqsZWKJCQEf
|
|
48
48
|
bec_widgets/utils/yaml_dialog.py,sha256=cMVif-39SB9WjwGH5FWBJcFs4tnfFJFs5cacydRyhy0,1853
|
49
49
|
bec_widgets/widgets/__init__.py,sha256=LKgIuY3CI-NHCa_bY9pThYhxLH0MHDo8iNEJDDVIVmw,172
|
50
50
|
bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
|
51
|
-
bec_widgets/widgets/dock/dock.py,sha256=
|
52
|
-
bec_widgets/widgets/dock/dock_area.py,sha256=
|
51
|
+
bec_widgets/widgets/dock/dock.py,sha256=fUb8VTYU2yS5N5KOUf1X1m_F1kpDullX3m71llRbBP8,8653
|
52
|
+
bec_widgets/widgets/dock/dock_area.py,sha256=8E-rBZxM7pE423jPaXMRKb1YGlAR9oAQvJubNDpemSI,7361
|
53
53
|
bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
|
54
|
-
bec_widgets/widgets/figure/figure.py,sha256=
|
54
|
+
bec_widgets/widgets/figure/figure.py,sha256=OzeKZme89JnzMcKT1sACnyw951EtRoSUALl58upY6b4,29762
|
55
55
|
bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
56
|
bec_widgets/widgets/figure/plots/plot_base.py,sha256=oNUXEe94bD0_fVu-HPMRaoAuwPMW0DOAN8vvOeRz254,8513
|
57
57
|
bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -80,32 +80,42 @@ bec_widgets/widgets/motor_control/selection/selection.ui,sha256=vXXpvNWuL6xyHhW7
|
|
80
80
|
bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
|
81
81
|
bec_widgets/widgets/scan_control/scan_control.py,sha256=B5n2U2iVtTCY3Tx93JyBqzGCDCmWhWwAOhbPelLI-bs,17168
|
82
82
|
bec_widgets/widgets/spiral_progress_bar/__init__.py,sha256=4efbtcqCToMIw5bkQrTzy2TzuBCXvlhuUPh1bYC_Yzg,51
|
83
|
-
bec_widgets/widgets/spiral_progress_bar/ring.py,sha256=
|
84
|
-
bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py,sha256=
|
83
|
+
bec_widgets/widgets/spiral_progress_bar/ring.py,sha256=_wUIZOZ_UZaI3U9-s-VS5v-yv5NBPB991WoXunNr1jI,7077
|
84
|
+
bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py,sha256=AjQsZDEqPlTn0kE4xkYKOj2ae5vJ9gW-k3yz1Y32vsY,22543
|
85
85
|
bec_widgets/widgets/toolbar/__init__.py,sha256=d-TP4_cr_VbpwreMM4ePnfZ5YXsEPQ45ibEf75nuGoE,36
|
86
86
|
bec_widgets/widgets/toolbar/toolbar.py,sha256=e0zCD_0q7K4NVhrzD8001Qvfxt-VhqHTgofchS9NgCM,5125
|
87
87
|
docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
|
88
|
-
docs/conf.py,sha256=
|
89
|
-
docs/index.md,sha256=
|
88
|
+
docs/conf.py,sha256=HxLxupNGu0Smhwn57g1kFdjZzFuaWVREgRJKhT1zi2k,2464
|
89
|
+
docs/index.md,sha256=8ZCgaLIbJsYvt-jwi--QxsNwnK4-k3rejIeOOLclG40,1101
|
90
90
|
docs/make.bat,sha256=vKazJE8RW49Cy8K7hm8QYbletvAd8YkeKsaPA_dWnXs,800
|
91
91
|
docs/requirements.txt,sha256=SbcWrLYX6tEZNMCUETgsE50Y7VioR1VX6YCeifuJWEc,140
|
92
|
+
docs/_static/custom.css,sha256=v4Nk7r8LZslhOV8RaSUb15bG4miwiZ4-kZyXBLnSyms,13487
|
92
93
|
docs/_templates/custom-class-template.rst,sha256=HPuPaGJob2zXlWOl5FmA-hAZRbUTGQmdqo3HS1iIFog,711
|
93
94
|
docs/_templates/custom-module-template.rst,sha256=MXYXAz06HP_mbblO--iFwL08xROmSBo7U4O-hPbMcZU,1228
|
94
|
-
docs/
|
95
|
-
docs/
|
95
|
+
docs/api_reference/api_reference.md,sha256=D2l5H4fd50uc55ShTFS0JhtDYCma01dIX69oHKN-K2w,167
|
96
|
+
docs/assets/apps_48dp.svg,sha256=9lJkkEQi-thzy_bXeFKyqJLaohmlTzAZJ1Lccw585jg,292
|
97
|
+
docs/assets/display_settings_48dp.svg,sha256=-K7ZhJdpt7jZA8NSIGVIhMOm0fK18rWHnwlli5pn6qs,568
|
98
|
+
docs/assets/index_api.svg,sha256=CeYPwqYps-ygfwA6_frNER4wV3Q7EGoW-ltlRaCOOpM,3519
|
99
|
+
docs/assets/index_contribute.svg,sha256=OCjvYBw_JhcY_D5Zd7f1MctQvq1YNalYlqPNwB1XBhs,2528
|
100
|
+
docs/assets/index_getting_started.svg,sha256=Www1OXmauYlouZD51AR6-VG2vxrEig8-jjuDPhzkNxc,3977
|
101
|
+
docs/assets/index_user_guide.svg,sha256=sRjKwOHVJStBYIQUFVcnfmbeXd2qAp0HYjleSp66XCI,6429
|
102
|
+
docs/assets/rocket_launch_48dp.svg,sha256=pdrPrBcKWUa5OlgWKM0B6TA6qAW7E57d7C7YW2r1OT8,1070
|
103
|
+
docs/developer/developer.md,sha256=7Z6sfkk_7BgwZ2vaX4z5_cJrs0miyeAYSGpqMbyBmOI,415
|
96
104
|
docs/introduction/introduction.md,sha256=wp7jmhkUtJnSnEnmIAZGUcau_3-5e5-FohvZb63khw4,1432
|
97
|
-
docs/user/apps.md,sha256=qD-thmWqP9-m_Jq6peZCDhCXNJO-8TUIt4DWUQI3Dg4,139
|
98
105
|
docs/user/customisation.md,sha256=Og0NuUsTs8HdwKtpHnycGmH8wCqOeYgj2ozlYRJ-Drk,249
|
99
|
-
docs/user/
|
100
|
-
docs/user/
|
101
|
-
docs/user/
|
106
|
+
docs/user/user.md,sha256=uCTcjclIi6rdjYRQebko6bWFEVsjyfshsVU3BDYrC-Y,1403
|
107
|
+
docs/user/api_reference/api_reference.md,sha256=q2Imc48Rq6GcAP0R4bS3KuW5ptZZdsV4wxGJb3JJQHg,174
|
108
|
+
docs/user/applications/applications.md,sha256=hs8WKVuxBENV2Q7m4wN8wmSI_B3JBYrSYS1IYdbyoWg,147
|
109
|
+
docs/user/getting_started/getting_started.md,sha256=BagVhtCSoLgYlVaaYOep3KT5r_8DjtQKYj2g-PoU7uw,346
|
110
|
+
docs/user/getting_started/installation.md,sha256=Rt7O2VI5LRrrRpru1YSb8KAd92znFhHJFs7vhpmHIXQ,1239
|
102
111
|
docs/user/widgets/motor.gif,sha256=FtaWdRHx4UZaGJPpq8LNhMMgX4PFcAB6IZ93JCMEh_w,2280719
|
103
112
|
docs/user/widgets/scatter_2D.gif,sha256=yHpsuAUseMafJjI_J5BcOhmE3nu9VFn_Xm9XHzJaH5I,13188862
|
104
113
|
docs/user/widgets/w1D.gif,sha256=tuHbleJpl6bJFNNC2OdndF5LF7IyfvlkFCMGZajrQPs,622773
|
114
|
+
docs/user/widgets/widgets.md,sha256=vIfilXMyE1iPQMQXGH8wEjXWsFI6GPI0Cn9VQg5lLwI,1879
|
105
115
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
106
116
|
tests/end-2-end/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
117
|
tests/end-2-end/conftest.py,sha256=b5Yebbj8C1-IcXq23XGbOnXF0kOZD_Po46Z-p4cBwfs,1346
|
108
|
-
tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=
|
118
|
+
tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=E2XR6cgmyrHknbe-97LhuSAGlsPguc5VOQ2-Q5Apvm0,9843
|
109
119
|
tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=X8lQLx2NsB6-nU61IhVtAw1-pJ4A2qFgx5PxOWC0V7Q,5527
|
110
120
|
tests/end-2-end/test_rpc_register_e2e.py,sha256=M7sSq3us2yQIW5tAIFOFfBULatZTQNLdt0frh1bINts,1595
|
111
121
|
tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -116,14 +126,14 @@ tests/unit_tests/test_bec_dispatcher.py,sha256=rYPiRizHaswhGZw55IBMneDFxmPiCCLAZ
|
|
116
126
|
tests/unit_tests/test_bec_dock.py,sha256=gvtNkkCPrDFY_1qZ53ZXChdgmQFSwwQrr1VeZC5ybKc,3610
|
117
127
|
tests/unit_tests/test_bec_figure.py,sha256=xYAftY8bI_EH-SlNPD0Tjd7FS_47ouZ1E4hrpjPt7O4,8002
|
118
128
|
tests/unit_tests/test_bec_motor_map.py,sha256=AfD_9-x6VV3TPnkQgNfFYRndPHDsGx-a_YknFeDr6hc,4588
|
119
|
-
tests/unit_tests/test_client_utils.py,sha256=
|
129
|
+
tests/unit_tests/test_client_utils.py,sha256=eViJ1Tz-HX9TkMvQH6W8cO-c3_1I8bUc4_Yen6LOc0E,830
|
120
130
|
tests/unit_tests/test_crosshair.py,sha256=3OMAJ2ZaISYXMOtkXf1rPdy94vCr8njeLi6uHblBL9Q,5045
|
121
131
|
tests/unit_tests/test_generate_cli_client.py,sha256=J7CFoO67txGu_u1Mwk32EejRX204FRuvmVg_yhAr1WM,2397
|
122
132
|
tests/unit_tests/test_motor_control.py,sha256=NBekcGALo5mYkuyBJvBhvJkWiQDV82hI4GmsobRzjTI,20770
|
123
133
|
tests/unit_tests/test_plot_base.py,sha256=bOdlgAxh9oKk5PwiQ_MSFmzr44uJ61Tlg242RCIhl5c,2610
|
124
134
|
tests/unit_tests/test_rpc_register.py,sha256=hECjZEimd440mwRrO0rg7L3PKN7__3DgjmESN6wx3bo,1179
|
125
135
|
tests/unit_tests/test_scan_control.py,sha256=7dtGpE0g4FqUhhQeCkyJl-9o7NH3DFZJgEaqDmBYbBc,7551
|
126
|
-
tests/unit_tests/test_spiral_progress_bar.py,sha256=
|
136
|
+
tests/unit_tests/test_spiral_progress_bar.py,sha256=yak3N9-TmEM3lQZPSROL4cAx9mior__se1XADlMScks,12418
|
127
137
|
tests/unit_tests/test_waveform1d.py,sha256=Xi9TdZmxoMmmje37lq03FG9lytEdZCTUEjtOC0LvZjA,15263
|
128
138
|
tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
|
129
139
|
tests/unit_tests/test_yaml_dialog.py,sha256=HNrqferkdg02-9ieOhhI2mr2Qvt7GrYgXmQ061YCTbg,5794
|
@@ -132,7 +142,7 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
|
|
132
142
|
tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
|
133
143
|
tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
134
144
|
tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
|
135
|
-
bec_widgets-0.56.
|
136
|
-
bec_widgets-0.56.
|
137
|
-
bec_widgets-0.56.
|
138
|
-
bec_widgets-0.56.
|
145
|
+
bec_widgets-0.56.3.dist-info/METADATA,sha256=V34V-R1GQv2uDyzy9qDYTnNNe2dbkeeDVpFI-Q8GSkU,1135
|
146
|
+
bec_widgets-0.56.3.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
|
147
|
+
bec_widgets-0.56.3.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
148
|
+
bec_widgets-0.56.3.dist-info/RECORD,,
|