bec-widgets 0.51.0__py3-none-any.whl → 0.52.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.
Files changed (48) hide show
  1. bec_widgets/cli/__init__.py +1 -1
  2. bec_widgets/cli/bec_widgets_icon.png +0 -0
  3. bec_widgets/cli/client.py +328 -5
  4. bec_widgets/cli/client_utils.py +17 -5
  5. bec_widgets/cli/generate_cli.py +7 -3
  6. bec_widgets/cli/rpc_register.py +4 -0
  7. bec_widgets/cli/rpc_wigdet_handler.py +27 -0
  8. bec_widgets/cli/server.py +34 -9
  9. bec_widgets/examples/jupyter_console/jupyter_console_window.py +54 -2
  10. bec_widgets/examples/jupyter_console/jupyter_console_window.ui +26 -2
  11. bec_widgets/examples/jupyter_console/terminal_icon.png +0 -0
  12. bec_widgets/utils/__init__.py +1 -0
  13. bec_widgets/utils/bec_connector.py +18 -3
  14. bec_widgets/utils/bec_table.py +1 -0
  15. bec_widgets/utils/container_utils.py +3 -0
  16. bec_widgets/utils/crosshair.py +1 -0
  17. bec_widgets/utils/entry_validator.py +2 -0
  18. bec_widgets/utils/layout_manager.py +121 -0
  19. bec_widgets/utils/widget_io.py +5 -0
  20. bec_widgets/utils/yaml_dialog.py +2 -0
  21. bec_widgets/validation/monitor_config_validator.py +2 -1
  22. bec_widgets/widgets/__init__.py +1 -0
  23. bec_widgets/widgets/dock/__init__.py +2 -0
  24. bec_widgets/widgets/dock/dock.py +269 -0
  25. bec_widgets/widgets/dock/dock_area.py +225 -0
  26. bec_widgets/widgets/figure/figure.py +45 -16
  27. bec_widgets/widgets/plots/__init__.py +1 -1
  28. bec_widgets/widgets/plots/image.py +46 -9
  29. bec_widgets/widgets/plots/motor_map.py +17 -3
  30. bec_widgets/widgets/plots/plot_base.py +14 -3
  31. bec_widgets/widgets/plots/waveform.py +37 -10
  32. bec_widgets/widgets/scan_control/scan_control.py +10 -2
  33. bec_widgets/widgets/toolbar/toolbar.py +1 -0
  34. {bec_widgets-0.51.0.dist-info → bec_widgets-0.52.1.dist-info}/METADATA +1 -1
  35. {bec_widgets-0.51.0.dist-info → bec_widgets-0.52.1.dist-info}/RECORD +46 -40
  36. tests/end-2-end/conftest.py +19 -4
  37. tests/end-2-end/test_bec_dock_rpc_e2e.py +145 -0
  38. tests/end-2-end/test_bec_figure_rpc_e2e.py +17 -17
  39. tests/end-2-end/test_rpc_register_e2e.py +3 -3
  40. tests/unit_tests/test_bec_dock.py +114 -0
  41. tests/unit_tests/test_bec_figure.py +20 -22
  42. tests/unit_tests/test_generate_cli_client.py +1 -1
  43. tests/unit_tests/test_waveform1d.py +1 -1
  44. bec_widgets/simulations/__init__.py +0 -0
  45. bec_widgets/utils/ctrl_c.py +0 -39
  46. {bec_widgets-0.51.0.dist-info → bec_widgets-0.52.1.dist-info}/LICENSE +0 -0
  47. {bec_widgets-0.51.0.dist-info → bec_widgets-0.52.1.dist-info}/WHEEL +0 -0
  48. {bec_widgets-0.51.0.dist-info → bec_widgets-0.52.1.dist-info}/top_level.txt +0 -0
@@ -1,19 +1,21 @@
1
1
  bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- bec_widgets/cli/__init__.py,sha256=ULoNTVnv2UeSSjhFq3uCQJ-0JTJf9oU76l27aRiizL4,78
2
+ bec_widgets/cli/__init__.py,sha256=EHPu69lxYndxm6tJqwHHlktuq0hvOCaid1Nxh0jaexo,91
3
3
  bec_widgets/cli/auto_updates.py,sha256=ptZeBKr13o9THc8oKLn93K_16i6G3pxzw8hZ4MUgjW4,3845
4
- bec_widgets/cli/bec_widgets_icon.png,sha256=pRCGpoOtwyZl97fBV_CHcGppliErzd0qQkCXLxjbp-s,5760
5
- bec_widgets/cli/client.py,sha256=AvkaEDKB8cZFm2WS5JWIusMXtcqErEeP2Ayk9l7iAp8,39163
6
- bec_widgets/cli/client_utils.py,sha256=IzyVAcko47vC47_oT0fAi9M-8OrZ2qmUfMlOAvQGuhU,10205
7
- bec_widgets/cli/generate_cli.py,sha256=JLqUlUgfz_f_4KHPRUAN-Xli-K7uNOc8-F-LkAC7Scw,4004
8
- bec_widgets/cli/rpc_register.py,sha256=OZOWX0IKGXqDsnrUYi0Irl_zpPS4Q_JPCV9JQfN6YYw,2212
9
- bec_widgets/cli/server.py,sha256=UpbegcLn2nd9gPF2swNfPQGHVwG14ZjQBpZKCAjQT4E,4942
4
+ bec_widgets/cli/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
5
+ bec_widgets/cli/client.py,sha256=WWWj7wE2nZW9JCMcrxRxDjuEnqyfR9bCfjkpUYoW7oI,45613
6
+ bec_widgets/cli/client_utils.py,sha256=DNMjH0g3P8k0pdKh7J3d0jNMQ_H1OYtbwSe1Oek1LH0,10402
7
+ bec_widgets/cli/generate_cli.py,sha256=FFDAogkEewfXMP20jkBBB08vcQdg5k1gnHpldXUcgOw,4101
8
+ bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
9
+ bec_widgets/cli/rpc_wigdet_handler.py,sha256=_a035h9wEB-CQ0CwjNEuowcvlh3UstHu6EdY-UDQOQA,798
10
+ bec_widgets/cli/server.py,sha256=wIDOd56ZPfnM42pOJD8NCI3Dw38Aurb9TwwTrricfvU,5773
10
11
  bec_widgets/examples/__init__.py,sha256=WWQ0cu7m8sA4Ehy-DWdTIqSISjaHsbxhsNmNrMnhDZU,202
