bec-widgets 0.94.4__py3-none-any.whl → 0.94.5__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.
- CHANGELOG.md +14 -12
- PKG-INFO +3 -3
- bec_widgets/cli/auto_updates.py +31 -0
- bec_widgets/cli/client_utils.py +32 -60
- bec_widgets/qt_utils/redis_message_waiter.py +47 -0
- bec_widgets/utils/bec_dispatcher.py +1 -15
- {bec_widgets-0.94.4.dist-info → bec_widgets-0.94.5.dist-info}/METADATA +3 -3
- {bec_widgets-0.94.4.dist-info → bec_widgets-0.94.5.dist-info}/RECORD +13 -12
- pyproject.toml +7 -7
- tests/end-2-end/test_bec_dock_rpc_e2e.py +1 -0
- {bec_widgets-0.94.4.dist-info → bec_widgets-0.94.5.dist-info}/WHEEL +0 -0
- {bec_widgets-0.94.4.dist-info → bec_widgets-0.94.5.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.94.4.dist-info → bec_widgets-0.94.5.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v0.94.5 (2024-08-14)
|
4
|
+
|
5
|
+
### Build
|
6
|
+
|
7
|
+
* build: increased min version of bec to 2.21.4
|
8
|
+
|
9
|
+
Since we now rely on reusing the BECClient singleton, we need the fix introduced with 2.21.4 in BEC. ([`4f96d0e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f96d0e4a14edc4b2839c1dddeda384737dc7a8a))
|
10
|
+
|
11
|
+
### Fix
|
12
|
+
|
13
|
+
* fix(rpc): use client singleton instead of dispatcher ([`ea9240d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ea9240d2f71931082f33fb6b68231469875c3d63))
|
14
|
+
|
15
|
+
* fix: removed qcoreapplication for polling events ([`4d02b42`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4d02b42f11e9882b843317255a4975565c8a536f))
|
16
|
+
|
3
17
|
## v0.94.4 (2024-08-14)
|
4
18
|
|
5
19
|
### Documentation
|
@@ -141,15 +155,3 @@ This reverts commit fd6ae91993a23a7b8dbb2cf3c4b7c3eda6d2b0f6 ([`5aad401`](https:
|
|
141
155
|
* fix: fix missmatch of signal/slot in image and motormap ([`dcc5fd7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dcc5fd71ee9f51767a7b2b1ed6200e89d1ef754c))
|
142
156
|
|
143
157
|
## v0.92.3 (2024-07-28)
|
144
|
-
|
145
|
-
### Fix
|
146
|
-
|
147
|
-
* fix(docs): moved to pyside6 ([`71873dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/71873ddf359516ded8f74f4d2f73df4156aa1368))
|
148
|
-
|
149
|
-
## v0.92.2 (2024-07-28)
|
150
|
-
|
151
|
-
### Fix
|
152
|
-
|
153
|
-
* fix(widgets): fixed import for tictactoe example ([`995a795`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/995a795060bebe25c17108d80ae0fa30463f03b1))
|
154
|
-
|
155
|
-
## v0.92.1 (2024-07-28)
|
PKG-INFO
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 0.94.
|
3
|
+
Version: 0.94.5
|
4
4
|
Summary: BEC Widgets
|
5
5
|
Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
|
6
6
|
Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
|
@@ -9,8 +9,8 @@ Classifier: Development Status :: 3 - Alpha
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
10
10
|
Classifier: Topic :: Scientific/Engineering
|
11
11
|
Requires-Python: >=3.10
|
12
|
-
Requires-Dist: bec-ipython-client
|
13
|
-
Requires-Dist: bec-lib
|
12
|
+
Requires-Dist: bec-ipython-client>=2.21.4,~=2.21
|
13
|
+
Requires-Dist: bec-lib>=2.21.4,~=2.21
|
14
14
|
Requires-Dist: bec-qthemes~=0.0
|
15
15
|
Requires-Dist: black~=24.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
bec_widgets/cli/auto_updates.py
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import threading
|
4
|
+
from queue import Queue
|
3
5
|
from typing import TYPE_CHECKING
|
4
6
|
|
5
7
|
from pydantic import BaseModel
|
@@ -25,6 +27,17 @@ class AutoUpdates:
|
|
25
27
|
|
26
28
|
def __init__(self, gui: BECDockArea):
|
27
29
|
self.gui = gui
|
30
|
+
self.msg_queue = Queue()
|
31
|
+
self.auto_update_thread = None
|
32
|
+
self._shutdown_sentinel = object()
|
33
|
+
self.start()
|
34
|
+
|
35
|
+
def start(self):
|
36
|
+
"""
|
37
|
+
Start the auto update thread.
|
38
|
+
"""
|
39
|
+
self.auto_update_thread = threading.Thread(target=self.process_queue)
|
40
|
+
self.auto_update_thread.start()
|
28
41
|
|
29
42
|
def start_default_dock(self):
|
30
43
|
"""
|
@@ -79,6 +92,16 @@ class AutoUpdates:
|
|
79
92
|
info = self.get_scan_info(msg)
|
80
93
|
self.handler(info)
|
81
94
|
|
95
|
+
def process_queue(self):
|
96
|
+
"""
|
97
|
+
Process the message queue.
|
98
|
+
"""
|
99
|
+
while True:
|
100
|
+
msg = self.msg_queue.get()
|
101
|
+
if msg is self._shutdown_sentinel:
|
102
|
+
break
|
103
|
+
self.run(msg)
|
104
|
+
|
82
105
|
@staticmethod
|
83
106
|
def get_selected_device(monitored_devices, selected_device):
|
84
107
|
"""
|
@@ -151,3 +174,11 @@ class AutoUpdates:
|
|
151
174
|
fig.clear_all()
|
152
175
|
plt = fig.plot(x_name=dev_x, y_name=dev_y, label=f"Scan {info.scan_number} - {dev_y}")
|
153
176
|
plt.set(title=f"Scan {info.scan_number}", x_label=dev_x, y_label=dev_y)
|
177
|
+
|
178
|
+
def shutdown(self):
|
179
|
+
"""
|
180
|
+
Shutdown the auto update thread.
|
181
|
+
"""
|
182
|
+
self.msg_queue.put(self._shutdown_sentinel)
|
183
|
+
if self.auto_update_thread:
|
184
|
+
self.auto_update_thread.join()
|
bec_widgets/cli/client_utils.py
CHANGED
@@ -6,17 +6,16 @@ import json
|
|
6
6
|
import os
|
7
7
|
import select
|
8
8
|
import subprocess
|
9
|
-
import sys
|
10
9
|
import threading
|
11
10
|
import time
|
12
11
|
import uuid
|
13
12
|
from functools import wraps
|
14
13
|
from typing import TYPE_CHECKING
|
15
14
|
|
15
|
+
from bec_lib.client import BECClient
|
16
16
|
from bec_lib.endpoints import MessageEndpoints
|
17
17
|
from bec_lib.logger import bec_logger
|
18
18
|
from bec_lib.utils.import_utils import isinstance_based_on_class_name, lazy_import, lazy_import_from
|
19
|
-
from qtpy.QtCore import QEventLoop, QSocketNotifier, QTimer
|
20
19
|
|
21
20
|
import bec_widgets.cli.client as client
|
22
21
|
from bec_widgets.cli.auto_updates import AutoUpdates
|
@@ -24,10 +23,6 @@ from bec_widgets.cli.auto_updates import AutoUpdates
|
|
24
23
|
if TYPE_CHECKING:
|
25
24
|
from bec_lib.device import DeviceBase
|
26
25
|
|
27
|
-
from bec_widgets.cli.client import BECDockArea, BECFigure
|
28
|
-
|
29
|
-
from bec_lib.serialization import MsgpackSerialization
|
30
|
-
|
31
26
|
messages = lazy_import("bec_lib.messages")
|
32
27
|
# from bec_lib.connector import MessageObject
|
33
28
|
MessageObject = lazy_import_from("bec_lib.connector", ("MessageObject",))
|
@@ -184,7 +179,7 @@ class BECGuiClientMixin:
|
|
184
179
|
if isinstance(msg, messages.ScanStatusMessage):
|
185
180
|
if not self.gui_is_alive():
|
186
181
|
return
|
187
|
-
self.auto_updates.
|
182
|
+
self.auto_updates.msg_queue.put(msg)
|
188
183
|
|
189
184
|
def show(self) -> None:
|
190
185
|
"""
|
@@ -213,6 +208,8 @@ class BECGuiClientMixin:
|
|
213
208
|
self._process_output_processing_thread.join()
|
214
209
|
self._process.wait()
|
215
210
|
self._process = None
|
211
|
+
if self.auto_updates is not None:
|
212
|
+
self.auto_updates.shutdown()
|
216
213
|
|
217
214
|
|
218
215
|
class RPCResponseTimeoutError(Exception):
|
@@ -224,54 +221,14 @@ class RPCResponseTimeoutError(Exception):
|
|
224
221
|
)
|
225
222
|
|
226
223
|
|
227
|
-
class QtRedisMessageWaiter:
|
228
|
-
def __init__(self, redis_connector, message_to_wait):
|
229
|
-
self.ev_loop = QEventLoop()
|
230
|
-
self.response = None
|
231
|
-
self.connector = redis_connector
|
232
|
-
self.message_to_wait = message_to_wait
|
233
|
-
self.pubsub = redis_connector._redis_conn.pubsub()
|
234
|
-
self.pubsub.subscribe(self.message_to_wait.endpoint)
|
235
|
-
fd = self.pubsub.connection._sock.fileno()
|
236
|
-
self.notifier = QSocketNotifier(fd, QSocketNotifier.Read)
|
237
|
-
self.notifier.activated.connect(self._pubsub_readable)
|
238
|
-
|
239
|
-
def _msg_received(self, msg_obj):
|
240
|
-
self.response = msg_obj.value
|
241
|
-
self.ev_loop.quit()
|
242
|
-
|
243
|
-
def wait(self, timeout=1):
|
244
|
-
timer = QTimer()
|
245
|
-
timer.singleShot(timeout * 1000, self.ev_loop.quit)
|
246
|
-
self.ev_loop.exec_()
|
247
|
-
timer.stop()
|
248
|
-
self.notifier.setEnabled(False)
|
249
|
-
self.pubsub.close()
|
250
|
-
return self.response
|
251
|
-
|
252
|
-
def _pubsub_readable(self, fd):
|
253
|
-
while True:
|
254
|
-
msg = self.pubsub.get_message()
|
255
|
-
if msg:
|
256
|
-
if msg["type"] == "subscribe":
|
257
|
-
# get_message buffers, so we may already have the answer
|
258
|
-
# let's check...
|
259
|
-
continue
|
260
|
-
else:
|
261
|
-
break
|
262
|
-
else:
|
263
|
-
return
|
264
|
-
channel = msg["channel"].decode()
|
265
|
-
msg = MessageObject(topic=channel, value=MsgpackSerialization.loads(msg["data"]))
|
266
|
-
self.connector._execute_callback(self._msg_received, msg, {})
|
267
|
-
|
268
|
-
|
269
224
|
class RPCBase:
|
270
225
|
def __init__(self, gui_id: str = None, config: dict = None, parent=None) -> None:
|
271
|
-
self._client =
|
226
|
+
self._client = BECClient() # BECClient is a singleton; here, we simply get the instance
|
272
227
|
self._config = config if config is not None else {}
|
273
228
|
self._gui_id = gui_id if gui_id is not None else str(uuid.uuid4())
|
274
229
|
self._parent = parent
|
230
|
+
self._msg_wait_event = threading.Event()
|
231
|
+
self._rpc_response = None
|
275
232
|
super().__init__()
|
276
233
|
# print(f"RPCBase: {self._gui_id}")
|
277
234
|
|
@@ -315,24 +272,39 @@ class RPCBase:
|
|
315
272
|
# pylint: disable=protected-access
|
316
273
|
receiver = self._root._gui_id
|
317
274
|
if wait_for_rpc_response:
|
318
|
-
|
319
|
-
|
275
|
+
self._rpc_response = None
|
276
|
+
self._msg_wait_event.clear()
|
277
|
+
self._client.connector.register(
|
278
|
+
MessageEndpoints.gui_instruction_response(request_id),
|
279
|
+
cb=self._on_rpc_response,
|
280
|
+
parent=self,
|
320
281
|
)
|
321
282
|
|
322
283
|
self._client.connector.set_and_publish(MessageEndpoints.gui_instructions(receiver), rpc_msg)
|
323
284
|
|
324
285
|
if wait_for_rpc_response:
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
286
|
+
try:
|
287
|
+
finished = self._msg_wait_event.wait(10)
|
288
|
+
if not finished:
|
289
|
+
raise RPCResponseTimeoutError(request_id, timeout)
|
290
|
+
finally:
|
291
|
+
self._msg_wait_event.clear()
|
292
|
+
self._client.connector.unregister(
|
293
|
+
MessageEndpoints.gui_instruction_response(request_id), cb=self._on_rpc_response
|
294
|
+
)
|
330
295
|
# get class name
|
331
|
-
if not
|
332
|
-
raise ValueError(
|
333
|
-
msg_result =
|
296
|
+
if not self._rpc_response.accepted:
|
297
|
+
raise ValueError(self._rpc_response.message["error"])
|
298
|
+
msg_result = self._rpc_response.message.get("result")
|
299
|
+
self._rpc_response = None
|
334
300
|
return self._create_widget_from_msg_result(msg_result)
|
335
301
|
|
302
|
+
@staticmethod
|
303
|
+
def _on_rpc_response(msg: MessageObject, parent: RPCBase) -> None:
|
304
|
+
msg = msg.value
|
305
|
+
parent._msg_wait_event.set()
|
306
|
+
parent._rpc_response = msg
|
307
|
+
|
336
308
|
def _create_widget_from_msg_result(self, msg_result):
|
337
309
|
if msg_result is None:
|
338
310
|
return None
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from bec_lib.serialization import MsgpackSerialization
|
2
|
+
from bec_lib.utils import lazy_import_from
|
3
|
+
from qtpy.QtCore import QEventLoop, QSocketNotifier, QTimer
|
4
|
+
|
5
|
+
MessageObject = lazy_import_from("bec_lib.connector", ("MessageObject",))
|
6
|
+
|
7
|
+
|
8
|
+
class QtRedisMessageWaiter:
|
9
|
+
def __init__(self, redis_connector, message_to_wait):
|
10
|
+
self.ev_loop = QEventLoop()
|
11
|
+
self.response = None
|
12
|
+
self.connector = redis_connector
|
13
|
+
self.message_to_wait = message_to_wait
|
14
|
+
self.pubsub = redis_connector._redis_conn.pubsub()
|
15
|
+
self.pubsub.subscribe(self.message_to_wait.endpoint)
|
16
|
+
fd = self.pubsub.connection._sock.fileno()
|
17
|
+
self.notifier = QSocketNotifier(fd, QSocketNotifier.Read)
|
18
|
+
self.notifier.activated.connect(self._pubsub_readable)
|
19
|
+
|
20
|
+
def _msg_received(self, msg_obj):
|
21
|
+
self.response = msg_obj.value
|
22
|
+
self.ev_loop.quit()
|
23
|
+
|
24
|
+
def wait(self, timeout=1):
|
25
|
+
timer = QTimer()
|
26
|
+
timer.singleShot(timeout * 1000, self.ev_loop.quit)
|
27
|
+
self.ev_loop.exec_()
|
28
|
+
timer.stop()
|
29
|
+
self.notifier.setEnabled(False)
|
30
|
+
self.pubsub.close()
|
31
|
+
return self.response
|
32
|
+
|
33
|
+
def _pubsub_readable(self, fd):
|
34
|
+
while True:
|
35
|
+
msg = self.pubsub.get_message()
|
36
|
+
if msg:
|
37
|
+
if msg["type"] == "subscribe":
|
38
|
+
# get_message buffers, so we may already have the answer
|
39
|
+
# let's check...
|
40
|
+
continue
|
41
|
+
else:
|
42
|
+
break
|
43
|
+
else:
|
44
|
+
return
|
45
|
+
channel = msg["channel"].decode()
|
46
|
+
msg = MessageObject(topic=channel, value=MsgpackSerialization.loads(msg["data"]))
|
47
|
+
self.connector._execute_callback(self._msg_received, msg, {})
|
@@ -8,7 +8,7 @@ import redis
|
|
8
8
|
from bec_lib.client import BECClient
|
9
9
|
from bec_lib.redis_connector import MessageObject, RedisConnector
|
10
10
|
from bec_lib.service_config import ServiceConfig
|
11
|
-
from qtpy.QtCore import
|
11
|
+
from qtpy.QtCore import QObject
|
12
12
|
from qtpy.QtCore import Signal as pyqtSignal
|
13
13
|
|
14
14
|
if TYPE_CHECKING:
|
@@ -75,7 +75,6 @@ class BECDispatcher:
|
|
75
75
|
|
76
76
|
_instance = None
|
77
77
|
_initialized = False
|
78
|
-
qapp = None
|
79
78
|
|
80
79
|
def __new__(cls, client=None, config: str = None, *args, **kwargs):
|
81
80
|
if cls._instance is None:
|
@@ -87,9 +86,6 @@ class BECDispatcher:
|
|
87
86
|
if self._initialized:
|
88
87
|
return
|
89
88
|
|
90
|
-
if not QCoreApplication.instance():
|
91
|
-
BECDispatcher.qapp = QCoreApplication([])
|
92
|
-
|
93
89
|
self._slots = collections.defaultdict(set)
|
94
90
|
self.client = client
|
95
91
|
|
@@ -123,16 +119,6 @@ class BECDispatcher:
|
|
123
119
|
cls._instance = None
|
124
120
|
cls._initialized = False
|
125
121
|
|
126
|
-
if not cls.qapp:
|
127
|
-
return
|
128
|
-
|
129
|
-
# shutdown QCoreApp if it exists
|
130
|
-
if PYQT6:
|
131
|
-
cls.qapp.exit()
|
132
|
-
elif PYSIDE6:
|
133
|
-
cls.qapp.shutdown()
|
134
|
-
cls.qapp = None
|
135
|
-
|
136
122
|
def connect_slot(
|
137
123
|
self,
|
138
124
|
slot: Callable,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 0.94.
|
3
|
+
Version: 0.94.5
|
4
4
|
Summary: BEC Widgets
|
5
5
|
Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
|
6
6
|
Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
|
@@ -9,8 +9,8 @@ Classifier: Development Status :: 3 - Alpha
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
10
10
|
Classifier: Topic :: Scientific/Engineering
|
11
11
|
Requires-Python: >=3.10
|
12
|
-
Requires-Dist: bec-ipython-client
|
13
|
-
Requires-Dist: bec-lib
|
12
|
+
Requires-Dist: bec-ipython-client>=2.21.4,~=2.21
|
13
|
+
Requires-Dist: bec-lib>=2.21.4,~=2.21
|
14
14
|
Requires-Dist: bec-qthemes~=0.0
|
15
15
|
Requires-Dist: black~=24.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.gitlab-ci.yml,sha256=BtKhZI3dhK09En1BfpglYi-ZJwG6ZdC-iJr7kXFVfCg,8346
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=AyMvWke1tWeCvkvs9EWcNaIC75E7qlOfzgBNyQGO1ks,6719
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=R5qONexTNA-N-SUHcQY1xSlCgOesmiI9osI0vnQIMec,1325
|
8
8
|
README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=32PfrgJSI6hyIzuMrPw4QtjsWpuLjvKkEZmQhMpR7ms,2416
|
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
|
@@ -81,9 +81,9 @@ bec_widgets/assets/toolbar_icons/terminal.svg,sha256=jV0cHThRmM1eXm3ETEWfSkEz8AX
|
|
81
81
|
bec_widgets/assets/toolbar_icons/transform.svg,sha256=Fgug9wCi1FONy08nssEvnoDDDBbSrlNPu_pBF85GzgY,518
|
82
82
|
bec_widgets/assets/toolbar_icons/waveform.svg,sha256=darXWaIww4HEu9skFUd8Vs1NSAgUo1d37xBNr6DX-bM,231
|
83
83
|
bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
|
84
|
-
bec_widgets/cli/auto_updates.py,sha256=
|
84
|
+
bec_widgets/cli/auto_updates.py,sha256=DwzRChcFIWPH2kCYvp8H7dXvyYSKGYv6LwCmK2sDR2E,5676
|
85
85
|
bec_widgets/cli/client.py,sha256=HjBxjthimBvbyVrjvLZoeBN1NdezupowRYjZxqDlOX8,76261
|
86
|
-
bec_widgets/cli/client_utils.py,sha256=
|
86
|
+
bec_widgets/cli/client_utils.py,sha256=isk0bUcubdbqzIstN3peQpjV9pLuNUBZsHlIedIhCCw,11594
|
87
87
|
bec_widgets/cli/generate_cli.py,sha256=Ea5px9KblUlcGg-1JbJBTIU7laGg2n8PM7Efw9WVVzM,5889
|
88
88
|
bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
|
89
89
|
bec_widgets/cli/rpc_wigdet_handler.py,sha256=6kQng2DyS6rhLJqSJ7xa0kdgSxp-35A2upcf833dJRE,1483
|
@@ -104,12 +104,13 @@ bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=Hj-04Y3u_0H
|
|
104
104
|
bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
|
105
105
|
bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
106
106
|
bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
|
107
|
+
bec_widgets/qt_utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
|
107
108
|
bec_widgets/qt_utils/settings_dialog.py,sha256=NhtzTer_xzlB2lLLrGklkI1QYLJEWQpJoZbCz4o5daI,3645
|
108
109
|
bec_widgets/qt_utils/toolbar.py,sha256=89WddOXPePby2CICUumdN_K_3DBgZPCR8HWUJAwrhDU,6503
|
109
110
|
bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
|
110
111
|
bec_widgets/utils/bec_connector.py,sha256=SivHKXVyNVqeu3kCXYEPpbleTVw8g1cW0FKq1QrQgco,9987
|
111
112
|
bec_widgets/utils/bec_designer.py,sha256=ak3G8FdojUPjVBBwdPXw7tN5P2Uxr-SSoQt394jXeAA,4308
|
112
|
-
bec_widgets/utils/bec_dispatcher.py,sha256=
|
113
|
+
bec_widgets/utils/bec_dispatcher.py,sha256=F66edY3Ib_ZjTT24qoAbjwUOdOKt6CiWUUqN1I1xxZs,5865
|
113
114
|
bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
|
114
115
|
bec_widgets/utils/bec_widget.py,sha256=Bo2v1aP7rgSAQajW8GBJbI3iovTn_hGCsmeFMo7bT10,707
|
115
116
|
bec_widgets/utils/colors.py,sha256=hNIi99EpMv3t3hTJIL2jBe5nzh5f2fuCyEKXEPWSQSc,10501
|
@@ -322,7 +323,7 @@ docs/user/widgets/widgets.md,sha256=ZeRNmP7GUOu8kEoGu9XHsyF8Hb1foqZKEbwpgFP7ITk,
|
|
322
323
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
323
324
|
tests/end-2-end/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
324
325
|
tests/end-2-end/conftest.py,sha256=-BLnFE-NeCerf6xahGCkbZ4Ktactowi6RkBnboIzRvg,1767
|
325
|
-
tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=
|
326
|
+
tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=jC-FjsmL7ZOy_a8zojyhbzsOLgpWC6PNogQ2_gxCO5I,9480
|
326
327
|
tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=_OTyZfkF0D9cvdwRhHNfNadCpZPWybOCryN6EUs7tXI,6804
|
327
328
|
tests/end-2-end/test_rpc_register_e2e.py,sha256=blhMiW7HVHX1kGm5dg8Sv0PeCuJ0gnBz3evznQFz_B8,1619
|
328
329
|
tests/end-2-end/test_scan_control_e2e.py,sha256=u7oLgFyltkMW2apSZKDukMIXvYrbhHrU32p4mBdn8VE,2276
|
@@ -377,8 +378,8 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
|
|
377
378
|
tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
|
378
379
|
tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
379
380
|
tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
|
380
|
-
bec_widgets-0.94.
|
381
|
-
bec_widgets-0.94.
|
382
|
-
bec_widgets-0.94.
|
383
|
-
bec_widgets-0.94.
|
384
|
-
bec_widgets-0.94.
|
381
|
+
bec_widgets-0.94.5.dist-info/METADATA,sha256=R5qONexTNA-N-SUHcQY1xSlCgOesmiI9osI0vnQIMec,1325
|
382
|
+
bec_widgets-0.94.5.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
383
|
+
bec_widgets-0.94.5.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
|
384
|
+
bec_widgets-0.94.5.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
385
|
+
bec_widgets-0.94.5.dist-info/RECORD,,
|
pyproject.toml
CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "bec_widgets"
|
7
|
-
version = "0.94.
|
7
|
+
version = "0.94.5"
|
8
8
|
description = "BEC Widgets"
|
9
9
|
requires-python = ">=3.10"
|
10
10
|
classifiers = [
|
@@ -13,16 +13,16 @@ classifiers = [
|
|
13
13
|
"Topic :: Scientific/Engineering",
|
14
14
|
]
|
15
15
|
dependencies = [
|
16
|
-
"bec_ipython_client~=2.
|
17
|
-
"bec_lib~=2.
|
18
|
-
"black~=24.0",
|
19
|
-
"isort~=5.13, >=5.13.2",
|
16
|
+
"bec_ipython_client~=2.21, >=2.21.4", # needed for jupyter console
|
17
|
+
"bec_lib~=2.21, >=2.21.4",
|
18
|
+
"black~=24.0", # needed for bw-generate-cli
|
19
|
+
"isort~=5.13, >=5.13.2", # needed for bw-generate-cli
|
20
20
|
"pydantic~=2.0",
|
21
21
|
"pyqtgraph~=0.13",
|
22
22
|
"bec_qthemes~=0.0",
|
23
|
-
"qtconsole~=5.5, >=5.5.1",
|
23
|
+
"qtconsole~=5.5, >=5.5.1", # needed for jupyter console
|
24
24
|
"qtpy~=2.4",
|
25
|
-
"pyte",
|
25
|
+
"pyte", # needed for vt100 console
|
26
26
|
]
|
27
27
|
|
28
28
|
|
File without changes
|
File without changes
|
File without changes
|