bec-widgets 0.93.2__py3-none-any.whl → 0.93.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.
- CHANGELOG.md +24 -28
- PKG-INFO +1 -1
- bec_widgets/qt_utils/settings_dialog.py +11 -0
- bec_widgets/widgets/color_button/color_button.py +7 -0
- bec_widgets/widgets/dock/dock.py +4 -1
- bec_widgets/widgets/dock/dock_area.py +15 -1
- bec_widgets/widgets/figure/figure.py +21 -16
- bec_widgets/widgets/figure/plots/image/image.py +14 -0
- bec_widgets/widgets/figure/plots/plot_base.py +8 -0
- bec_widgets/widgets/image/image_widget.py +2 -0
- bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +9 -0
- bec_widgets/widgets/website/website.py +6 -0
- {bec_widgets-0.93.2.dist-info → bec_widgets-0.93.3.dist-info}/METADATA +1 -1
- {bec_widgets-0.93.2.dist-info → bec_widgets-0.93.3.dist-info}/RECORD +42 -42
- pyproject.toml +1 -1
- tests/end-2-end/test_scan_control_e2e.py +0 -1
- tests/unit_tests/conftest.py +33 -2
- tests/unit_tests/test_bec_dock.py +0 -1
- tests/unit_tests/test_bec_figure.py +31 -24
- tests/unit_tests/test_bec_image.py +7 -3
- tests/unit_tests/test_bec_image_widget.py +0 -1
- tests/unit_tests/test_bec_motor_map.py +28 -14
- tests/unit_tests/test_bec_queue.py +0 -1
- tests/unit_tests/test_bec_status_box.py +0 -1
- tests/unit_tests/test_color_map_selector.py +0 -1
- tests/unit_tests/test_device_input_base.py +0 -1
- tests/unit_tests/test_device_input_widgets.py +0 -6
- tests/unit_tests/test_motor_map_widget.py +0 -2
- tests/unit_tests/test_plot_base.py +9 -4
- tests/unit_tests/test_ring_progress_bar.py +0 -1
- tests/unit_tests/test_scan_control.py +0 -1
- tests/unit_tests/test_setting_dialog.py +1 -2
- tests/unit_tests/test_stop_button.py +0 -1
- tests/unit_tests/test_text_box_widget.py +0 -1
- tests/unit_tests/test_toggle.py +0 -1
- tests/unit_tests/test_vscode_widget.py +2 -2
- tests/unit_tests/test_waveform1d.py +46 -23
- tests/unit_tests/test_waveform_widget.py +0 -1
- tests/unit_tests/test_website_widget.py +0 -2
- {bec_widgets-0.93.2.dist-info → bec_widgets-0.93.3.dist-info}/WHEEL +0 -0
- {bec_widgets-0.93.2.dist-info → bec_widgets-0.93.3.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.93.2.dist-info → bec_widgets-0.93.3.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v0.93.3 (2024-08-07)
|
4
|
+
|
5
|
+
### Fix
|
6
|
+
|
7
|
+
* fix(dock): properly shut down docks and temp areas ([`99ee545`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/99ee545e41c6078654958b668b5b329f85553d16))
|
8
|
+
|
9
|
+
* fix(settings): shut down settings dialog ([`b50b3a2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b50b3a27e68956e10e8169a0aa698c911d2d9642))
|
10
|
+
|
11
|
+
* fix(website): fixed teardown of website widgets ([`a3d4f5a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3d4f5ac4bc52acfed2791a1724fade6972ed320))
|
12
|
+
|
13
|
+
* fix(dock): properly shut down docks and dock areas ([`bc26497`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bc264975b1363c9dfea516621d7878c320677d15))
|
14
|
+
|
15
|
+
* fix(figure): cleanup pyqtgraph ([`ad07bbf`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ad07bbf85e9c8d9838bdd686f69d41c235b7db19))
|
16
|
+
|
17
|
+
### Test
|
18
|
+
|
19
|
+
* test: removed quit from teardown ([`cf94599`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cf94599c2544d6831c8afbe7b340082077557ed1))
|
20
|
+
|
21
|
+
* test: removed explicit call to close the widget ([`bf6294e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bf6294ecbfd494565d2dc215e4d7e0c280ac7745))
|
22
|
+
|
23
|
+
* test: use factory instead of fixture to properly cleanup widgets on teardown ([`9856857`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9856857f4cc7fa229c10d00fbae4452464a207cb))
|
24
|
+
|
25
|
+
* test: ensure all toplevelwidgets are closed ([`f9e5897`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f9e58979009cf632feea529700ad191401dd7eb8))
|
26
|
+
|
3
27
|
## v0.93.2 (2024-08-07)
|
4
28
|
|
5
29
|
### Fix
|
@@ -119,31 +143,3 @@ This reverts commit fd6ae91993a23a7b8dbb2cf3c4b7c3eda6d2b0f6 ([`5aad401`](https:
|
|
119
143
|
* test(dock_area): tests extended ([`06fab0e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/06fab0eab926cef5677d4988fd1fce09da342dd8))
|
120
144
|
|
121
145
|
## v0.90.0 (2024-07-23)
|
122
|
-
|
123
|
-
### Feature
|
124
|
-
|
125
|
-
* feat(image_widget): plugin added ([`4371168`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/43711680ba253f81fb0ffe764bcaae701b02bb49))
|
126
|
-
|
127
|
-
* feat(image_widget): all toolbar actions added ([`501eb92`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/501eb923f12fa6aaa93f5428ca78e57694edfbc0))
|
128
|
-
|
129
|
-
* feat(image_widget): image_widget added ([`6a9317f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6a9317facda896ee784c7fc1db0cd3d68cdfcf73))
|
130
|
-
|
131
|
-
### Fix
|
132
|
-
|
133
|
-
* fix(axis_setting): fix compatibility for issue with horizontal line for PyQt6 ([`1cf6e32`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1cf6e32303f82bc7c3f3391d0e96a88bc31f29fc))
|
134
|
-
|
135
|
-
* fix(image_widget): image_widget autorange fixed ([`7f49893`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7f49893d2ce3b9d02efa764f7f10442ed6ab8f3c))
|
136
|
-
|
137
|
-
* fix(image_widget): image widget adjusted ([`3d2ca48`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3d2ca4855c36fe0af59a4b540caa3c8023a81773))
|
138
|
-
|
139
|
-
* fix(image): only single monitor image is allowed ([`fe7e542`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/fe7e542b19dc5b401523501acb74ac03edf62ad4))
|
140
|
-
|
141
|
-
* fix(image): raw data are saved in image item to always have precise processing ([`c15035b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c15035b6b769a96780a16da9e7f75af3b823654c))
|
142
|
-
|
143
|
-
### Refactor
|
144
|
-
|
145
|
-
* refactor(jupyter_console_example): added examples of standalone widgets ([`ba0d1ea`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ba0d1ea9031b4ae2e2e73bf269fbfad973b924a5))
|
146
|
-
|
147
|
-
### Test
|
148
|
-
|
149
|
-
* test(image_widget): tests added ([`70fb276`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/70fb276fdf31dffc105435d3dfe7c5caea0b10ce))
|
PKG-INFO
CHANGED
@@ -106,3 +106,14 @@ class SettingsDialog(QDialog):
|
|
106
106
|
Apply the changes made in the settings widget without closing the dialog.
|
107
107
|
"""
|
108
108
|
self.widget.accept_changes()
|
109
|
+
|
110
|
+
def cleanup(self):
|
111
|
+
"""
|
112
|
+
Cleanup the dialog.
|
113
|
+
"""
|
114
|
+
self.button_box.close()
|
115
|
+
self.button_box.deleteLater()
|
116
|
+
|
117
|
+
def closeEvent(self, event):
|
118
|
+
self.cleanup()
|
119
|
+
super().closeEvent(event)
|
bec_widgets/widgets/dock/dock.py
CHANGED
@@ -153,6 +153,7 @@ class BECDock(BECWidget, Dock):
|
|
153
153
|
super().dropEvent(event)
|
154
154
|
if old_area in self.orig_area.tempAreas and old_area != self.orig_area:
|
155
155
|
self.orig_area.removeTempArea(old_area)
|
156
|
+
old_area.window().deleteLater()
|
156
157
|
|
157
158
|
def float(self):
|
158
159
|
"""
|
@@ -284,7 +285,7 @@ class BECDock(BECWidget, Dock):
|
|
284
285
|
"""
|
285
286
|
Attach the dock to the parent dock area.
|
286
287
|
"""
|
287
|
-
self.
|
288
|
+
self.parent_dock_area.remove_temp_area(self.area)
|
288
289
|
|
289
290
|
def detach(self):
|
290
291
|
"""
|
@@ -319,6 +320,8 @@ class BECDock(BECWidget, Dock):
|
|
319
320
|
if hasattr(widget, "cleanup"):
|
320
321
|
widget.cleanup()
|
321
322
|
self.widgets.clear()
|
323
|
+
self.label.close()
|
324
|
+
self.label.deleteLater()
|
322
325
|
super().cleanup()
|
323
326
|
|
324
327
|
def close(self):
|
@@ -231,6 +231,7 @@ class BECDockArea(BECWidget, QWidget):
|
|
231
231
|
self.config.docks.pop(name, None)
|
232
232
|
if dock:
|
233
233
|
dock.close()
|
234
|
+
dock.deleteLater()
|
234
235
|
if len(self.dock_area.docks) <= 1:
|
235
236
|
for dock in self.dock_area.docks.values():
|
236
237
|
dock.hide_title_bar()
|
@@ -329,7 +330,16 @@ class BECDockArea(BECWidget, QWidget):
|
|
329
330
|
"""
|
330
331
|
while self.dock_area.tempAreas:
|
331
332
|
for temp_area in self.dock_area.tempAreas:
|
332
|
-
self.
|
333
|
+
self.remove_temp_area(temp_area)
|
334
|
+
|
335
|
+
def remove_temp_area(self, area):
|
336
|
+
"""
|
337
|
+
Remove a temporary area from the dock area.
|
338
|
+
This is a patched method of pyqtgraph's removeTempArea
|
339
|
+
"""
|
340
|
+
self.dock_area.tempAreas.remove(area)
|
341
|
+
area.window().close()
|
342
|
+
area.window().deleteLater()
|
333
343
|
|
334
344
|
def clear_all(self):
|
335
345
|
"""
|
@@ -345,6 +355,10 @@ class BECDockArea(BECWidget, QWidget):
|
|
345
355
|
Cleanup the dock area.
|
346
356
|
"""
|
347
357
|
self.clear_all()
|
358
|
+
self.toolbar.close()
|
359
|
+
self.toolbar.deleteLater()
|
360
|
+
self.dock_area.close()
|
361
|
+
self.dock_area.deleteLater()
|
348
362
|
super().cleanup()
|
349
363
|
|
350
364
|
def close(self):
|
@@ -513,6 +513,13 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
|
|
513
513
|
if widget_id in self._widgets:
|
514
514
|
raise ValueError(f"Widget with ID '{widget_id}' already exists.")
|
515
515
|
|
516
|
+
# Check if position is occupied
|
517
|
+
if row is not None and col is not None:
|
518
|
+
if self.getItem(row, col):
|
519
|
+
raise ValueError(f"Position at row {row} and column {col} is already occupied.")
|
520
|
+
else:
|
521
|
+
row, col = self._find_next_empty_position()
|
522
|
+
|
516
523
|
widget = self.widget_handler.create_widget(
|
517
524
|
widget_type=widget_type,
|
518
525
|
widget_id=widget_id,
|
@@ -525,23 +532,11 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
|
|
525
532
|
# used otherwise multiple times
|
526
533
|
widget.set_gui_id(widget_id)
|
527
534
|
|
528
|
-
|
529
|
-
|
530
|
-
if self.getItem(row, col):
|
531
|
-
raise ValueError(f"Position at row {row} and column {col} is already occupied.")
|
532
|
-
|
533
|
-
widget.config.row = row
|
534
|
-
widget.config.col = col
|
535
|
-
|
536
|
-
# Add widget to the figure
|
537
|
-
self.addItem(widget, row=row, col=col)
|
538
|
-
else:
|
539
|
-
row, col = self._find_next_empty_position()
|
540
|
-
widget.config.row = row
|
541
|
-
widget.config.col = col
|
535
|
+
widget.config.row = row
|
536
|
+
widget.config.col = col
|
542
537
|
|
543
|
-
|
544
|
-
|
538
|
+
# Add widget to the figure
|
539
|
+
self.addItem(widget, row=row, col=col)
|
545
540
|
|
546
541
|
# Update num_cols and num_rows based on the added widget
|
547
542
|
self.config.num_rows = max(self.config.num_rows, row + 1)
|
@@ -620,6 +615,7 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
|
|
620
615
|
"""
|
621
616
|
if widget_id in self._widgets:
|
622
617
|
widget = self._widgets.pop(widget_id)
|
618
|
+
widget.cleanup_pyqtgraph()
|
623
619
|
widget.cleanup()
|
624
620
|
self.removeItem(widget)
|
625
621
|
self.grid[widget.config.row][widget.config.col] = None
|
@@ -745,3 +741,12 @@ class BECFigure(BECWidget, pg.GraphicsLayoutWidget):
|
|
745
741
|
self.config = FigureConfig(
|
746
742
|
widget_class=self.__class__.__name__, gui_id=self.gui_id, theme=theme
|
747
743
|
)
|
744
|
+
|
745
|
+
def cleanup_pyqtgraph_all_widgets(self):
|
746
|
+
"""Clean up the pyqtgraph widget."""
|
747
|
+
for widget in self.widget_list:
|
748
|
+
widget.cleanup_pyqtgraph()
|
749
|
+
|
750
|
+
def cleanup(self):
|
751
|
+
"""Close the figure widget."""
|
752
|
+
self.cleanup_pyqtgraph_all_widgets()
|
@@ -681,3 +681,17 @@ class BECImageShow(BECPlotBase):
|
|
681
681
|
self.on_image_update, MessageEndpoints.device_monitor_2d(monitor)
|
682
682
|
)
|
683
683
|
self.images.clear()
|
684
|
+
|
685
|
+
def cleanup_pyqtgraph(self):
|
686
|
+
"""Cleanup pyqtgraph items."""
|
687
|
+
super().cleanup_pyqtgraph()
|
688
|
+
item = self.plot_item
|
689
|
+
if not item.items:
|
690
|
+
return
|
691
|
+
cbar = item.items[0].color_bar
|
692
|
+
cbar.vb.menu.close()
|
693
|
+
cbar.vb.menu.deleteLater()
|
694
|
+
cbar.gradient.menu.close()
|
695
|
+
cbar.gradient.menu.deleteLater()
|
696
|
+
cbar.gradient.colorDialog.close()
|
697
|
+
cbar.gradient.colorDialog.deleteLater()
|
@@ -314,3 +314,11 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|
314
314
|
"""Remove the plot widget from the figure."""
|
315
315
|
if self.figure is not None:
|
316
316
|
self.figure.remove(widget_id=self.gui_id)
|
317
|
+
|
318
|
+
def cleanup_pyqtgraph(self):
|
319
|
+
"""Cleanup pyqtgraph items."""
|
320
|
+
item = self.plot_item
|
321
|
+
item.vb.menu.close()
|
322
|
+
item.vb.menu.deleteLater()
|
323
|
+
item.ctrlMenu.close()
|
324
|
+
item.ctrlMenu.deleteLater()
|
@@ -45,3 +45,12 @@ class MotorMapSettings(SettingWidget):
|
|
45
45
|
self.target_widget.set_scatter_size(scatter_size)
|
46
46
|
self.target_widget.set_background_value(background_intensity)
|
47
47
|
self.target_widget.set_color(color)
|
48
|
+
|
49
|
+
def cleanup(self):
|
50
|
+
self.ui.color.cleanup()
|
51
|
+
self.ui.color.close()
|
52
|
+
self.ui.color.deleteLater()
|
53
|
+
|
54
|
+
def closeEvent(self, event):
|
55
|
+
self.cleanup()
|
56
|
+
super().closeEvent(event)
|
@@ -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=U5vCm00ka49FYkJ9jdcAusiIKlWRfmpBHPSFiuDcsuE,6646
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=_VblxDpuCc284m1SFf95vKgTaR-Jng60jurwZViD06c,1307
|
8
8
|
README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=xNXznccvvpAdxIq46iwq_IJJcLfqag12-4IaiJaw0CY,2356
|
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
|
@@ -103,7 +103,7 @@ bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=Hj-04Y3u_0H
|
|
103
103
|
bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
|
104
104
|
bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
105
|
bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
|
106
|
-
bec_widgets/qt_utils/settings_dialog.py,sha256=
|
106
|
+
bec_widgets/qt_utils/settings_dialog.py,sha256=NhtzTer_xzlB2lLLrGklkI1QYLJEWQpJoZbCz4o5daI,3645
|
107
107
|
bec_widgets/qt_utils/toolbar.py,sha256=89WddOXPePby2CICUumdN_K_3DBgZPCR8HWUJAwrhDU,6503
|
108
108
|
bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
|
109
109
|
bec_widgets/utils/bec_connector.py,sha256=SivHKXVyNVqeu3kCXYEPpbleTVw8g1cW0FKq1QrQgco,9987
|
@@ -142,7 +142,7 @@ bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=1yyH1vrhVoCVJ
|
|
142
142
|
bec_widgets/widgets/bec_status_box/register_bec_status_box.py,sha256=EiQITnkNw7IU7hE776wAeXro97eZd9XlsB9essgCebE,481
|
143
143
|
bec_widgets/widgets/bec_status_box/status_item.py,sha256=3aNaa-e64PmkBoAWfItYAmhB1EFhWRiFLzXWWz0dS_8,5317
|
144
144
|
bec_widgets/widgets/color_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
145
|
-
bec_widgets/widgets/color_button/color_button.py,sha256=
|
145
|
+
bec_widgets/widgets/color_button/color_button.py,sha256=Jx4UAn7ZomLei0OCg7RmTnq395scXW4jmqslQRbEVMI,1203
|
146
146
|
bec_widgets/widgets/color_button/color_button.pyproject,sha256=LUYF4VkDOB4ttVe7YfvLh64K-XZg0-xaVT06BqCT3UA,30
|
147
147
|
bec_widgets/widgets/color_button/color_button_plugin.py,sha256=Cmz6EqdykdZDQmpjgGBspf4MvHi7iAV1q9E-_cqRvW4,1295
|
148
148
|
bec_widgets/widgets/color_button/register_color_button.py,sha256=ZAx3t7G2VI2S-1qcEof31Xi9O0X8deLeZNgS651L1JI,475
|
@@ -169,19 +169,19 @@ bec_widgets/widgets/device_line_edit/device_line_edit.pyproject,sha256=tqAYXRbxs
|
|
169
169
|
bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py,sha256=RPtGVPLadUVyfEvj1EAJ9ftXe3Htp40JdHGj9zBLukc,1462
|
170
170
|
bec_widgets/widgets/device_line_edit/register_device_line_edit.py,sha256=8gEPnC8djYCw-idoZAENNB3bPOxM6pbzEp9A366EAGg,489
|
171
171
|
bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
|
172
|
-
bec_widgets/widgets/dock/dock.py,sha256=
|
173
|
-
bec_widgets/widgets/dock/dock_area.py,sha256=
|
172
|
+
bec_widgets/widgets/dock/dock.py,sha256=hQw5tpGrRbybjfF-aVEAeGdLTudtH4kFa70flu6_ZA8,10349
|
173
|
+
bec_widgets/widgets/dock/dock_area.py,sha256=mHF8TPHnUl4x0ZWLQhgXF9Ca7uUBKD6ggMUIchjsisA,13559
|
174
174
|
bec_widgets/widgets/dock/dock_area.pyproject,sha256=URW0UrDXCnkzk80rbQmUMgF6Uqay2TjHsq8Dq0g1j-c,37
|
175
175
|
bec_widgets/widgets/dock/dock_area_plugin.py,sha256=oG2zDxUA1YLvSBoFVeFVkz4HIWLruAwOsCZ00H2Z70A,1345
|
176
176
|
bec_widgets/widgets/dock/register_dock_area.py,sha256=Yqd1mq6CcHwlxHZxX5EHKONy4P44nMm8pso-4X0tvJI,464
|
177
177
|
bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
|
178
|
-
bec_widgets/widgets/figure/figure.py,sha256=
|
178
|
+
bec_widgets/widgets/figure/figure.py,sha256=yujtlDj5NutRJ0gfHMkCVXvBNj5r2z3pb3gwWlUQ92Q,28822
|
179
179
|
bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
180
180
|
bec_widgets/widgets/figure/plots/axis_settings.py,sha256=QxRpQwgfBr1H0HTjfOpiXi_-n8I0BaZhS8LRXNeVfFg,3544
|
181
181
|
bec_widgets/widgets/figure/plots/axis_settings.ui,sha256=a2qIuK9lyi9HCyrSvPr6wxzmm1FymaWcpmyOhMIiFt8,11013
|
182
|
-
bec_widgets/widgets/figure/plots/plot_base.py,sha256=
|
182
|
+
bec_widgets/widgets/figure/plots/plot_base.py,sha256=TG9FZZJi9ixTeZ1yDOO4sl7fJ524wxbNcr-2_Qd2mcQ,11154
|
183
183
|
bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
184
|
-
bec_widgets/widgets/figure/plots/image/image.py,sha256=
|
184
|
+
bec_widgets/widgets/figure/plots/image/image.py,sha256=NIgGilRuRyCYKFEsMT3N_Cp1oGsNLra1Pk5ZtgYjcQM,24916
|
185
185
|
bec_widgets/widgets/figure/plots/image/image_item.py,sha256=RljjbkqJEr2cKDlqj1j5GQ1h89jpqOV-OpFz1TbED8I,10937
|
186
186
|
bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=GeTtWjbldy6VejMwPGQgM-o3d6bmLglCjdoktu19xfA,5262
|
187
187
|
bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -192,7 +192,7 @@ bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=ZwRxSfPHbMWEv
|
|
192
192
|
bec_widgets/widgets/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
193
193
|
bec_widgets/widgets/image/bec_image_widget.pyproject,sha256=PHisdBo5_5UCApd27GkizzqgfdjsDx2bFZa_p9LiSW8,30
|
194
194
|
bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=B7whBMsoQ85MyCR_C6YHBl2s1T7odOJJYeiHaLXzmcM,1387
|
195
|
-
bec_widgets/widgets/image/image_widget.py,sha256=
|
195
|
+
bec_widgets/widgets/image/image_widget.py,sha256=csPtl48uZgSlyomxG68bFJX929Y2WOvgv5risWQuXFI,16319
|
196
196
|
bec_widgets/widgets/image/register_bec_image_widget.py,sha256=01YLZQTMSSIXvH1TSL-1AYsRs1a4EbSwKLVAwh9AjeA,478
|
197
197
|
bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
198
198
|
bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=mBKM89H6SuHuFy1lQg1n8s1gQiN5QEkZf0xua8aPDns,2402
|
@@ -202,7 +202,7 @@ bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=V6iN82E8Za8B
|
|
202
202
|
bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=URcysThbJKGsCZUqQm2lCtVn5FG8t4kT7DaN5EJUexg,7555
|
203
203
|
bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py,sha256=qRG8PtWGjso0pWbvj_DXKnbUfmQzfGqPSrnAozXfM7o,492
|
204
204
|
bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
205
|
-
bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py,sha256=
|
205
|
+
bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py,sha256=U-r3YHsxf2XvZn0kVbrYIT2aXKSaG5wM1JEnGzwGMVU,2258
|
206
206
|
bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui,sha256=nv5vPftt6vcIl60OOZLRvwD29rdHVWOoGmz168BnwKw,2685
|
207
207
|
bec_widgets/widgets/position_indicator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
208
208
|
bec_widgets/widgets/position_indicator/position_indicator.py,sha256=QVlWvs_RvEJe5IMxGYCpi-CXYF7vFeMqEMFCs6u5NGc,2020
|
@@ -260,7 +260,7 @@ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui,s
|
|
260
260
|
bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py,sha256=UptWjHRVp7gTAMkWikfia3U6k8EV_pAvk-fI_vhWd2w,2437
|
261
261
|
bec_widgets/widgets/website/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
262
262
|
bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEAiDjaUS_l7JroYVdsotnLpD9H0,476
|
263
|
-
bec_widgets/widgets/website/website.py,sha256=
|
263
|
+
bec_widgets/widgets/website/website.py,sha256=vyRJr4jsti1h6cPHzTTtS_0IELJ3kYdS2_HdZCzavl4,1840
|
264
264
|
bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
|
265
265
|
bec_widgets/widgets/website/website_widget_plugin.py,sha256=hcASV-UW2TsIwspApzMbKoTVL9rqImU8ukMRn1EfXTw,1358
|
266
266
|
docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
|
@@ -318,51 +318,51 @@ tests/end-2-end/conftest.py,sha256=-BLnFE-NeCerf6xahGCkbZ4Ktactowi6RkBnboIzRvg,1
|
|
318
318
|
tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=hj06aUBGofq7yeFVoT3LB4NrCjc5FbOo5CGTvz7afpI,9118
|
319
319
|
tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=73vuBbPJvkMR3w2jnQ7lk0z4-wN3HAmkLFDdv4BRPrM,6604
|
320
320
|
tests/end-2-end/test_rpc_register_e2e.py,sha256=blhMiW7HVHX1kGm5dg8Sv0PeCuJ0gnBz3evznQFz_B8,1619
|
321
|
-
tests/end-2-end/test_scan_control_e2e.py,sha256=
|
321
|
+
tests/end-2-end/test_scan_control_e2e.py,sha256=u7oLgFyltkMW2apSZKDukMIXvYrbhHrU32p4mBdn8VE,2276
|
322
322
|
tests/references/SpinnerWidget/SpinnerWidget_darwin.png,sha256=-Tf5x0xY0pb-8sXH6Pk8cZL5PAxZ4vMR5RgyGCxisM4,9490
|
323
323
|
tests/references/SpinnerWidget/SpinnerWidget_linux.png,sha256=-Tf5x0xY0pb-8sXH6Pk8cZL5PAxZ4vMR5RgyGCxisM4,9490
|
324
324
|
tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png,sha256=wPc65MrSSKJib2aBlPI20mBE-zfamOh-SORGRD27dhQ,14773
|
325
325
|
tests/references/SpinnerWidget/SpinnerWidget_started_linux.png,sha256=gE1L3nVuypmsW8vcnV9kX4mDgQGGXYjiEIYiRifr5DM,15265
|
326
326
|
tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
327
327
|
tests/unit_tests/client_mocks.py,sha256=4pS4KvvFGY9hjphds9i-GoIjVWVkax4XpDnVp6Mctfw,5275
|
328
|
-
tests/unit_tests/conftest.py,sha256=
|
328
|
+
tests/unit_tests/conftest.py,sha256=EE5RX_xR50ELJPgT2kny9rM1NCmCRO22sd_L9fvVSEk,1917
|
329
329
|
tests/unit_tests/test_bec_connector.py,sha256=5uqBfjgMeOlGvqJlFbytxEpZ1El7_Y2q8fZHh4GvtD8,2478
|
330
330
|
tests/unit_tests/test_bec_dispatcher.py,sha256=rYPiRizHaswhGZw55IBMneDFxmPiCCLAZQBqjEkpdyY,3992
|
331
|
-
tests/unit_tests/test_bec_dock.py,sha256=
|
332
|
-
tests/unit_tests/test_bec_figure.py,sha256=
|
333
|
-
tests/unit_tests/test_bec_image.py,sha256=
|
334
|
-
tests/unit_tests/test_bec_image_widget.py,sha256=
|
335
|
-
tests/unit_tests/test_bec_motor_map.py,sha256=
|
336
|
-
tests/unit_tests/test_bec_queue.py,sha256=
|
337
|
-
tests/unit_tests/test_bec_status_box.py,sha256=
|
331
|
+
tests/unit_tests/test_bec_dock.py,sha256=oxOGzeHUmyxYI7eDOnvnhVeFNPRTlo8fjpHXMmPiS1s,5574
|
332
|
+
tests/unit_tests/test_bec_figure.py,sha256=oTlwHgDSrE4QRN3i9ZRM3QT2Xt8jfOyUTNxIZqZ4WKQ,9780
|
333
|
+
tests/unit_tests/test_bec_image.py,sha256=Bc9eaLDk_9MfVFC6BZ-dymf-bQZg_CHL810nssXsj_k,2814
|
334
|
+
tests/unit_tests/test_bec_image_widget.py,sha256=eU7uhKTQSf1Q5uV6EjsuUpf_oiMLNrZ1m10DjeQae0Y,7459
|
335
|
+
tests/unit_tests/test_bec_motor_map.py,sha256=H5O2pce9XkEV_t2uO20ib2Dh5_xVn3QA1_bVWcKgq1I,10117
|
336
|
+
tests/unit_tests/test_bec_queue.py,sha256=pHBZBTgxidAtp6Kcwi-qldUDxnoPGI0RweyLRj-4hHo,4646
|
337
|
+
tests/unit_tests/test_bec_status_box.py,sha256=gZdjyy9DNuUP9UwleTLj2Dp5HUImiqnkHjXWiqL0Q-o,4868
|
338
338
|
tests/unit_tests/test_client_utils.py,sha256=CBdWIVJ_UiyFzTJnX3XJm4PGw2uXhFvRCP_Y9ifckbw,2630
|
339
|
-
tests/unit_tests/test_color_map_selector.py,sha256=
|
339
|
+
tests/unit_tests/test_color_map_selector.py,sha256=dTsizpT7TUpX2AEWIc0v09KPOryhWepFXFI9duQ3NF8,1497
|
340
340
|
tests/unit_tests/test_color_validation.py,sha256=xbFbtFDia36XLgaNrX2IwvAX3IDC_Odpj5BGoJSgiIE,2389
|
341
341
|
tests/unit_tests/test_crosshair.py,sha256=3OMAJ2ZaISYXMOtkXf1rPdy94vCr8njeLi6uHblBL9Q,5045
|
342
342
|
tests/unit_tests/test_device_box.py,sha256=q9IVFpt1NF3TBF0Jhk-I-LRiuvvHG3FGUalw4jEYwVo,3431
|
343
|
-
tests/unit_tests/test_device_input_base.py,sha256=
|
344
|
-
tests/unit_tests/test_device_input_widgets.py,sha256=
|
343
|
+
tests/unit_tests/test_device_input_base.py,sha256=LY-3adMb2xM9pBiP6V2bAJF_65csCe2Xfaq5ArVEE1E,2859
|
344
|
+
tests/unit_tests/test_device_input_widgets.py,sha256=Y3mc_EaeQAPxpj6DijvxLLyMPSxnaNN86KhIL4ASO3E,5821
|
345
345
|
tests/unit_tests/test_error_utils.py,sha256=LQOxz29WCGOe0qwFkaPDixjUmdnF3qeAGxD4A3t9IKg,2108
|
346
346
|
tests/unit_tests/test_generate_cli_client.py,sha256=ng-eV5iF7Dhm-6YpxYo99CMY0KgqoaZBQNkMeKULDBU,3355
|
347
347
|
tests/unit_tests/test_generate_plugin.py,sha256=9603ucZChM-pYpHadzsR94U1Zec1KZT34WedX9qzgMo,4464
|
348
|
-
tests/unit_tests/test_motor_map_widget.py,sha256=
|
349
|
-
tests/unit_tests/test_plot_base.py,sha256=
|
348
|
+
tests/unit_tests/test_motor_map_widget.py,sha256=j3Vv_jNTsJTg6UgtwoxFp-Qwi_1blT9HK-USALPgxSI,7469
|
349
|
+
tests/unit_tests/test_plot_base.py,sha256=evejmkYBBAu9f5XoA4dpYGPRGR5lIc3JqN4UQdGRY3Q,4134
|
350
350
|
tests/unit_tests/test_plugin_utils.py,sha256=ayksWdrFY7kOiA0wVEjKFmFCF3UhH3lG8tzPVOpwysk,528
|
351
|
-
tests/unit_tests/test_ring_progress_bar.py,sha256=
|
351
|
+
tests/unit_tests/test_ring_progress_bar.py,sha256=Q-hbRPj44Oa3RLJayQGNUKTnsDllk6j4sJwyJdDudT4,12233
|
352
352
|
tests/unit_tests/test_rpc_register.py,sha256=hECjZEimd440mwRrO0rg7L3PKN7__3DgjmESN6wx3bo,1179
|
353
353
|
tests/unit_tests/test_rpc_server.py,sha256=MvstcvqUsnGAzUxw8Et1xXXikk_VIxFPwDZD0v1QGkg,1500
|
354
354
|
tests/unit_tests/test_rpc_widget_handler.py,sha256=ceQ3BPnBIFY2Hy-sDPw0wxxREVTTphILts0gvX9qoUw,234
|
355
|
-
tests/unit_tests/test_scan_control.py,sha256=
|
355
|
+
tests/unit_tests/test_scan_control.py,sha256=Wr6KcE8av4sEIOx5VgYbzVCem3Jgb4Kzx_oOuvwlmkE,13459
|
356
356
|
tests/unit_tests/test_scan_control_group_box.py,sha256=HNqjP10B_NonikspNwKz9upJU-t7xf6hwBerNhbC-uo,5563
|
357
|
-
tests/unit_tests/test_setting_dialog.py,sha256=
|
357
|
+
tests/unit_tests/test_setting_dialog.py,sha256=vgHz5eDSYidpa4lRS4UxaW4GsEKc8ZkrxcdjxVPCvEE,3130
|
358
358
|
tests/unit_tests/test_spinner.py,sha256=Moq84xC4ZLRQCcFLuTCrWIYdP4Y8E49s_IlZ3tKx9Jc,814
|
359
|
-
tests/unit_tests/test_stop_button.py,sha256=
|
360
|
-
tests/unit_tests/test_text_box_widget.py,sha256=
|
361
|
-
tests/unit_tests/test_toggle.py,sha256=
|
362
|
-
tests/unit_tests/test_vscode_widget.py,sha256=
|
363
|
-
tests/unit_tests/test_waveform1d.py,sha256=
|
364
|
-
tests/unit_tests/test_waveform_widget.py,sha256=
|
365
|
-
tests/unit_tests/test_website_widget.py,sha256=
|
359
|
+
tests/unit_tests/test_stop_button.py,sha256=Hc87-G6QzLnpeeIdf82GdLI1_GA1NeMuGP7JBTExxQQ,770
|
360
|
+
tests/unit_tests/test_text_box_widget.py,sha256=OhHy5gu_XgWU2WvcO5ZcGbZcc-tiE-lZyOLPOsyCgmY,1843
|
361
|
+
tests/unit_tests/test_toggle.py,sha256=Amzgres7te0tTQIDR2WMKSx9Kce44TxMpIPR6HZygXQ,832
|
362
|
+
tests/unit_tests/test_vscode_widget.py,sha256=BOepZuDzbATK7_yy4wJEkVbz5VWSwVBj9__uxJ5vpM0,2748
|
363
|
+
tests/unit_tests/test_waveform1d.py,sha256=AOfpHvebsEVb-MNf8Shh2bAML5bandtvoXkYqKWe8qc,24470
|
364
|
+
tests/unit_tests/test_waveform_widget.py,sha256=1FJMo6dDptVk-_Sq4dAhBza4HYe5w6fLQfsOvzWkueg,8573
|
365
|
+
tests/unit_tests/test_website_widget.py,sha256=POcHK4INck3quasMD14DBlBBJWD0uKJbkOMt_JsPhXA,708
|
366
366
|
tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
|
367
367
|
tests/unit_tests/test_yaml_dialog.py,sha256=SEvUgC_poWC6fAoHVWolaORpgMFc7c0Xqqk9cFvHSvo,5826
|
368
368
|
tests/unit_tests/test_configs/config_device.yaml,sha256=h3zNb5ZaT_sA59Sf-24qsXs54MgUsspo-GOJmKWHx3o,695
|
@@ -370,8 +370,8 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
|
|
370
370
|
tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
|
371
371
|
tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
372
372
|
tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
|
373
|
-
bec_widgets-0.93.
|
374
|
-
bec_widgets-0.93.
|
375
|
-
bec_widgets-0.93.
|
376
|
-
bec_widgets-0.93.
|
377
|
-
bec_widgets-0.93.
|
373
|
+
bec_widgets-0.93.3.dist-info/METADATA,sha256=_VblxDpuCc284m1SFf95vKgTaR-Jng60jurwZViD06c,1307
|
374
|
+
bec_widgets-0.93.3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
375
|
+
bec_widgets-0.93.3.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
|
376
|
+
bec_widgets-0.93.3.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
377
|
+
bec_widgets-0.93.3.dist-info/RECORD,,
|
pyproject.toml
CHANGED
tests/unit_tests/conftest.py
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
import pytest
|
2
|
+
from pytestqt.exceptions import TimeoutError as QtBotTimeoutError
|
3
|
+
from qtpy.QtWidgets import QApplication
|
2
4
|
|
3
5
|
from bec_widgets.cli.rpc_register import RPCRegister
|
4
6
|
from bec_widgets.qt_utils import error_popups
|
@@ -6,9 +8,16 @@ from bec_widgets.utils import bec_dispatcher as bec_dispatcher_module
|
|
6
8
|
|
7
9
|
|
8
10
|
@pytest.fixture(autouse=True)
|
9
|
-
def qapplication(
|
11
|
+
def qapplication(qtbot): # pylint: disable=unused-argument
|
10
12
|
yield
|
11
|
-
|
13
|
+
|
14
|
+
qapp = QApplication.instance()
|
15
|
+
# qapp.quit()
|
16
|
+
qapp.processEvents()
|
17
|
+
try:
|
18
|
+
qtbot.waitUntil(lambda: qapp.topLevelWidgets() == [])
|
19
|
+
except QtBotTimeoutError as exc:
|
20
|
+
raise TimeoutError(f"Failed to close all widgets: {qapp.topLevelWidgets()}") from exc
|
12
21
|
|
13
22
|
|
14
23
|
@pytest.fixture(autouse=True)
|
@@ -31,3 +40,25 @@ def bec_dispatcher(threads_check): # pylint: disable=unused-argument
|
|
31
40
|
@pytest.fixture(autouse=True)
|
32
41
|
def clean_singleton():
|
33
42
|
error_popups._popup_utility_instance = None
|
43
|
+
|
44
|
+
|
45
|
+
def create_widget(qtbot, widget, *args, **kwargs):
|
46
|
+
"""
|
47
|
+
Create a widget and add it to the qtbot for testing. This is a helper function that
|
48
|
+
should be used in all tests that require a widget to be created.
|
49
|
+
DO NOT CREATE WIDGETS DIRECTLY IN A FIXTURE!
|
50
|
+
|
51
|
+
Args:
|
52
|
+
qtbot (fixture): pytest-qt fixture
|
53
|
+
widget (QWidget): widget class to be created
|
54
|
+
*args: positional arguments for the widget
|
55
|
+
**kwargs: keyword arguments for the widget
|
56
|
+
|
57
|
+
Returns:
|
58
|
+
QWidget: the created widget
|
59
|
+
|
60
|
+
"""
|
61
|
+
widget = widget(*args, **kwargs)
|
62
|
+
qtbot.addWidget(widget)
|
63
|
+
qtbot.waitExposed(widget)
|
64
|
+
return widget
|