11
12
  bec_widgets/examples/eiger_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
13
  bec_widgets/examples/eiger_plot/eiger_plot.py,sha256=Uxl2Usf8jEzaX7AT8zVqa1x8ZIEgI1HmazSlb-tRFWE,10359
13
14
  bec_widgets/examples/eiger_plot/eiger_plot.ui,sha256=grHfnO3OG_lelJhdRsnA0badCvRdDunPrIMIyNQ5N-w,5809
14
15
  bec_widgets/examples/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=aEwwOHNW4CJab41hbEB3hvWEEAPNtGjFQEwMo8GkEmM,3581
16
- bec_widgets/examples/jupyter_console/jupyter_console_window.ui,sha256=GodXBvBvs5QAUsHbo3pcxR4o51Tvce4DTqpTluk3hOs,742
16
+ bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=s8ysnlktLv3932ody8pRA1mghH1QQcxLjQK1HTZ59b8,5642
17
+ bec_widgets/examples/jupyter_console/jupyter_console_window.ui,sha256=2A2mNTUMZBYygz8K4qWzrcjnNqZBMVyeHm26iLZVRWI,1473
18
+ bec_widgets/examples/jupyter_console/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
17
19
  bec_widgets/examples/mca_readout/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
20
  bec_widgets/examples/mca_readout/mca_plot.py,sha256=do7mSK_nzHtojRiMi8JoN_Rckg9yfjYYWz2S_Nl3xbE,5079
19
21
  bec_widgets/examples/mca_readout/mca_sim.py,sha256=yiX_3sOgDZIbAYA4D2BGmOgLMBWbQMOej0hSP4cQd0o,754
@@ -27,27 +29,29 @@ bec_widgets/examples/motor_movement/motor_example.py,sha256=_0S_VnksFhwb3WM3dQuI
27
29
  bec_widgets/examples/stream_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
30
  bec_widgets/examples/stream_plot/line_plot.ui,sha256=rgNfhOXu1AcWF0P6wnOlmJKDjS-VIoduVrREvmzJQR8,4626
29
31
  bec_widgets/examples/stream_plot/stream_plot.py,sha256=vHii1p9JxSyGQ_VcCjnk9SHJ41Q6Oi1GGd6swVVHLRM,12177
30
- bec_widgets/simulations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- bec_widgets/utils/__init__.py,sha256=xytx86Yosjkta0PU4rHfoeO7FCPcimS15xjMPQUgIXc,403
32
- bec_widgets/utils/bec_connector.py,sha256=U_quQy7p1ISEpTnvwKsnDw5rdCc3jEoATfPVez2K7eI,4867
32
+ bec_widgets/utils/__init__.py,sha256=PAHNbPFnPD-XGxKBZ7ctx9WBrvm9MArkCYDNfoOxVJA,449
33
+ bec_widgets/utils/bec_connector.py,sha256=dsAPYbI4XzH3JnPcpAX3Z90OmcNVbNrDXPg3l7x8xy8,5185
33
34
  bec_widgets/utils/bec_dispatcher.py,sha256=xJrsHJ-flLFGA-XCa6wCsMzMpRu1fAy9IcUuLh6igSo,5569
34
- bec_widgets/utils/bec_table.py,sha256=Xy5qM343K8EvEpB4g_129b63yo1wdEvEY3wqxB_p_Iw,716
35
+ bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
35
36
  bec_widgets/utils/colors.py,sha256=JsLxzkxbw-I8GIuvnIKyiM83n0edhyMG2Fa4Ffm62ww,2392
36
- bec_widgets/utils/container_utils.py,sha256=rL-ryupQ4-7Y8mKNup5aklXleOfXSd97uwXTa9UR90A,1492
37
- bec_widgets/utils/crosshair.py,sha256=5gG4G6jjtp6Bd1Y5EySHP2EkmtR4mYdxLCgVtx9fokE,9406
38
- bec_widgets/utils/ctrl_c.py,sha256=NMJlPDZcuqMUGykyhuZY5Ibed4yRI1K_uh16z2MmlXQ,1198
39
- bec_widgets/utils/entry_validator.py,sha256=88OpJqaldMjiaEk7F9rRcwPuCOTLCzXmAlSEL-_7iXU,1296
37
+ bec_widgets/utils/container_utils.py,sha256=m3VUyAYmSWkEwApP9tBvKxPYVtc2kHw4toxIpMryJy4,1495
38
+ bec_widgets/utils/crosshair.py,sha256=L4-N8HGgCbY0L3qftv8vi3c9FRdr1aMsRhI54w8aFso,9407
39
+ bec_widgets/utils/entry_validator.py,sha256=IqmtResXQtnmMvWVSl8IrnggqSzXLp4cSggn6WdSTpE,1298
40
+ bec_widgets/utils/layout_manager.py,sha256=H0nKsIMaPxRkof1MEXlSmW6w1dFxA6astaGzf4stI84,4727
40
41
  bec_widgets/utils/plugin_utils.py,sha256=wi5x7VVFee0PqAcP-EqPWjYfSe-LLhaK93y6qmnbLIw,1487
41
42
  bec_widgets/utils/rpc_decorator.py,sha256=pIvtqySQLnuS7l2Ti_UAe4WX7CRivZnsE5ZdKAihxh0,479
42
43
  bec_widgets/utils/thread_checker.py,sha256=rDNuA3X6KQyA7JPb67mccTg0z8YkInynLAENQDQpbuE,1607
43
44
  bec_widgets/utils/validator_delegate.py,sha256=Emj1WF6W8Ke1ruBWUfmHdVJpmOSPezuOt4zvQTay_44,442
