bec-widgets 0.99.8__py3-none-any.whl → 0.99.9__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 +6 -6
- PKG-INFO +1 -1
- {bec_widgets-0.99.8.dist-info → bec_widgets-0.99.9.dist-info}/METADATA +1 -1
- {bec_widgets-0.99.8.dist-info → bec_widgets-0.99.9.dist-info}/RECORD +8 -155
- pyproject.toml +6 -1
- docs/Makefile +0 -20
- docs/_static/custom.css +0 -170
- docs/_templates/custom-class-template.rst +0 -34
- docs/_templates/custom-module-template.rst +0 -66
- docs/api_reference/api_reference.md +0 -12
- docs/assets/apps_48dp.svg +0 -1
- docs/assets/display_settings_48dp.svg +0 -1
- docs/assets/index_api.svg +0 -97
- docs/assets/index_contribute.svg +0 -76
- docs/assets/index_getting_started.svg +0 -66
- docs/assets/index_user_guide.svg +0 -67
- docs/assets/rocket_launch_48dp.svg +0 -1
- docs/assets/widget_screenshots/buttons.png +0 -0
- docs/assets/widget_screenshots/device_box.png +0 -0
- docs/assets/widget_screenshots/device_browser.png +0 -0
- docs/assets/widget_screenshots/device_inputs.png +0 -0
- docs/assets/widget_screenshots/dock_area.png +0 -0
- docs/assets/widget_screenshots/figure.png +0 -0
- docs/assets/widget_screenshots/image_widget.png +0 -0
- docs/assets/widget_screenshots/motor_map_widget.png +0 -0
- docs/assets/widget_screenshots/position_indicator.png +0 -0
- docs/assets/widget_screenshots/queue.png +0 -0
- docs/assets/widget_screenshots/ring_progress_bar.png +0 -0
- docs/assets/widget_screenshots/scan_controller.png +0 -0
- docs/assets/widget_screenshots/spinner.gif +0 -0
- docs/assets/widget_screenshots/status_box.png +0 -0
- docs/assets/widget_screenshots/text_box.png +0 -0
- docs/assets/widget_screenshots/toggle.png +0 -0
- docs/assets/widget_screenshots/waveform_widget.png +0 -0
- docs/assets/widget_screenshots/website.png +0 -0
- docs/conf.py +0 -82
- docs/developer/developer.md +0 -52
- docs/developer/introduction/concepts.md +0 -14
- docs/developer/introduction/contributing.md +0 -28
- docs/developer/introduction/introduction.md +0 -16
- docs/developer/introduction/useful_links.md +0 -23
- docs/developer/widget_development/bec_dispatcher.md +0 -143
- docs/developer/widget_development/widget_base_class.md +0 -171
- docs/developer/widget_development/widget_development.md +0 -14
- docs/index.md +0 -74
- docs/introduction/introduction.md +0 -18
- docs/make.bat +0 -35
- docs/requirements.txt +0 -12
- docs/user/api_reference/api_reference.md +0 -11
- docs/user/applications/applications.md +0 -10
- docs/user/customisation.md +0 -123
- docs/user/getting_started/BECDockArea.png +0 -0
- docs/user/getting_started/auto_updates.md +0 -82
- docs/user/getting_started/getting_started.md +0 -15
- docs/user/getting_started/gui_complex_gui.gif +0 -0
- docs/user/getting_started/installation.md +0 -33
- docs/user/getting_started/quick_start.md +0 -110
- docs/user/getting_started/video_tutorials.md +0 -17
- docs/user/user.md +0 -71
- docs/user/widgets/bec_figure/BECFigure.png +0 -0
- docs/user/widgets/bec_figure/bec_figure.md +0 -105
- docs/user/widgets/bec_status_box/bec_status_box.gif +0 -0
- docs/user/widgets/bec_status_box/bec_status_box.md +0 -38
- docs/user/widgets/buttons/buttons.md +0 -90
- docs/user/widgets/buttons/dark_mode_disabled.png +0 -0
- docs/user/widgets/buttons/dark_mode_enabled.png +0 -0
- docs/user/widgets/device_browser/device_browser.md +0 -36
- docs/user/widgets/device_browser/device_browser.png +0 -0
- docs/user/widgets/device_input/device_input.md +0 -100
- docs/user/widgets/dock_area/BECDockArea.png +0 -0
- docs/user/widgets/dock_area/bec_dock_area.md +0 -109
- docs/user/widgets/image/image_plot.gif +0 -0
- docs/user/widgets/image/image_widget.md +0 -84
- docs/user/widgets/motor_map/motor.gif +0 -0
- docs/user/widgets/motor_map/motor_map.md +0 -80
- docs/user/widgets/position_indicator/position_indicator.md +0 -69
- docs/user/widgets/positioner_box/positioner_box.md +0 -63
- docs/user/widgets/progress_bar/progress_bar.gif +0 -0
- docs/user/widgets/progress_bar/ring_progress_bar.md +0 -103
- docs/user/widgets/queue/queue.md +0 -41
- docs/user/widgets/scan_control/hide_scan_control.png +0 -0
- docs/user/widgets/scan_control/scan_control.gif +0 -0
- docs/user/widgets/scan_control/scan_control.md +0 -54
- docs/user/widgets/spinner/spinner.md +0 -68
- docs/user/widgets/text_box/text_box.md +0 -74
- docs/user/widgets/toggle/toggle.md +0 -66
- docs/user/widgets/waveform/bec_figure_dap.gif +0 -0
- docs/user/widgets/waveform/scatter_2D.gif +0 -0
- docs/user/widgets/waveform/w1D.gif +0 -0
- docs/user/widgets/waveform/waveform_widget.md +0 -132
- docs/user/widgets/website/website.md +0 -69
- docs/user/widgets/widgets.md +0 -220
- tests/__init__.py +0 -0
- tests/end-2-end/__init__.py +0 -0
- tests/end-2-end/conftest.py +0 -53
- tests/end-2-end/test_bec_dock_rpc_e2e.py +0 -298
- tests/end-2-end/test_bec_figure_rpc_e2e.py +0 -212
- tests/end-2-end/test_rpc_register_e2e.py +0 -40
- tests/end-2-end/test_scan_control_e2e.py +0 -71
- tests/references/SpinnerWidget/SpinnerWidget_darwin.png +0 -0
- tests/references/SpinnerWidget/SpinnerWidget_linux.png +0 -0
- tests/references/SpinnerWidget/SpinnerWidget_started_darwin.png +0 -0
- tests/references/SpinnerWidget/SpinnerWidget_started_linux.png +0 -0
- tests/unit_tests/__init__.py +0 -0
- tests/unit_tests/client_mocks.py +0 -189
- tests/unit_tests/conftest.py +0 -64
- tests/unit_tests/test_bec_connector.py +0 -80
- tests/unit_tests/test_bec_dispatcher.py +0 -119
- tests/unit_tests/test_bec_dock.py +0 -155
- tests/unit_tests/test_bec_figure.py +0 -270
- tests/unit_tests/test_bec_image.py +0 -63
- tests/unit_tests/test_bec_image_widget.py +0 -217
- tests/unit_tests/test_bec_motor_map.py +0 -282
- tests/unit_tests/test_bec_queue.py +0 -111
- tests/unit_tests/test_bec_status_box.py +0 -123
- tests/unit_tests/test_client_utils.py +0 -76
- tests/unit_tests/test_color_map_selector.py +0 -42
- tests/unit_tests/test_color_validation.py +0 -75
- tests/unit_tests/test_configs/config_device.yaml +0 -33
- tests/unit_tests/test_configs/config_device_no_entry.yaml +0 -27
- tests/unit_tests/test_configs/config_scan.yaml +0 -82
- tests/unit_tests/test_crosshair.py +0 -143
- tests/unit_tests/test_dark_mode_button.py +0 -70
- tests/unit_tests/test_device_browser.py +0 -83
- tests/unit_tests/test_device_input_base.py +0 -76
- tests/unit_tests/test_device_input_widgets.py +0 -178
- tests/unit_tests/test_error_utils.py +0 -63
- tests/unit_tests/test_generate_cli_client.py +0 -123
- tests/unit_tests/test_generate_plugin.py +0 -155
- tests/unit_tests/test_motor_map_widget.py +0 -194
- tests/unit_tests/test_msgs/__init__.py +0 -0
- tests/unit_tests/test_msgs/available_scans_message.py +0 -989
- tests/unit_tests/test_plot_base.py +0 -95
- tests/unit_tests/test_plugin_utils.py +0 -13
- tests/unit_tests/test_positioner_box.py +0 -130
- tests/unit_tests/test_ring_progress_bar.py +0 -337
- tests/unit_tests/test_rpc_register.py +0 -52
- tests/unit_tests/test_rpc_server.py +0 -42
- tests/unit_tests/test_rpc_widget_handler.py +0 -7
- tests/unit_tests/test_scan_control.py +0 -324
- tests/unit_tests/test_scan_control_group_box.py +0 -160
- tests/unit_tests/test_setting_dialog.py +0 -96
- tests/unit_tests/test_spinner.py +0 -31
- tests/unit_tests/test_stop_button.py +0 -27
- tests/unit_tests/test_text_box_widget.py +0 -54
- tests/unit_tests/test_toggle.py +0 -38
- tests/unit_tests/test_vscode_widget.py +0 -75
- tests/unit_tests/test_waveform1d.py +0 -712
- tests/unit_tests/test_waveform_widget.py +0 -462
- tests/unit_tests/test_website_widget.py +0 -25
- tests/unit_tests/test_widget_io.py +0 -90
- tests/unit_tests/test_yaml_dialog.py +0 -163
- {bec_widgets-0.99.8.dist-info → bec_widgets-0.99.9.dist-info}/WHEEL +0 -0
- {bec_widgets-0.99.8.dist-info → bec_widgets-0.99.9.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.99.8.dist-info → bec_widgets-0.99.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,54 +0,0 @@
|
|
1
|
-
import re
|
2
|
-
from unittest import mock
|
3
|
-
|
4
|
-
import pytest
|
5
|
-
|
6
|
-
from bec_widgets.widgets.text_box.text_box import TextBox
|
7
|
-
|
8
|
-
from .client_mocks import mocked_client
|
9
|
-
|
10
|
-
|
11
|
-
@pytest.fixture
|
12
|
-
def text_box_widget(qtbot, mocked_client):
|
13
|
-
widget = TextBox(client=mocked_client)
|
14
|
-
qtbot.addWidget(widget)
|
15
|
-
qtbot.waitExposed(widget)
|
16
|
-
yield widget
|
17
|
-
|
18
|
-
|
19
|
-
def test_textbox_widget(text_box_widget):
|
20
|
-
"""Test the TextBox widget."""
|
21
|
-
text = "Hello World!"
|
22
|
-
text_box_widget.set_text(text)
|
23
|
-
assert text_box_widget.toPlainText() == text
|
24
|
-
|
25
|
-
text_box_widget.set_color("#FFDDC1", "#123456")
|
26
|
-
text_box_widget.set_font_size(20)
|
27
|
-
assert (
|
28
|
-
text_box_widget.styleSheet() == "background-color: #FFDDC1; color: #123456; font-size: 20px"
|
29
|
-
)
|
30
|
-
text_box_widget.set_color("white", "blue")
|
31
|
-
text_box_widget.set_font_size(14)
|
32
|
-
assert text_box_widget.styleSheet() == "background-color: white; color: blue; font-size: 14px"
|
33
|
-
text = "<h1>Welcome to PyQt6</h1><p>This is an example of displaying <strong>HTML</strong> text.</p>"
|
34
|
-
with mock.patch.object(text_box_widget, "setHtml") as mocked_set_html:
|
35
|
-
text_box_widget.set_text(text)
|
36
|
-
assert mocked_set_html.call_count == 1
|
37
|
-
assert mocked_set_html.call_args == mock.call(text)
|
38
|
-
|
39
|
-
|
40
|
-
def test_textbox_change_theme(text_box_widget):
|
41
|
-
"""Test change theme functionaility"""
|
42
|
-
# Default is dark theme
|
43
|
-
text_box_widget.change_theme()
|
44
|
-
assert text_box_widget.config.theme == "light"
|
45
|
-
assert (
|
46
|
-
text_box_widget.styleSheet()
|
47
|
-
== f"background-color: #FFF; color: #000; font-size: {text_box_widget.config.font_size}px"
|
48
|
-
)
|
49
|
-
text_box_widget.change_theme()
|
50
|
-
assert text_box_widget.config.theme == "dark"
|
51
|
-
assert (
|
52
|
-
text_box_widget.styleSheet()
|
53
|
-
== f"background-color: #000; color: #FFF; font-size: {text_box_widget.config.font_size}px"
|
54
|
-
)
|
tests/unit_tests/test_toggle.py
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
import pytest
|
2
|
-
from qtpy.QtCore import QPointF, Qt
|
3
|
-
|
4
|
-
from bec_widgets.widgets.toggle.toggle import ToggleSwitch
|
5
|
-
|
6
|
-
|
7
|
-
@pytest.fixture
|
8
|
-
def toggle(qtbot):
|
9
|
-
widget = ToggleSwitch()
|
10
|
-
qtbot.addWidget(widget)
|
11
|
-
qtbot.waitExposed(widget)
|
12
|
-
yield widget
|
13
|
-
|
14
|
-
|
15
|
-
def test_toggle(toggle):
|
16
|
-
toggle.checked = False
|
17
|
-
assert toggle.checked is False
|
18
|
-
|
19
|
-
assert toggle.thumb_pos == QPointF(3, 2)
|
20
|
-
|
21
|
-
toggle.checked = True
|
22
|
-
assert toggle.checked is True
|
23
|
-
|
24
|
-
assert toggle.thumb_pos == QPointF(22, 2)
|
25
|
-
|
26
|
-
|
27
|
-
def test_toggle_click(qtbot, toggle):
|
28
|
-
init_state = toggle.checked
|
29
|
-
|
30
|
-
qtbot.mouseClick(toggle, Qt.LeftButton)
|
31
|
-
toggle.paintEvent(None)
|
32
|
-
assert toggle.checked is not init_state
|
33
|
-
|
34
|
-
init_state = toggle.checked
|
35
|
-
|
36
|
-
qtbot.mouseClick(toggle, Qt.LeftButton)
|
37
|
-
toggle.paintEvent(None)
|
38
|
-
assert toggle.checked is not init_state
|
@@ -1,75 +0,0 @@
|
|
1
|
-
import os
|
2
|
-
import shlex
|
3
|
-
import subprocess
|
4
|
-
from unittest import mock
|
5
|
-
|
6
|
-
import pytest
|
7
|
-
|
8
|
-
from bec_widgets.widgets.vscode.vscode import VSCodeEditor
|
9
|
-
|
10
|
-
from .client_mocks import mocked_client
|
11
|
-
|
12
|
-
|
13
|
-
@pytest.fixture
|
14
|
-
def vscode_widget(qtbot, mocked_client):
|
15
|
-
with mock.patch("bec_widgets.widgets.vscode.vscode.subprocess.Popen") as mock_popen:
|
16
|
-
widget = VSCodeEditor(client=mocked_client)
|
17
|
-
qtbot.addWidget(widget)
|
18
|
-
qtbot.waitExposed(widget)
|
19
|
-
yield widget
|
20
|
-
|
21
|
-
|
22
|
-
def test_vscode_widget(qtbot, vscode_widget):
|
23
|
-
assert vscode_widget.process is not None
|
24
|
-
assert vscode_widget._url == "http://127.0.0.1:7000?tkn=bec"
|
25
|
-
|
26
|
-
|
27
|
-
def test_start_server(qtbot, mocked_client):
|
28
|
-
|
29
|
-
with mock.patch("bec_widgets.widgets.vscode.vscode.subprocess.Popen") as mock_popen:
|
30
|
-
with mock.patch("bec_widgets.widgets.vscode.vscode.select.select") as mock_select:
|
31
|
-
mock_process = mock.Mock()
|
32
|
-
mock_process.stdout.fileno.return_value = 1
|
33
|
-
mock_process.poll.return_value = None
|
34
|
-
mock_process.stdout.read.return_value = f"available at http://{VSCodeEditor.host}:{VSCodeEditor.port}?tkn={VSCodeEditor.token}"
|
35
|
-
mock_popen.return_value = mock_process
|
36
|
-
mock_select.return_value = [[mock_process.stdout], [], []]
|
37
|
-
|
38
|
-
widget = VSCodeEditor(client=mocked_client)
|
39
|
-
|
40
|
-
mock_popen.assert_called_once_with(
|
41
|
-
shlex.split(
|
42
|
-
f"code serve-web --port {widget.port} --connection-token={widget.token} --accept-server-license-terms"
|
43
|
-
),
|
44
|
-
text=True,
|
45
|
-
stdout=subprocess.PIPE,
|
46
|
-
stderr=subprocess.DEVNULL,
|
47
|
-
preexec_fn=os.setsid,
|
48
|
-
)
|
49
|
-
|
50
|
-
|
51
|
-
@pytest.fixture
|
52
|
-
def patched_vscode_process(qtbot, vscode_widget):
|
53
|
-
with mock.patch("bec_widgets.widgets.vscode.vscode.os.killpg") as mock_killpg:
|
54
|
-
with mock.patch("bec_widgets.widgets.vscode.vscode.os.getpgid") as mock_getpgid:
|
55
|
-
mock_getpgid.return_value = 123
|
56
|
-
vscode_widget.process = mock.Mock()
|
57
|
-
yield vscode_widget, mock_killpg
|
58
|
-
|
59
|
-
|
60
|
-
def test_vscode_cleanup(qtbot, patched_vscode_process):
|
61
|
-
vscode_patched, mock_killpg = patched_vscode_process
|
62
|
-
vscode_patched.process.pid = 123
|
63
|
-
vscode_patched.process.poll.return_value = None
|
64
|
-
vscode_patched.cleanup()
|
65
|
-
mock_killpg.assert_called_once_with(123, 15)
|
66
|
-
vscode_patched.process.wait.assert_called_once()
|
67
|
-
|
68
|
-
|
69
|
-
def test_close_event_on_terminated_code(qtbot, patched_vscode_process):
|
70
|
-
vscode_patched, mock_killpg = patched_vscode_process
|
71
|
-
vscode_patched.process.pid = 123
|
72
|
-
vscode_patched.process.poll.return_value = 0
|
73
|
-
vscode_patched.cleanup()
|
74
|
-
mock_killpg.assert_not_called()
|
75
|
-
vscode_patched.process.wait.assert_not_called()
|