bec-widgets 0.50.2__py3-none-any.whl → 0.52.0__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.
- bec_widgets/cli/__init__.py +1 -1
- bec_widgets/cli/bec_widgets_icon.png +0 -0
- bec_widgets/cli/client.py +213 -5
- bec_widgets/cli/client_utils.py +16 -5
- bec_widgets/cli/generate_cli.py +6 -3
- bec_widgets/cli/rpc_wigdet_handler.py +26 -0
- bec_widgets/cli/server.py +34 -9
- bec_widgets/examples/jupyter_console/jupyter_console_window.py +54 -2
- bec_widgets/examples/jupyter_console/jupyter_console_window.ui +26 -2
- bec_widgets/examples/jupyter_console/terminal_icon.png +0 -0
- bec_widgets/utils/__init__.py +1 -0
- bec_widgets/utils/bec_connector.py +11 -3
- bec_widgets/utils/layout_manager.py +117 -0
- bec_widgets/utils/plugin_utils.py +40 -0
- bec_widgets/widgets/__init__.py +1 -0
- bec_widgets/widgets/dock/__init__.py +2 -0
- bec_widgets/widgets/dock/dock.py +269 -0
- bec_widgets/widgets/dock/dock_area.py +220 -0
- bec_widgets/widgets/figure/figure.py +33 -16
- bec_widgets/widgets/plots/__init__.py +1 -1
- bec_widgets/widgets/plots/image.py +5 -9
- bec_widgets/widgets/plots/motor_map.py +3 -3
- bec_widgets/widgets/plots/plot_base.py +4 -3
- bec_widgets/widgets/plots/waveform.py +6 -10
- {bec_widgets-0.50.2.dist-info → bec_widgets-0.52.0.dist-info}/METADATA +8 -8
- {bec_widgets-0.50.2.dist-info → bec_widgets-0.52.0.dist-info}/RECORD +37 -28
- tests/end-2-end/conftest.py +19 -4
- tests/end-2-end/test_bec_dock_rpc_e2e.py +145 -0
- tests/end-2-end/test_bec_figure_rpc_e2e.py +17 -17
- tests/end-2-end/test_rpc_register_e2e.py +3 -3
- tests/unit_tests/test_bec_dock.py +114 -0
- tests/unit_tests/test_bec_figure.py +20 -22
- tests/unit_tests/test_generate_cli_client.py +1 -1
- tests/unit_tests/test_waveform1d.py +1 -1
- {bec_widgets-0.50.2.dist-info → bec_widgets-0.52.0.dist-info}/LICENSE +0 -0
- {bec_widgets-0.50.2.dist-info → bec_widgets-0.52.0.dist-info}/WHEEL +0 -0
- {bec_widgets-0.50.2.dist-info → bec_widgets-0.52.0.dist-info}/top_level.txt +0 -0
@@ -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(
|
9
|
-
fig = BECFigure(
|
10
|
-
fig_server =
|
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[
|
19
|
+
assert len(fig_server.widgets[ax.rpc_id].curves) == 1
|
20
20
|
|
21
21
|
|
22
|
-
def test_rpc_plotting_shortcuts_init_configs(
|
23
|
-
fig = BECFigure(
|
24
|
-
fig_server =
|
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(
|
79
|
-
fig = BECFigure(
|
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 =
|
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(
|
112
|
-
fig = BECFigure(
|
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 =
|
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(
|
137
|
-
fig = BECFigure(
|
138
|
-
fig_server =
|
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 =
|
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(
|
22
|
-
fig = BECFigure(
|
23
|
-
fig_server =
|
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
|
52
|
-
assert
|
53
|
-
assert
|
54
|
-
assert bec_figure._widgets[
|
55
|
-
assert bec_figure._widgets[
|
56
|
-
assert bec_figure._widgets[
|
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=
|
62
|
+
bec_figure.remove(widget_id=w0.gui_id)
|
65
63
|
assert len(bec_figure._widgets) == initial_count + 2
|
66
|
-
assert
|
67
|
-
assert
|
68
|
-
assert bec_figure._widgets[
|
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
|
122
|
+
assert w1.gui_id not in bec_figure._widgets
|
125
123
|
|
126
124
|
# remove by widget_id
|
127
|
-
bec_figure.remove(widget_id=
|
128
|
-
assert
|
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
|
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[
|
137
|
-
assert
|
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
|
147
|
-
assert
|
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
|
158
|
-
assert
|
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,
|
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):
|
File without changes
|
File without changes
|
File without changes
|