44
- bec_widgets/utils/widget_io.py,sha256=JKl508VnqQSxcaHqKaoBQ1TWSOm3pXhxQGx7iF_pRA0,10875
45
- bec_widgets/utils/yaml_dialog.py,sha256=soZI8BOjlqYGfYDga70MEvkxJTsktq4y7B3uog2cSik,1851
45
+ bec_widgets/utils/widget_io.py,sha256=f36198CvT_EzWQ_cg2G-4tRRsaMdJ3yVqsZWKJCQEfA,10880
46
+ bec_widgets/utils/yaml_dialog.py,sha256=cMVif-39SB9WjwGH5FWBJcFs4tnfFJFs5cacydRyhy0,1853
46
47
  bec_widgets/validation/__init__.py,sha256=ismd1bU5FhFb0zFPwNKuq7oT48G4Y2GfaMZOdNKUtGk,132
47
- bec_widgets/validation/monitor_config_validator.py,sha256=M9p8K_nvxicnqJB4X7j90R377WHYVH4wMCtSXsRI51M,8150
48
- bec_widgets/widgets/__init__.py,sha256=HBzIWJYX4dp2iDZl_qIuyy-X5IWRMhGwQ-4UisP8wqE,353
48
+ bec_widgets/validation/monitor_config_validator.py,sha256=LJ0kk1cT0x6rAMuEM5XnmlUb-7caP-jqn4-UXe0Jjho,8145
49
+ bec_widgets/widgets/__init__.py,sha256=NOgRDV9-uwrH1OK2JdfG5c0WcW77TSRz3PeNlGw22Lc,392
50
+ bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
51
+ bec_widgets/widgets/dock/dock.py,sha256=vnOQnOWWnd-3X07kniSW_I5l0uEHZOaWhfuqZkDGIqE,8467
52
+ bec_widgets/widgets/dock/dock_area.py,sha256=cmEsGq-QQvy-j7L5vYMxjpvFLZVOpK9P0KekpH2E4TM,7207
49
53
  bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
50
- bec_widgets/widgets/figure/figure.py,sha256=IOj5rz3dXHOThtdLRPHx0lpoIQCLg-QbPGO1ECM-CKo,28484
54
+ bec_widgets/widgets/figure/figure.py,sha256=E3H2O5M_ZyAgnej3MkpFbWZAtAvWFpgdtiM14lbQjlw,28756
51
55
  bec_widgets/widgets/monitor/__init__.py,sha256=afXuZcBOxNAuYdCkIQXX5J60R5A3Q_86lNEW2vpFtPI,32
52
56
  bec_widgets/widgets/monitor/config_dialog.py,sha256=Z1a4WRIVlfEGdwC-QG25kba2EHCZWi5J843tBVZlWiI,20275
53
57
  bec_widgets/widgets/monitor/config_dialog.ui,sha256=ISMcF7CLTAMXhfZh2Yv5yezzAjMtb9fxY1pmX4B_jCg,5932
@@ -61,33 +65,35 @@ bec_widgets/widgets/motor_control/motor_control_selection.ui,sha256=vXXpvNWuL6xy
61
65
  bec_widgets/widgets/motor_control/motor_control_table.ui,sha256=t6aRKiSmutMfp0AyupavbCs0cal-FANEnlKQiPzC9PQ,2792
62
66
  bec_widgets/widgets/motor_map/__init__.py,sha256=K3c-3A_LbxK0UJ0_bV3opL-wGLTwBLendsJXsg8GAqE,32
63
67
  bec_widgets/widgets/motor_map/motor_map.py,sha256=vJlLWa0BXv5KMZ7UVT0q3I1I5CXgsDiXoM_ptsAsG3c,21860
64
- bec_widgets/widgets/plots/__init__.py,sha256=kGQTORTr-2M9vmVCK-T7AFre4bY5LVVzGxcIzT81-ZU,237
65
- bec_widgets/widgets/plots/image.py,sha256=uanFs3YoAefLgfQnAW5oiQtssRLfhKmWHMlOMpb9HqQ,32504
66
- bec_widgets/widgets/plots/motor_map.py,sha256=wbD95aIA4K3BLDZHZmHLblvKea7jPA7u4yw_tFaA4OE,15298
67
- bec_widgets/widgets/plots/plot_base.py,sha256=ZieahcTwz0tynszdYe4r0rrOlWcRmXblplIYuuTX1ic,8474
68
- bec_widgets/widgets/plots/waveform.py,sha256=CzPPq_9ZgBr4pZkLNSDqPbP8AJXXkan221-Fe8rw31c,28693
68
+ bec_widgets/widgets/plots/__init__.py,sha256=yaCWQEXiEVj3Oh9qvD3UDzY2HE2PiDKKyKINEcVeL2k,238
69
+ bec_widgets/widgets/plots/image.py,sha256=nCgL5TK4x4uMUuF_SCfepUJaf9T3bmyvp0eU6PqT3gM,32434
70
+ bec_widgets/widgets/plots/motor_map.py,sha256=kA2ALQFalg64xGuyRt7RAQ1DIiBpZUWyyWf3sT1LztU,15297
71
+ bec_widgets/widgets/plots/plot_base.py,sha256=oNUXEe94bD0_fVu-HPMRaoAuwPMW0DOAN8vvOeRz254,8513
72
+ bec_widgets/widgets/plots/waveform.py,sha256=DXoc3GSyEuhFFNCkvCOuY5bezS7yDQ_ynTKHgCVtktw,28611
69
73
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
70
- bec_widgets/widgets/scan_control/scan_control.py,sha256=tbO9tbVynRvs4VCxTZ4ZFBDTVAojIr-zkl70vuHbWgw,17116
74
+ bec_widgets/widgets/scan_control/scan_control.py,sha256=7UNCnt4XBXn_W9cq3Gm0oC12ZlQNERgdo--7UzyMJig,17188
71
75
  bec_widgets/widgets/toolbar/__init__.py,sha256=d-TP4_cr_VbpwreMM4ePnfZ5YXsEPQ45ibEf75nuGoE,36
72
- bec_widgets/widgets/toolbar/toolbar.py,sha256=sxz7rbc8XNPS6n2WMObF4-2PqdYfPxVtsOZEGV6mqa0,5124
76
+ bec_widgets/widgets/toolbar/toolbar.py,sha256=e0zCD_0q7K4NVhrzD8001Qvfxt-VhqHTgofchS9NgCM,5125
73
77
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
78
  tests/end-2-end/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- tests/end-2-end/conftest.py,sha256=jksYsc3Vm15LDyke-fmc80qCKBUnYuEjYi_QikeSOkE,756
