bec-widgets 1.24.5__py3-none-any.whl → 1.25.1__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 +8 -1
- CHANGELOG.md +27 -0
- PKG-INFO +1 -1
- bec_widgets/widgets/containers/figure/plots/waveform/waveform.py +21 -1
- bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +6 -5
- bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +25 -3
- bec_widgets/widgets/utility/spinner/spinner.py +2 -2
- {bec_widgets-1.24.5.dist-info → bec_widgets-1.25.1.dist-info}/METADATA +1 -1
- {bec_widgets-1.24.5.dist-info → bec_widgets-1.25.1.dist-info}/RECORD +13 -13
- pyproject.toml +1 -1
- {bec_widgets-1.24.5.dist-info → bec_widgets-1.25.1.dist-info}/WHEEL +0 -0
- {bec_widgets-1.24.5.dist-info → bec_widgets-1.25.1.dist-info}/entry_points.txt +0 -0
- {bec_widgets-1.24.5.dist-info → bec_widgets-1.25.1.dist-info}/licenses/LICENSE +0 -0
.gitlab-ci.yml
CHANGED
@@ -197,7 +197,13 @@ end-2-end-conda:
|
|
197
197
|
script:
|
198
198
|
- *clone-repos
|
199
199
|
- *install-os-packages
|
200
|
-
- conda config --
|
200
|
+
- conda config --show-sources
|
201
|
+
- conda config --add channels conda-forge
|
202
|
+
- conda config --system --remove channels https://repo.anaconda.com/pkgs/main
|
203
|
+
- conda config --system --remove channels https://repo.anaconda.com/pkgs/r
|
204
|
+
- conda config --remove channels https://repo.anaconda.com/pkgs/main
|
205
|
+
- conda config --remove channels https://repo.anaconda.com/pkgs/r
|
206
|
+
- conda config --show-sources
|
201
207
|
- conda config --set channel_priority strict
|
202
208
|
- conda config --set always_yes yes --set changeps1 no
|
203
209
|
- conda create -q -n test-environment python=3.11
|
@@ -227,6 +233,7 @@ end-2-end-conda:
|
|
227
233
|
- if: '$CI_PIPELINE_SOURCE == "parent_pipeline"'
|
228
234
|
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
|
229
235
|
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "production"'
|
236
|
+
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^pre_release.*$/'
|
230
237
|
|
231
238
|
semver:
|
232
239
|
stage: Deploy
|
CHANGELOG.md
CHANGED
@@ -1,6 +1,33 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v1.25.1 (2025-03-24)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **positioner_box**: Fixed motor moving flags for spinner
|
9
|
+
([`be274a1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/be274a10fc76528e1e5d6b309678c7fb4e9b890e))
|
10
|
+
|
11
|
+
- **positioner_box**: If possible tweak should use the current setpoint instead of the readback
|
12
|
+
([`e5c9dd2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e5c9dd288c571d29722497a2d40b000d1cffb475))
|
13
|
+
|
14
|
+
### Continuous Integration
|
15
|
+
|
16
|
+
- Add e2e job for pre_release branches
|
17
|
+
([`d86ef4e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d86ef4e763b321b1c82be71c9f275abb610fed06))
|
18
|
+
|
19
|
+
- Fix conda channels for PSI policy change
|
20
|
+
([`6cf39b3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6cf39b3796f850294705465adfaf6ad25a71461f))
|
21
|
+
|
22
|
+
|
23
|
+
## v1.25.0 (2025-03-07)
|
24
|
+
|
25
|
+
### Features
|
26
|
+
|
27
|
+
- **waveform**: Add slice handling and reset functionality for async updates
|
28
|
+
([`7cbebbb`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7cbebbb1f00ea2e2b3678c96b183a877e59c5240))
|
29
|
+
|
30
|
+
|
4
31
|
## v1.24.5 (2025-03-06)
|
5
32
|
|
6
33
|
### Bug Fixes
|
PKG-INFO
CHANGED
@@ -126,6 +126,8 @@ class BECWaveform(BECPlotBase):
|
|
126
126
|
"label_suffix": "",
|
127
127
|
}
|
128
128
|
|
129
|
+
self._slice_index = None
|
130
|
+
|
129
131
|
# Scan segment update proxy
|
130
132
|
self.proxy_update_plot = pg.SignalProxy(
|
131
133
|
self.scan_signal_update, rateLimit=25, slot=self._update_scan_curves
|
@@ -1252,7 +1254,9 @@ class BECWaveform(BECPlotBase):
|
|
1252
1254
|
x_data = None
|
1253
1255
|
instruction = metadata.get("async_update", {}).get("type")
|
1254
1256
|
max_shape = metadata.get("async_update", {}).get("max_shape", [])
|
1255
|
-
|
1257
|
+
all_async_curves = self._curves_data["async"].values()
|
1258
|
+
# for curve in self._curves_data["async"].values():
|
1259
|
+
for curve in all_async_curves:
|
1256
1260
|
y_entry = curve.config.signals.y.entry
|
1257
1261
|
x_name = self._x_axis_mode["name"]
|
1258
1262
|
for device, async_data in msg["signals"].items():
|
@@ -1276,6 +1280,18 @@ class BECWaveform(BECPlotBase):
|
|
1276
1280
|
curve.setData(x_data, new_data)
|
1277
1281
|
else:
|
1278
1282
|
curve.setData(new_data)
|
1283
|
+
elif instruction == "add_slice":
|
1284
|
+
current_slice_id = metadata.get("async_update", {}).get("index")
|
1285
|
+
data_plot = async_data["value"]
|
1286
|
+
if current_slice_id != self._slice_index:
|
1287
|
+
self._slice_index = current_slice_id
|
1288
|
+
new_data = data_plot
|
1289
|
+
else:
|
1290
|
+
x_data, y_data = curve.get_data()
|
1291
|
+
new_data = np.hstack((y_data, data_plot))
|
1292
|
+
|
1293
|
+
curve.setData(new_data)
|
1294
|
+
|
1279
1295
|
elif instruction == "replace":
|
1280
1296
|
if x_name == "timestamp":
|
1281
1297
|
x_data = async_data["timestamp"]
|
@@ -1524,6 +1540,10 @@ class BECWaveform(BECPlotBase):
|
|
1524
1540
|
for curve_id in curve_ids_to_remove:
|
1525
1541
|
self.remove_curve(curve_id)
|
1526
1542
|
|
1543
|
+
def reset(self):
|
1544
|
+
self._slice_index = None
|
1545
|
+
super().reset()
|
1546
|
+
|
1527
1547
|
def clear_all(self):
|
1528
1548
|
sources = list(self._curves_data.keys())
|
1529
1549
|
for source in sources:
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import uuid
|
2
2
|
from abc import abstractmethod
|
3
|
-
from ast import Tuple
|
4
3
|
from typing import Callable, TypedDict
|
5
4
|
|
6
5
|
from bec_lib.device import Positioner
|
@@ -140,10 +139,12 @@ class PositionerBoxBase(BECWidget, CompactPopupWidget):
|
|
140
139
|
if setpoint_val is not None:
|
141
140
|
break
|
142
141
|
|
143
|
-
|
144
|
-
is_moving = signals
|
145
|
-
|
146
|
-
|
142
|
+
if f"{device}_motor_done_move" in signals:
|
143
|
+
is_moving = not signals[f"{device}_motor_done_move"].get("value")
|
144
|
+
elif f"{device}_motor_is_moving" in signals:
|
145
|
+
is_moving = signals[f"{device}_motor_is_moving"].get("value")
|
146
|
+
else:
|
147
|
+
is_moving = None
|
147
148
|
|
148
149
|
if is_moving is not None:
|
149
150
|
spinner.setVisible(True)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
"""
|
1
|
+
"""Module for a PositionerBox widget to control a positioner device."""
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
@@ -212,12 +212,34 @@ class PositionerBox(PositionerBoxBase):
|
|
212
212
|
@SafeSlot()
|
213
213
|
def on_tweak_right(self):
|
214
214
|
"""Tweak motor right"""
|
215
|
-
self.
|
215
|
+
setpoint = self._get_setpoint()
|
216
|
+
if setpoint is None:
|
217
|
+
self.dev[self.device].move(self.step_size, relative=True)
|
218
|
+
return
|
219
|
+
target = setpoint + self.step_size
|
220
|
+
self.dev[self.device].move(target, relative=False)
|
216
221
|
|
217
222
|
@SafeSlot()
|
218
223
|
def on_tweak_left(self):
|
219
224
|
"""Tweak motor left"""
|
220
|
-
self.
|
225
|
+
setpoint = self._get_setpoint()
|
226
|
+
if setpoint is None:
|
227
|
+
self.dev[self.device].move(-self.step_size, relative=True)
|
228
|
+
return
|
229
|
+
target = setpoint - self.step_size
|
230
|
+
self.dev[self.device].move(target, relative=False)
|
231
|
+
|
232
|
+
def _get_setpoint(self) -> float | None:
|
233
|
+
"""Get the setpoint of the motor"""
|
234
|
+
setpoint = getattr(self.dev[self.device], "setpoint", None)
|
235
|
+
if not setpoint:
|
236
|
+
setpoint = getattr(self.dev[self.device], "user_setpoint", None)
|
237
|
+
if not setpoint:
|
238
|
+
return None
|
239
|
+
try:
|
240
|
+
return float(setpoint.get())
|
241
|
+
except Exception:
|
242
|
+
return None
|
221
243
|
|
222
244
|
@SafeSlot()
|
223
245
|
def on_setpoint_change(self):
|
@@ -1,12 +1,12 @@
|
|
1
1
|
.gitignore,sha256=cMQ1MLmnoR88aMCCJwUyfoTnufzl4-ckmHtlFUqHcT4,3253
|
2
|
-
.gitlab-ci.yml,sha256=
|
2
|
+
.gitlab-ci.yml,sha256=s8RDN8XxVKa1Rq_MyeZgrYq7-qXKlvoOSfb9krqbl5s,9212
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=VWqpvRWolUlmlouilk1SoQ4dnKFxsvKnXsjD-cWIDZc,234451
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=VVTJOK3kRpwUGUHQfeeix3900I_av8A6fInPxLLBWjo,1173
|
8
8
|
README.md,sha256=KgdKusjlvEvFtdNZCeDMO91y77MWK2iDcYMDziksOr4,2553
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=QPMn5S9kX0_kmFnGPk0G6-h4Lj0o71bHhsmDi3sJ4rY,2540
|
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
|
@@ -111,7 +111,7 @@ bec_widgets/widgets/containers/figure/plots/motor_map/motor_map.py,sha256=G59EmA
|
|
111
111
|
bec_widgets/widgets/containers/figure/plots/multi_waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
112
112
|
bec_widgets/widgets/containers/figure/plots/multi_waveform/multi_waveform.py,sha256=NBVC9mWmeleTfLsfBl1yyMx8L4EgHFcdM9kX20QOJ00,11766
|
113
113
|
bec_widgets/widgets/containers/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
114
|
-
bec_widgets/widgets/containers/figure/plots/waveform/waveform.py,sha256=
|
114
|
+
bec_widgets/widgets/containers/figure/plots/waveform/waveform.py,sha256=ih1UQ_CT2ab7CFs0L36qyWrOyidoFCnXue48150f7Do,58720
|
115
115
|
bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py,sha256=YctH0W8ns03BzYNaG9CR18_2HaNVbzyr7ua5226He2Y,8735
|
116
116
|
bec_widgets/widgets/containers/layout_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
117
|
bec_widgets/widgets/containers/layout_manager/layout_manager.py,sha256=mPKLWp1ZJtr1K59jJWbpDaWUjGr47QG3-nNrEqo6a0E,33811
|
@@ -147,9 +147,9 @@ bec_widgets/widgets/control/device_control/position_indicator/position_indicator
|
|
147
147
|
bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py,sha256=ZbN5wPv4dhWEAgX9QD1HL7k7y1O5qZHAgj-xZjwFSho,539
|
148
148
|
bec_widgets/widgets/control/device_control/positioner_box/__init__.py,sha256=0vO7JjxKsO6bbxUjdCGYKELFTY0n4Cv8u4Z1i-MhwL0,476
|
149
149
|
bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py,sha256=IiOglwEwd908gs10ZRF6PHGdbRHw0B-ScAmebtQKhXc,84
|
150
|
-
bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py,sha256=
|
150
|
+
bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py,sha256=ZsAY5mJMHZpjLgaa_z9INJknbZEVmD8jQ30u-C7uLXQ,8841
|
151
151
|
bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
152
|
-
bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py,sha256=
|
152
|
+
bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py,sha256=2nwosz-rsDRaf7gUDxNfydT5e5siiTBo7nVlDotIc5c,8835
|
153
153
|
bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject,sha256=7966pHdDseaHciaPNEKgdQgbUThSZf5wEDCeAEJh9po,32
|
154
154
|
bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui,sha256=7LZlM9smIqmkvS2KAIDkBamn04mBAkXeG9T1fpKRQe8,6093
|
155
155
|
bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py,sha256=CKtz61p5uYUh_l30APyhsV3uwJuLFBiBeFZfaOdT0Do,1421
|
@@ -333,7 +333,7 @@ bec_widgets/widgets/utility/spinbox/decimal_spinbox.py,sha256=cfq6SSATI-Mu7ix6hH
|
|
333
333
|
bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py,sha256=_whARPM42TCYV_rUBtThGUK7XC1VoIwRn8fVHzxI2pc,476
|
334
334
|
bec_widgets/widgets/utility/spinner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
335
335
|
bec_widgets/widgets/utility/spinner/register_spinner_widget.py,sha256=96A13dEcyTgXfc9G0sTdlXYCDcVav8Z2P2eDC95bESQ,484
|
336
|
-
bec_widgets/widgets/utility/spinner/spinner.py,sha256=
|
336
|
+
bec_widgets/widgets/utility/spinner/spinner.py,sha256=PvckwA3oWO_QYUI2SFG7gNhAHqvVqrm1rkXWR6UJ_Mk,2651
|
337
337
|
bec_widgets/widgets/utility/spinner/spinner_widget.pyproject,sha256=zzLajGB3DTgVnrSqMey2jRpBlxTq9cBXZL9tWJCKe-I,25
|
338
338
|
bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py,sha256=kRQCOwxPQsFOrJIkSoqq7xdF_VtoRo_b2vOZEr5eXrA,1363
|
339
339
|
bec_widgets/widgets/utility/toggle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -362,8 +362,8 @@ bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py,sha256=c
|
|
362
362
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject,sha256=Lbi9zb6HNlIq14k6hlzR-oz6PIFShBuF7QxE6d87d64,34
|
363
363
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py,sha256=CzChz2SSETYsR8-36meqWnsXCT-FIy_J_xeU5coWDY8,1350
|
364
364
|
bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py,sha256=rMpZ1CaoucwobgPj1FuKTnt07W82bV1GaSYdoqcdMb8,521
|
365
|
-
bec_widgets-1.
|
366
|
-
bec_widgets-1.
|
367
|
-
bec_widgets-1.
|
368
|
-
bec_widgets-1.
|
369
|
-
bec_widgets-1.
|
365
|
+
bec_widgets-1.25.1.dist-info/METADATA,sha256=VVTJOK3kRpwUGUHQfeeix3900I_av8A6fInPxLLBWjo,1173
|
366
|
+
bec_widgets-1.25.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
367
|
+
bec_widgets-1.25.1.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
368
|
+
bec_widgets-1.25.1.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
369
|
+
bec_widgets-1.25.1.dist-info/RECORD,,
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|
File without changes
|