76
- tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=-eMCKkj6sh_OkuVRhVTGMw5KJOyNhzDR783jdi5hNM4,5350
77
- tests/end-2-end/test_rpc_register_e2e.py,sha256=zqatLWjM_tYxiB3GgupYHHGTorGUFa0jvDFaqJpkZyA,1560
79
+ tests/end-2-end/conftest.py,sha256=b5Yebbj8C1-IcXq23XGbOnXF0kOZD_Po46Z-p4cBwfs,1346
80
+ tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=vfskJxQ6xQFfG6X6Ec8GOj2SoWIk8slMd43fERroaaw,4548
81
+ tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=aEpyhRYrDC3dNScsHxJfQPfuehU6Q9wGhCGkYmooAMk,5461
82
+ tests/end-2-end/test_rpc_register_e2e.py,sha256=Jrv46F-fyJa0tls1KPTeIxXQ4oUNgWkhAMwzvMQBRR8,1581
78
83
  tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
84
  tests/unit_tests/client_mocks.py,sha256=LNUgI9Ccv5Ol7_pmybIhoVqZZem1RPIsTDk7ZTARNls,4128
80
85
  tests/unit_tests/conftest.py,sha256=KrnktXPWmZhnKNue-xGWOLD1XGEvdz9Vf7V2eO3XQ3A,596
81
86
  tests/unit_tests/test_bec_connector.py,sha256=f2XXGGw3NoZLIUrDuZuEWwF_ttOYmmquCgUrV5XkIOY,1951
82
87
  tests/unit_tests/test_bec_dispatcher.py,sha256=WW-wlzSgZA_h2Qx5EMvXfMlb2i7RYbWj2Cz3S2EzsZQ,4178
83
- tests/unit_tests/test_bec_figure.py,sha256=T4k-E1D3sjTTDTFZGdTFDQv0EYNQ_R-QbWOM7pQwFw4,7926
88
+ tests/unit_tests/test_bec_dock.py,sha256=ZnHUoVQCGbikd0mM64XBL_k0Kxp0d3UqCHpcyY59emg,3596
89
+ tests/unit_tests/test_bec_figure.py,sha256=AOPJBGJIdAz80YqSiU1PosEHo-DjlmV8869HBcSHdS0,7860
84
90
  tests/unit_tests/test_bec_monitor.py,sha256=mN7gBY7oXY6j65zzihpy8r-FvwVoCQlie3F6SoVq0mo,7042
85
91
  tests/unit_tests/test_bec_motor_map.py,sha256=IXSfitUGxOPqmngwVNPK5nwi2QDcXWjBkGNb0dBZDxQ,4611
86
92
  tests/unit_tests/test_client_utils.py,sha256=fIApd5WgnJuyIzV-hdSABn6T-aOel2Wr2xuUX4Z651A,774
87
93
  tests/unit_tests/test_config_dialog.py,sha256=5uNGcpvrx8qDdMwFCTXr8HMzFZF4rFi-ZHoDpMxGMf8,6955
88
94
  tests/unit_tests/test_crosshair.py,sha256=d7fX-ymboZPALNqqiAj86PZ96llmGZ_3jf0yjVP0S94,5039
89
95
  tests/unit_tests/test_eiger_plot.py,sha256=bWnKBQid0YcLMQeBLy6ojb4ZpwTG-rFVT0kMg9Y08p8,4427
90
- tests/unit_tests/test_generate_cli_client.py,sha256=BdpTZMNUFOBJa2e-rme9AJUoXfueYyLiUCOpGi3SNvc,2400
96
+ tests/unit_tests/test_generate_cli_client.py,sha256=J7CFoO67txGu_u1Mwk32EejRX204FRuvmVg_yhAr1WM,2397
91
97
  tests/unit_tests/test_motor_control.py,sha256=jdTG35z3jOL9XCAIDNIGfdv60vcwGLHa3KJjKqJkoZw,20322
92
98
  tests/unit_tests/test_motor_map.py,sha256=UEjmtIYI2mxq9BUeopqoqNNy7UiPJEts9h45ufsFcrA,5979
93
99
  tests/unit_tests/test_plot_base.py,sha256=bOdlgAxh9oKk5PwiQ_MSFmzr44uJ61Tlg242RCIhl5c,2610
@@ -95,13 +101,13 @@ tests/unit_tests/test_rpc_register.py,sha256=hECjZEimd440mwRrO0rg7L3PKN7__3DgjmE
95
101
  tests/unit_tests/test_scan_control.py,sha256=7dtGpE0g4FqUhhQeCkyJl-9o7NH3DFZJgEaqDmBYbBc,7551
96
102
  tests/unit_tests/test_stream_plot.py,sha256=LNCYIj9CafremGaz-DwDktCRJRrjgfOdVewCUwwZE5s,5843
97
103
  tests/unit_tests/test_validator_errors.py,sha256=NFxyv0TIOXeZKZRRUBfVQ7bpunwY4KkG95yTUdQmvns,3532
98
- tests/unit_tests/test_waveform1d.py,sha256=-YfBi_m91sR_v4oj8rshARk4G6AOxqQB_gbVqJ3iXvY,15003
104
+ tests/unit_tests/test_waveform1d.py,sha256=cBtESTQgsVQdv-Wl75eHK9D8YY-b60Z5wqtPCo9ohu0,15002
99
105
  tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
100
106
  tests/unit_tests/test_yaml_dialog.py,sha256=HNrqferkdg02-9ieOhhI2mr2Qvt7GrYgXmQ061YCTbg,5794
101
107
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
108
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
103
- bec_widgets-0.51.0.dist-info/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
104
- bec_widgets-0.51.0.dist-info/METADATA,sha256=PwzbcGJ0Sy4MSwKmxEb2lh4XZVPxC_fHNjHyHVcPFHg,3724
105
- bec_widgets-0.51.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
106
- bec_widgets-0.51.0.dist-info/top_level.txt,sha256=EXCwhJYmXmd1DjYYL3hrGsddX-97IwYSiIHrf27FFVk,18
107
- bec_widgets-0.51.0.dist-info/RECORD,,
109
+ bec_widgets-0.52.1.dist-info/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
110
+ bec_widgets-0.52.1.dist-info/METADATA,sha256=yxz2llCxurAtFc3xAZgLXHEQA4LZmxP7vFVhTCy-3ms,3724
111
+ bec_widgets-0.52.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
112
+ bec_widgets-0.52.1.dist-info/top_level.txt,sha256=EXCwhJYmXmd1DjYYL3hrGsddX-97IwYSiIHrf27FFVk,18
113
+ bec_widgets-0.52.1.dist-info/RECORD,,
@@ -3,6 +3,7 @@ import pytest
3
3
  from bec_widgets.cli.rpc_register import RPCRegister
4
4
  from bec_widgets.cli.server import BECWidgetsCLIServer
5
5
  from bec_widgets.utils import BECDispatcher
6
+ from bec_widgets.widgets import BECDockArea, BECFigure
6
7
 
7
8
 
8
9
  @pytest.fixture(autouse=True)
@@ -12,11 +13,25 @@ def rpc_register():
12
13
 
13
14
 
14
15
  @pytest.fixture
15
- def rpc_server(qtbot, bec_client_lib, threads_check):
16
+ def rpc_server_figure(qtbot, bec_client_lib, threads_check):
16
17
  dispatcher = BECDispatcher(client=bec_client_lib) # Has to init singleton with fixture client
17
- server = BECWidgetsCLIServer(gui_id="figure")
18
- qtbot.addWidget(server.fig)
19
- qtbot.waitExposed(server.fig)
18
+ server = BECWidgetsCLIServer(gui_id="figure", gui_class=BECFigure)
19
+ qtbot.addWidget(server.gui)
20
+ qtbot.waitExposed(server.gui)
21
+ qtbot.wait(1000) # 1s long to wait until gui is ready
22
+ yield server
23
+ dispatcher.disconnect_all()
24
+ server.client.shutdown()
25
+ server.shutdown()
26
+ dispatcher.reset_singleton()
27
+
28
+
29
+ @pytest.fixture
30
+ def rpc_server_dock(qtbot, bec_client_lib, threads_check):
31
+ dispatcher = BECDispatcher(client=bec_client_lib) # Has to init singleton with fixture client
32
+ server = BECWidgetsCLIServer(gui_id="figure", gui_class=BECDockArea)
33
+ qtbot.addWidget(server.gui)
34
+ qtbot.waitExposed(server.gui)
20
35
  qtbot.wait(1000) # 1s long to wait until gui is ready
21
36
  yield server
22
37
  dispatcher.disconnect_all()
@@ -0,0 +1,145 @@
1
+ import numpy as np
2
+ import pytest
3
+ from bec_lib import MessageEndpoints
4
+
5
+ from bec_widgets.cli.client import BECDockArea, BECFigure, BECImageShow, BECMotorMap, BECWaveform
6
+
7
+
8
+ def test_rpc_add_dock_with_figure_e2e(rpc_server_dock, qtbot):
9
+ dock = BECDockArea(rpc_server_dock.gui_id)
10
+ dock_server = rpc_server_dock.gui
11
+
12
+ # BEC client shortcuts
13
+ client = rpc_server_dock.client
14
+ dev = client.device_manager.devices
15
+ scans = client.scans
16
+ queue = client.queue
17
+
18
+ # Create 3 docks
19
+ d0 = dock.add_dock("dock_0")
20
+ d1 = dock.add_dock("dock_1")
21
+ d2 = dock.add_dock("dock_2")
22
+
23
+ assert len(dock_server.docks) == 3
24
+
25
+ # Add 3 figures with some widgets
26
+ fig0 = d0.add_widget_bec("BECFigure")
27
+ fig1 = d1.add_widget_bec("BECFigure")
28
+ fig2 = d2.add_widget_bec("BECFigure")
29
+
30
+ assert len(dock_server.docks) == 3
31
+ assert len(dock_server.docks["dock_0"].widgets) == 1
32
+ assert len(dock_server.docks["dock_1"].widgets) == 1
33
+ assert len(dock_server.docks["dock_2"].widgets) == 1
34
+
35
+ assert fig1.__class__.__name__ == "BECFigure"
36
+ assert fig1.__class__ == BECFigure
37
+ assert fig2.__class__.__name__ == "BECFigure"
38
+ assert fig2.__class__ == BECFigure
39
+
40
+ mm = fig0.motor_map("samx", "samy")
41
+ plt = fig1.plot("samx", "bpm4i")
42
+ im = fig2.image("eiger")
43
+
44
+ assert mm.__class__.__name__ == "BECMotorMap"
45
+ assert mm.__class__ == BECMotorMap
46
+ assert plt.__class__.__name__ == "BECWaveform"
47
+ assert plt.__class__ == BECWaveform
48
+ assert im.__class__.__name__ == "BECImageShow"
49
+ assert im.__class__ == BECImageShow
50
+
51
+ assert mm.config_dict["signals"] == {
52
+ "source": "device_readback",
53
+ "x": {
54
+ "name": "samx",
55
+ "entry": "samx",
56
+ "unit": None,
57
+ "modifier": None,
58
+ "limits": [-50.0, 50.0],
59
+ },
60
+ "y": {
61
+ "name": "samy",
62
+ "entry": "samy",
63
+ "unit": None,
64
+ "modifier": None,
65
+ "limits": [-50.0, 50.0],
66
+ },
67
+ "z": None,
68
+ }
69
+ assert plt.config_dict["curves"]["bpm4i-bpm4i"]["signals"] == {
70
+ "source": "scan_segment",
71
+ "x": {"name": "samx", "entry": "samx", "unit": None, "modifier": None, "limits": None},
72
+ "y": {"name": "bpm4i", "entry": "bpm4i", "unit": None, "modifier": None, "limits": None},
73
+ "z": None,
74
+ }
75
+ assert im.config_dict["images"]["eiger"]["monitor"] == "eiger"
76
+
77
+ # check initial position of motor map
78
+ initial_pos_x = dev.samx.read()["samx"]["value"]
79
+ initial_pos_y = dev.samy.read()["samy"]["value"]
80
+
81
+ # Try to make a scan
82
+ status = scans.line_scan(dev.samx, -5, 5, steps=10, exp_time=0.05, relative=False)
83
+
84
+ # wait for scan to finish
85
+ while not status.status == "COMPLETED":
86
+ qtbot.wait(200)
87
+
88
+ # plot
89
+ plt_last_scan_data = queue.scan_storage.storage[-1].data
90
+ plt_data = plt.get_all_data()
91
+ assert plt_data["bpm4i-bpm4i"]["x"] == plt_last_scan_data["samx"]["samx"].val
92
+ assert plt_data["bpm4i-bpm4i"]["y"] == plt_last_scan_data["bpm4i"]["bpm4i"].val
93
+
94
+ # image
95
+ last_image_device = client.connector.get_last(MessageEndpoints.device_monitor("eiger"))[
96
+ "data"
97
+ ].data
98
+ qtbot.wait(500)
99
+ last_image_plot = im.images[0].get_data()
100
+ np.testing.assert_equal(last_image_device, last_image_plot)
101
+
102
+ # motor map
103
+ final_pos_x = dev.samx.read()["samx"]["value"]
104
+ final_pos_y = dev.samy.read()["samy"]["value"]
105
+
106
+ # check final coordinates of motor map
107
+ motor_map_data = mm.get_data()
108
+
109
+ np.testing.assert_equal(
110
+ [motor_map_data["x"][0], motor_map_data["y"][0]], [initial_pos_x, initial_pos_y]
111
+ )
112
+ np.testing.assert_equal(
113
+ [motor_map_data["x"][-1], motor_map_data["y"][-1]], [final_pos_x, final_pos_y]
114
+ )
115
+
116
+
117
+ def test_dock_manipulations_e2e(rpc_server_dock, qtbot):
118
+ dock = BECDockArea(rpc_server_dock.gui_id)
119
+ dock_server = rpc_server_dock.gui
120
+
121
+ d0 = dock.add_dock("dock_0")
122
+ d1 = dock.add_dock("dock_1")
123
+ d2 = dock.add_dock("dock_2")
124
+ assert len(dock_server.docks) == 3
125
+
126
+ d0.detach()
127
+ dock.detach_dock("dock_2")
128
+ assert len(dock_server.docks) == 3
129
+ assert len(dock_server.tempAreas) == 2
130
+
131
+ d0.attach()
132
+ assert len(dock_server.docks) == 3
133
+ assert len(dock_server.tempAreas) == 1
134
+
135
+ d2.remove()
136
+ qtbot.wait(200)
137
+
138
+ assert len(dock_server.docks) == 2
139
+ docks_list = list(dict(dock_server.docks).keys())
140
+ assert ["dock_0", "dock_1"] == docks_list
141
+
142
+ dock.clear_all()
143
+
144
+ assert len(dock_server.docks) == 0
145
+ assert len(dock_server.tempAreas) == 0
@@ -5,9 +5,9 @@ from bec_lib import MessageEndpoints
5
5
  from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
6
6
 
7
7
 
8
- def test_rpc_waveform1d_custom_curve(rpc_server, qtbot):
9
- fig = BECFigure(rpc_server.gui_id)
10
- fig_server = rpc_server.fig
8
+ def test_rpc_waveform1d_custom_curve(rpc_server_figure, qtbot):
9
+ fig = BECFigure(rpc_server_figure.gui_id)
10
+ fig_server = rpc_server_figure.gui
11
11
 
12
12
  ax = fig.add_plot()
13
13
  curve = ax.add_curve_custom([1, 2, 3], [1, 2, 3])
@@ -16,12 +16,12 @@ def test_rpc_waveform1d_custom_curve(rpc_server, qtbot):
16
16
  curve.set_color("blue")
17
17
 
18
18
  assert len(fig_server.widgets) == 1
19
- assert len(fig_server.widgets["widget_1"].curves) == 1
19
+ assert len(fig_server.widgets[ax.rpc_id].curves) == 1
20
20
 
21
21
 
22
- def test_rpc_plotting_shortcuts_init_configs(rpc_server, qtbot):
23
- fig = BECFigure(rpc_server.gui_id)
24
- fig_server = rpc_server.fig
22
+ def test_rpc_plotting_shortcuts_init_configs(rpc_server_figure, qtbot):
23
+ fig = BECFigure(rpc_server_figure.gui_id)
24
+ fig_server = rpc_server_figure.gui
25
25
 
26
26
  plt = fig.plot("samx", "bpm4i")
27
27
  im = fig.image("eiger")
@@ -75,15 +75,15 @@ def test_rpc_plotting_shortcuts_init_configs(rpc_server, qtbot):
75
75
  }
76
76
 
77
77
 
78
- def test_rpc_waveform_scan(rpc_server, qtbot):
79
- fig = BECFigure(rpc_server.gui_id)
78
+ def test_rpc_waveform_scan(rpc_server_figure, qtbot):
79
+ fig = BECFigure(rpc_server_figure.gui_id)
80
80
 
81
81
  # add 3 different curves to track
82
82
  plt = fig.plot("samx", "bpm4i")
83
83
  fig.plot("samx", "bpm3a")
84
84
  fig.plot("samx", "bpm4d")
85
85
 
86
- client = rpc_server.client
86
+ client = rpc_server_figure.client
87
87
  dev = client.device_manager.devices
88
88
  scans = client.scans
89
89
  queue = client.queue
@@ -108,12 +108,12 @@ def test_rpc_waveform_scan(rpc_server, qtbot):
108
108
  assert plt_data["bpm4d-bpm4d"]["y"] == last_scan_data["bpm4d"]["bpm4d"].val
109
109
 
110
110
 
111
- def test_rpc_image(rpc_server, qtbot):
112
- fig = BECFigure(rpc_server.gui_id)
111
+ def test_rpc_image(rpc_server_figure, qtbot):
112
+ fig = BECFigure(rpc_server_figure.gui_id)
113
113
 
114
114
  im = fig.image("eiger")
115
115
 
116
- client = rpc_server.client
116
+ client = rpc_server_figure.client
117
117
  dev = client.device_manager.devices
118
118
  scans = client.scans
119
119
 
@@ -133,13 +133,13 @@ def test_rpc_image(rpc_server, qtbot):
133
133
  np.testing.assert_equal(last_image_device, last_image_plot)
134
134
 
135
135
 
136
- def test_rpc_motor_map(rpc_server, qtbot):
137
- fig = BECFigure(rpc_server.gui_id)
138
- fig_server = rpc_server.fig
136
+ def test_rpc_motor_map(rpc_server_figure, qtbot):
137
+ fig = BECFigure(rpc_server_figure.gui_id)
138
+ fig_server = rpc_server_figure.gui
139
139
 
140
140
  motor_map = fig.motor_map("samx", "samy")
141
141
 
142
- client = rpc_server.client
142
+ client = rpc_server_figure.client
143
143
  dev = client.device_manager.devices
144
144
  scans = client.scans
145
145
 
@@ -18,9 +18,9 @@ def find_deepest_value(d: dict):
18
18
  return d
19
19
 
20
20
 
21
- def test_rpc_register_list_connections(rpc_server, rpc_register, qtbot):
22
- fig = BECFigure(rpc_server.gui_id)
23
- fig_server = rpc_server.fig
21
+ def test_rpc_register_list_connections(rpc_server_figure, rpc_register, qtbot):
22
+ fig = BECFigure(rpc_server_figure.gui_id)
23
+ fig_server = rpc_server_figure.gui
24
24
 
25
25
  plt = fig.plot("samx", "bpm4i")
26
26
  im = fig.image("eiger")
@@ -0,0 +1,114 @@
1
+ # pylint: disable=missing-function-docstring, missing-module-docstring, unused-import
2
+
3
+ import pytest
4
+
5
+ from bec_widgets.widgets import BECDock, BECDockArea
6
+
7
+ from .client_mocks import mocked_client
8
+
9
+
10
+ @pytest.fixture
11
+ def bec_dock_area(qtbot, mocked_client):
12
+ widget = BECDockArea(client=mocked_client)
13
+ qtbot.addWidget(widget)
14
+ qtbot.waitExposed(widget)
15
+ yield widget
16
+ widget.close()
17
+
18
+
19
+ def test_bec_dock_area_init(bec_dock_area):
20
+ assert bec_dock_area is not None
21
+ assert bec_dock_area.client is not None
22
+ assert isinstance(bec_dock_area, BECDockArea)
23
+ assert bec_dock_area.config.widget_class == "BECDockArea"
24
+
25
+
26
+ def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
27
+ initial_count = len(bec_dock_area.docks)
28
+
29
+ # Adding 3 docks
30
+ d0 = bec_dock_area.add_dock()
31
+ d1 = bec_dock_area.add_dock()
32
+ d2 = bec_dock_area.add_dock()
33
+
34
+ # Check if the docks were added
35
+ assert len(bec_dock_area.docks) == initial_count + 3
36
+ assert d0.name() in dict(bec_dock_area.docks)
37
+ assert d1.name() in dict(bec_dock_area.docks)
38
+ assert d2.name() in dict(bec_dock_area.docks)
39
+ assert bec_dock_area.docks[d0.name()].config.widget_class == "BECDock"
40
+ assert bec_dock_area.docks[d1.name()].config.widget_class == "BECDock"
41
+ assert bec_dock_area.docks[d2.name()].config.widget_class == "BECDock"
42
+
43
+ # Check panels API for getting docks to CLI
44
+ assert bec_dock_area.panels == dict(bec_dock_area.docks)
45
+
46
+ # Remove docks
47
+ d0_name = d0.name()
48
+ bec_dock_area.remove_dock(d0_name) # TODO fix this, works in jupyter console
49
+ qtbot.wait(200)
50
+ d1.remove()
51
+ qtbot.wait(200)
52
+
53
+ assert len(bec_dock_area.docks) == initial_count + 1
54
+ assert d0.name() not in dict(bec_dock_area.docks)
55
+ assert d1.name() not in dict(bec_dock_area.docks)
56
+ assert d2.name() in dict(bec_dock_area.docks)
57
+
58
+
59
+ def test_add_remove_bec_figure_to_dock(bec_dock_area):
60
+ d0 = bec_dock_area.add_dock()
61
+ fig = d0.add_widget_bec("BECFigure")
62
+ plt = fig.plot("samx", "bpm4i")
63
+ im = fig.image("eiger")
64
+ mm = fig.motor_map("samx", "samy")
65
+
66
+ assert len(bec_dock_area.docks) == 1
67
+ assert len(d0.widgets) == 1
68
+ assert len(d0.widget_list) == 1
69
+ assert len(fig.widgets) == 3
70
+
71
+ assert fig.config.widget_class == "BECFigure"
72
+ assert plt.config.widget_class == "BECWaveform"
73
+ assert im.config.widget_class == "BECImageShow"
74
+ assert mm.config.widget_class == "BECMotorMap"
75
+
76
+
77
+ def test_dock_area_errors(bec_dock_area):
78
+ d0 = bec_dock_area.add_dock(name="dock_0")
79
+
80
+ with pytest.raises(ValueError) as excinfo:
81
+ bec_dock_area.add_dock(name="dock_0")
82
+ assert "Dock with name dock_0 already exists." in str(excinfo.value)
83
+
84
+
85
+ def test_close_docks(bec_dock_area, qtbot):
86
+ d0 = bec_dock_area.add_dock(name="dock_0")
87
+ d1 = bec_dock_area.add_dock(name="dock_1")
88
+ d2 = bec_dock_area.add_dock(name="dock_2")
89
+
90
+ bec_dock_area.clear_all()
91
+ qtbot.wait(200)
92
+ assert len(bec_dock_area.docks) == 0
93
+
94
+
95
+ def test_undock_and_dock_docks(bec_dock_area, qtbot):
96
+ d0 = bec_dock_area.add_dock(name="dock_0")
97
+ d1 = bec_dock_area.add_dock(name="dock_1")
98
+ d2 = bec_dock_area.add_dock(name="dock_4")
99
+ d3 = bec_dock_area.add_dock(name="dock_3")
100
+
101
+ d0.detach()
102
+ bec_dock_area.detach_dock("dock_1")
103
+ d2.detach()
104
+
105
+ assert len(bec_dock_area.docks) == 4
106
+ assert len(bec_dock_area.tempAreas) == 3
107
+
108
+ d0.attach()
109
+ assert len(bec_dock_area.docks) == 4
110
+ assert len(bec_dock_area.tempAreas) == 2
111
+
112
+ bec_dock_area.attach_all()
113
+ assert len(bec_dock_area.docks) == 4
114
+ assert len(bec_dock_area.tempAreas) == 0
@@ -1,6 +1,4 @@
1
1
  # pylint: disable=missing-function-docstring, missing-module-docstring, unused-import
2
- import os
3
- from unittest.mock import MagicMock
4
2
 
5
3
  import numpy as np
6
4
  import pytest
@@ -48,12 +46,12 @@ def test_bec_figure_add_remove_plot(bec_figure):
48
46
 
49
47
  # Check if the widgets were added
50
48
  assert len(bec_figure._widgets) == initial_count + 3
51
- assert "widget_1" in bec_figure._widgets
52
- assert "widget_2" in bec_figure._widgets
53
- assert "widget_3" in bec_figure._widgets
54
- assert bec_figure._widgets["widget_1"].config.widget_class == "BECWaveform"
55
- assert bec_figure._widgets["widget_2"].config.widget_class == "BECWaveform"
56
- assert bec_figure._widgets["widget_3"].config.widget_class == "BECPlotBase"
49
+ assert w0.gui_id in bec_figure._widgets
50
+ assert w1.gui_id in bec_figure._widgets
51
+ assert w2.gui_id in bec_figure._widgets
52
+ assert bec_figure._widgets[w0.gui_id].config.widget_class == "BECWaveform"
53
+ assert bec_figure._widgets[w1.gui_id].config.widget_class == "BECWaveform"
54
+ assert bec_figure._widgets[w2.gui_id].config.widget_class == "BECPlotBase"
57
55
 
58
56
  # Check accessing positions by the grid in figure
59
57
  assert bec_figure[0, 0] == w0
@@ -61,11 +59,11 @@ def test_bec_figure_add_remove_plot(bec_figure):
61
59
  assert bec_figure[2, 0] == w2
62
60
 
63
61
  # Removing 1 widget
64
- bec_figure.remove(widget_id="widget_1")
62
+ bec_figure.remove(widget_id=w0.gui_id)
65
63
  assert len(bec_figure._widgets) == initial_count + 2
66
- assert "widget_1" not in bec_figure._widgets
67
- assert "widget_3" in bec_figure._widgets
68
- assert bec_figure._widgets["widget_2"].config.widget_class == "BECWaveform"
64
+ assert w0.gui_id not in bec_figure._widgets
65
+ assert w2.gui_id in bec_figure._widgets
66
+ assert bec_figure._widgets[w1.gui_id].config.widget_class == "BECWaveform"
69
67
 
70
68
 
71
69
  def test_add_different_types_of_widgets(bec_figure):
@@ -121,20 +119,20 @@ def test_remove_plots(bec_figure):
121
119
 
122
120
  # remove by coordinates
123
121
  bec_figure[0, 0].remove()
124
- assert "widget_1" not in bec_figure._widgets
122
+ assert w1.gui_id not in bec_figure._widgets
125
123
 
126
124
  # remove by widget_id
127
- bec_figure.remove(widget_id="widget_2")
128
- assert "widget_2" not in bec_figure._widgets
125
+ bec_figure.remove(widget_id=w2.gui_id)
126
+ assert w2.gui_id not in bec_figure._widgets
129
127
 
130
128
  # remove by widget object
131
129
  w3.remove()
132
- assert "widget_3" not in bec_figure._widgets
130
+ assert w3.gui_id not in bec_figure._widgets
133
131
 
134
132
  # check the remaining widget 4
135
133
  assert bec_figure[0, 0] == w4
136
- assert bec_figure["widget_4"] == w4
137
- assert "widget_4" in bec_figure._widgets
134
+ assert bec_figure[w4.gui_id] == w4
135
+ assert w4.gui_id in bec_figure._widgets
138
136
  assert len(bec_figure._widgets) == 1
139
137
 
140
138
 
@@ -143,8 +141,8 @@ def test_remove_plots_by_coordinates_ints(bec_figure):
143
141
  w2 = bec_figure.add_plot(row=0, col=1)
144
142
 
145
143
  bec_figure.remove(0, 0)
146
- assert "widget_1" not in bec_figure._widgets
147
- assert "widget_2" in bec_figure._widgets
144
+ assert w1.gui_id not in bec_figure._widgets
145
+ assert w2.gui_id in bec_figure._widgets
148
146
  assert bec_figure[0, 0] == w2
149
147
  assert len(bec_figure._widgets) == 1
150
148
 
@@ -154,8 +152,8 @@ def test_remove_plots_by_coordinates_tuple(bec_figure):
154
152
  w2 = bec_figure.add_plot(row=0, col=1)
155
153
 
156
154
  bec_figure.remove(coordinates=(0, 0))
157
- assert "widget_1" not in bec_figure._widgets
158
- assert "widget_2" in bec_figure._widgets
155
+ assert w1.gui_id not in bec_figure._widgets
156
+ assert w2.gui_id in bec_figure._widgets
159
157
  assert bec_figure[0, 0] == w2
160
158
  assert len(bec_figure._widgets) == 1
161
159
 
@@ -40,7 +40,7 @@ def test_client_generator_with_black_formatting():
40
40
  '''\
41
41
  # This file was automatically generated by generate_cli.py
42
42
 
43
- from bec_widgets.cli.client_utils import rpc_call, RPCBase, BECFigureClientMixin
43
+ from bec_widgets.cli.client_utils import rpc_call, RPCBase, BECGuiClientMixin
44
44
  from typing import Literal, Optional, overload
45
45
 
46
46
  class MockBECWaveform1D(RPCBase):
@@ -141,7 +141,7 @@ def test_getting_curve(bec_figure):
141
141
  c1_expected_config = CurveConfig(
142
142
  widget_class="BECCurve",
143
143
  gui_id="test_curve",
144
- parent_id="widget_1",
144
+ parent_id=w1.gui_id,
145
145
  label="bpm4i-bpm4i",
146
146
  color="#cc4778",
147
147
  symbol="o",
File without changes