bec-widgets 2.9.2__py3-none-any.whl → 2.10.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.
- .github/workflows/end2end-conda.yml +9 -1
- CHANGELOG.md +34 -0
- PKG-INFO +1 -2
- bec_widgets/cli/client.py +42 -0
- bec_widgets/widgets/plots/waveform/waveform.py +192 -10
- {bec_widgets-2.9.2.dist-info → bec_widgets-2.10.1.dist-info}/METADATA +1 -2
- {bec_widgets-2.9.2.dist-info → bec_widgets-2.10.1.dist-info}/RECORD +11 -16
- pyproject.toml +1 -2
- bec_widgets/widgets/editors/console/__init__.py +0 -0
- bec_widgets/widgets/editors/console/console.py +0 -870
- bec_widgets/widgets/editors/console/console.pyproject +0 -1
- bec_widgets/widgets/editors/console/console_plugin.py +0 -58
- bec_widgets/widgets/editors/console/register_console.py +0 -15
- {bec_widgets-2.9.2.dist-info → bec_widgets-2.10.1.dist-info}/WHEEL +0 -0
- {bec_widgets-2.9.2.dist-info → bec_widgets-2.10.1.dist-info}/entry_points.txt +0 -0
- {bec_widgets-2.9.2.dist-info → bec_widgets-2.10.1.dist-info}/licenses/LICENSE +0 -0
@@ -47,4 +47,12 @@ jobs:
|
|
47
47
|
source ./bin/install_bec_dev.sh -t
|
48
48
|
cd ../
|
49
49
|
pip install -e ./ophyd_devices -e .[dev,pyside6] -e ./bec_testing_plugin
|
50
|
-
pytest -v --files-path ./ --start-servers --random-order ./tests/end-2-end
|
50
|
+
pytest -v --files-path ./ --start-servers --random-order ./tests/end-2-end
|
51
|
+
|
52
|
+
- name: Upload logs if job fails
|
53
|
+
if: failure()
|
54
|
+
uses: actions/upload-artifact@v4
|
55
|
+
with:
|
56
|
+
name: pytest-logs
|
57
|
+
path: ./logs/*.log
|
58
|
+
retention-days: 7
|
CHANGELOG.md
CHANGED
@@ -1,6 +1,40 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.10.1 (2025-06-02)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **console**: Qt console widget deleted
|
9
|
+
([`cd4e90a`](https://github.com/bec-project/bec_widgets/commit/cd4e90a79fcdbc96f4ec23db22375d05a48731db))
|
10
|
+
|
11
|
+
### Build System
|
12
|
+
|
13
|
+
- Pyte removed from dependencies
|
14
|
+
([`a64cf0d`](https://github.com/bec-project/bec_widgets/commit/a64cf0dd871c1419e02d3803c74cc45966baac19))
|
15
|
+
|
16
|
+
|
17
|
+
## v2.10.0 (2025-06-02)
|
18
|
+
|
19
|
+
### Bug Fixes
|
20
|
+
|
21
|
+
- **waveform**: Waveform only update async data when scan is currently running
|
22
|
+
([`f90150d`](https://github.com/bec-project/bec_widgets/commit/f90150d1c708331d4ee78f82ebf5ef23cd81fd17))
|
23
|
+
|
24
|
+
### Continuous Integration
|
25
|
+
|
26
|
+
- Add job logs to e2e test
|
27
|
+
([`d12bd9f`](https://github.com/bec-project/bec_widgets/commit/d12bd9fe1a010babc94dc86405d1b75a2b07534c))
|
28
|
+
|
29
|
+
- Fix artifact version
|
30
|
+
([`2b4454a`](https://github.com/bec-project/bec_widgets/commit/2b4454a291bc69399ddd08780c44e1339825fb36))
|
31
|
+
|
32
|
+
### Features
|
33
|
+
|
34
|
+
- **waveform**: Large async dataset warning popup
|
35
|
+
([`d0c1ac0`](https://github.com/bec-project/bec_widgets/commit/d0c1ac0cf5d421d14c9e050ccf5832cd30ca0764))
|
36
|
+
|
37
|
+
|
4
38
|
## v2.9.2 (2025-05-30)
|
5
39
|
|
6
40
|
### Bug Fixes
|
PKG-INFO
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.10.1
|
4
4
|
Summary: BEC Widgets
|
5
5
|
Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
|
6
6
|
Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
|
@@ -17,7 +17,6 @@ Requires-Dist: isort>=5.13.2,~=5.13
|
|
17
17
|
Requires-Dist: pydantic~=2.0
|
18
18
|
Requires-Dist: pyqtgraph~=0.13
|
19
19
|
Requires-Dist: pyside6~=6.8.2
|
20
|
-
Requires-Dist: pyte
|
21
20
|
Requires-Dist: qtconsole>=5.5.1,~=5.5
|
22
21
|
Requires-Dist: qtpy~=2.4
|
23
22
|
Provides-Extra: dev
|
bec_widgets/cli/client.py
CHANGED
@@ -3970,6 +3970,48 @@ class Waveform(RPCBase):
|
|
3970
3970
|
The color palette of the figure widget.
|
3971
3971
|
"""
|
3972
3972
|
|
3973
|
+
@property
|
3974
|
+
@rpc_call
|
3975
|
+
def skip_large_dataset_warning(self) -> "bool":
|
3976
|
+
"""
|
3977
|
+
Whether to skip the large dataset warning when fetching async data.
|
3978
|
+
"""
|
3979
|
+
|
3980
|
+
@skip_large_dataset_warning.setter
|
3981
|
+
@rpc_call
|
3982
|
+
def skip_large_dataset_warning(self) -> "bool":
|
3983
|
+
"""
|
3984
|
+
Whether to skip the large dataset warning when fetching async data.
|
3985
|
+
"""
|
3986
|
+
|
3987
|
+
@property
|
3988
|
+
@rpc_call
|
3989
|
+
def skip_large_dataset_check(self) -> "bool":
|
3990
|
+
"""
|
3991
|
+
Whether to skip the large dataset warning when fetching async data.
|
3992
|
+
"""
|
3993
|
+
|
3994
|
+
@skip_large_dataset_check.setter
|
3995
|
+
@rpc_call
|
3996
|
+
def skip_large_dataset_check(self) -> "bool":
|
3997
|
+
"""
|
3998
|
+
Whether to skip the large dataset warning when fetching async data.
|
3999
|
+
"""
|
4000
|
+
|
4001
|
+
@property
|
4002
|
+
@rpc_call
|
4003
|
+
def max_dataset_size_mb(self) -> "float":
|
4004
|
+
"""
|
4005
|
+
The maximum dataset size (in MB) permitted when fetching async data from history before prompting the user.
|
4006
|
+
"""
|
4007
|
+
|
4008
|
+
@max_dataset_size_mb.setter
|
4009
|
+
@rpc_call
|
4010
|
+
def max_dataset_size_mb(self) -> "float":
|
4011
|
+
"""
|
4012
|
+
The maximum dataset size (in MB) permitted when fetching async data from history before prompting the user.
|
4013
|
+
"""
|
4014
|
+
|
3973
4015
|
@rpc_call
|
3974
4016
|
def plot(
|
3975
4017
|
self,
|
@@ -9,8 +9,19 @@ import pyqtgraph as pg
|
|
9
9
|
from bec_lib import bec_logger, messages
|
10
10
|
from bec_lib.endpoints import MessageEndpoints
|
11
11
|
from pydantic import Field, ValidationError, field_validator
|
12
|
-
from qtpy.QtCore import QTimer, Signal
|
13
|
-
from qtpy.QtWidgets import
|
12
|
+
from qtpy.QtCore import Qt, QTimer, Signal
|
13
|
+
from qtpy.QtWidgets import (
|
14
|
+
QApplication,
|
15
|
+
QCheckBox,
|
16
|
+
QDialog,
|
17
|
+
QDialogButtonBox,
|
18
|
+
QDoubleSpinBox,
|
19
|
+
QHBoxLayout,
|
20
|
+
QLabel,
|
21
|
+
QMainWindow,
|
22
|
+
QVBoxLayout,
|
23
|
+
QWidget,
|
24
|
+
)
|
14
25
|
|
15
26
|
from bec_widgets.utils import ConnectionConfig
|
16
27
|
from bec_widgets.utils.bec_signal_proxy import BECSignalProxy
|
@@ -33,6 +44,11 @@ class WaveformConfig(ConnectionConfig):
|
|
33
44
|
color_palette: str | None = Field(
|
34
45
|
"plasma", description="The color palette of the figure widget.", validate_default=True
|
35
46
|
)
|
47
|
+
max_dataset_size_mb: float = Field(
|
48
|
+
10,
|
49
|
+
description="Maximum dataset size (in MB) permitted when fetching async data from history before prompting the user.",
|
50
|
+
validate_default=True,
|
51
|
+
)
|
36
52
|
|
37
53
|
model_config: dict = {"validate_assignment": True}
|
38
54
|
_validate_color_palette = field_validator("color_palette")(Colors.validate_color_map)
|
@@ -96,6 +112,12 @@ class Waveform(PlotBase):
|
|
96
112
|
"x_entry.setter",
|
97
113
|
"color_palette",
|
98
114
|
"color_palette.setter",
|
115
|
+
"skip_large_dataset_warning",
|
116
|
+
"skip_large_dataset_warning.setter",
|
117
|
+
"skip_large_dataset_check",
|
118
|
+
"skip_large_dataset_check.setter",
|
119
|
+
"max_dataset_size_mb",
|
120
|
+
"max_dataset_size_mb.setter",
|
99
121
|
"plot",
|
100
122
|
"add_dap_curve",
|
101
123
|
"remove_curve",
|
@@ -144,6 +166,7 @@ class Waveform(PlotBase):
|
|
144
166
|
self._mode: Literal["none", "sync", "async", "mixed"] = "none"
|
145
167
|
|
146
168
|
# Scan data
|
169
|
+
self._scan_done = True # means scan is not running
|
147
170
|
self.old_scan_id = None
|
148
171
|
self.scan_id = None
|
149
172
|
self.scan_item = None
|
@@ -163,6 +186,10 @@ class Waveform(PlotBase):
|
|
163
186
|
self._init_curve_dialog()
|
164
187
|
self.curve_settings_dialog = None
|
165
188
|
|
189
|
+
# Large‑dataset guard
|
190
|
+
self._skip_large_dataset_warning = False # session flag
|
191
|
+
self._skip_large_dataset_check = False # per-plot flag, to skip the warning for this plot
|
192
|
+
|
166
193
|
# Scan status update loop
|
167
194
|
self.bec_dispatcher.connect_slot(self.on_scan_status, MessageEndpoints.scan_status())
|
168
195
|
self.bec_dispatcher.connect_slot(self.on_scan_progress, MessageEndpoints.scan_progress())
|
@@ -561,6 +588,59 @@ class Waveform(PlotBase):
|
|
561
588
|
"""
|
562
589
|
return [item for item in self.plot_item.curves if isinstance(item, Curve)]
|
563
590
|
|
591
|
+
@SafeProperty(bool)
|
592
|
+
def skip_large_dataset_check(self) -> bool:
|
593
|
+
"""
|
594
|
+
Whether to skip the large dataset warning when fetching async data.
|
595
|
+
"""
|
596
|
+
return self._skip_large_dataset_check
|
597
|
+
|
598
|
+
@skip_large_dataset_check.setter
|
599
|
+
def skip_large_dataset_check(self, value: bool):
|
600
|
+
"""
|
601
|
+
Set whether to skip the large dataset warning when fetching async data.
|
602
|
+
|
603
|
+
Args:
|
604
|
+
value(bool): Whether to skip the large dataset warning.
|
605
|
+
"""
|
606
|
+
self._skip_large_dataset_check = value
|
607
|
+
|
608
|
+
@SafeProperty(bool)
|
609
|
+
def skip_large_dataset_warning(self) -> bool:
|
610
|
+
"""
|
611
|
+
Whether to skip the large dataset warning when fetching async data.
|
612
|
+
"""
|
613
|
+
return self._skip_large_dataset_warning
|
614
|
+
|
615
|
+
@skip_large_dataset_warning.setter
|
616
|
+
def skip_large_dataset_warning(self, value: bool):
|
617
|
+
"""
|
618
|
+
Set whether to skip the large dataset warning when fetching async data.
|
619
|
+
|
620
|
+
Args:
|
621
|
+
value(bool): Whether to skip the large dataset warning.
|
622
|
+
"""
|
623
|
+
self._skip_large_dataset_warning = value
|
624
|
+
|
625
|
+
@SafeProperty(float)
|
626
|
+
def max_dataset_size_mb(self) -> float:
|
627
|
+
"""
|
628
|
+
The maximum dataset size (in MB) permitted when fetching async data from history before prompting the user.
|
629
|
+
"""
|
630
|
+
return self.config.max_dataset_size_mb
|
631
|
+
|
632
|
+
@max_dataset_size_mb.setter
|
633
|
+
def max_dataset_size_mb(self, value: float):
|
634
|
+
"""
|
635
|
+
Set the maximum dataset size (in MB) permitted when fetching async data from history before prompting the user.
|
636
|
+
|
637
|
+
Args:
|
638
|
+
value(float): The maximum dataset size in MB.
|
639
|
+
"""
|
640
|
+
if value <= 0:
|
641
|
+
raise ValueError("Maximum dataset size must be greater than 0.")
|
642
|
+
self.config.max_dataset_size_mb = value
|
643
|
+
|
564
644
|
################################################################################
|
565
645
|
# High Level methods for API
|
566
646
|
################################################################################
|
@@ -807,8 +887,6 @@ class Waveform(PlotBase):
|
|
807
887
|
if config.source == "device":
|
808
888
|
if self.scan_item is None:
|
809
889
|
self.update_with_scan_history(-1)
|
810
|
-
if curve in self._async_curves:
|
811
|
-
self._setup_async_curve(curve)
|
812
890
|
self.async_signal_update.emit()
|
813
891
|
self.sync_signal_update.emit()
|
814
892
|
if config.source == "dap":
|
@@ -1056,8 +1134,8 @@ class Waveform(PlotBase):
|
|
1056
1134
|
meta(dict): The message metadata.
|
1057
1135
|
"""
|
1058
1136
|
self.sync_signal_update.emit()
|
1059
|
-
|
1060
|
-
if
|
1137
|
+
self._scan_done = msg.get("done")
|
1138
|
+
if self._scan_done:
|
1061
1139
|
QTimer.singleShot(100, self.update_sync_curves)
|
1062
1140
|
QTimer.singleShot(300, self.update_sync_curves)
|
1063
1141
|
|
@@ -1135,9 +1213,11 @@ class Waveform(PlotBase):
|
|
1135
1213
|
if access_key == "val": # live access
|
1136
1214
|
device_data = data.get(device_name, {}).get(device_entry, {}).get(access_key, None)
|
1137
1215
|
else: # history access
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1216
|
+
dataset_obj = data.get(device_name, {})
|
1217
|
+
if self._skip_large_dataset_check is False:
|
1218
|
+
if not self._check_dataset_size_and_confirm(dataset_obj, device_entry):
|
1219
|
+
continue # user declined to load; skip this curve
|
1220
|
+
device_data = dataset_obj.get(device_entry, {}).read().get("value", None)
|
1141
1221
|
|
1142
1222
|
# if shape is 2D cast it into 1D and take the last waveform
|
1143
1223
|
if len(np.shape(device_data)) > 1:
|
@@ -1581,6 +1661,8 @@ class Waveform(PlotBase):
|
|
1581
1661
|
dev_name = curve.config.signal.name
|
1582
1662
|
if dev_name in readout_priority_async:
|
1583
1663
|
self._async_curves.append(curve)
|
1664
|
+
if hasattr(self.scan_item, "live_data"):
|
1665
|
+
self._setup_async_curve(curve)
|
1584
1666
|
found_async = True
|
1585
1667
|
elif dev_name in readout_priority_sync:
|
1586
1668
|
self._sync_curves.append(curve)
|
@@ -1657,6 +1739,106 @@ class Waveform(PlotBase):
|
|
1657
1739
|
################################################################################
|
1658
1740
|
# Utility Methods
|
1659
1741
|
################################################################################
|
1742
|
+
|
1743
|
+
# Large dataset handling helpers
|
1744
|
+
def _check_dataset_size_and_confirm(self, dataset_obj, device_entry: str) -> bool:
|
1745
|
+
"""
|
1746
|
+
Check the size of the dataset and confirm with the user if it exceeds the limit.
|
1747
|
+
|
1748
|
+
Args:
|
1749
|
+
dataset_obj: The dataset object containing the information.
|
1750
|
+
device_entry( str): The specific device entry to check.
|
1751
|
+
|
1752
|
+
Returns:
|
1753
|
+
bool: True if the dataset is within the size limit or user confirmed to load it,
|
1754
|
+
False if the dataset exceeds the size limit and user declined to load it.
|
1755
|
+
"""
|
1756
|
+
try:
|
1757
|
+
info = dataset_obj._info
|
1758
|
+
mem_bytes = info.get(device_entry, {}).get("value", {}).get("mem_size", 0)
|
1759
|
+
# Fallback – grab first entry if lookup failed
|
1760
|
+
if mem_bytes == 0 and info:
|
1761
|
+
first_key = next(iter(info))
|
1762
|
+
mem_bytes = info[first_key]["value"]["mem_size"]
|
1763
|
+
size_mb = mem_bytes / (1024 * 1024)
|
1764
|
+
print(f"Dataset size: {size_mb:.1f} MB")
|
1765
|
+
except Exception as exc: # noqa: BLE001
|
1766
|
+
logger.error(f"Unable to evaluate dataset size: {exc}")
|
1767
|
+
return True
|
1768
|
+
|
1769
|
+
if size_mb <= self.config.max_dataset_size_mb:
|
1770
|
+
return True
|
1771
|
+
logger.warning(
|
1772
|
+
f"Attempt to load large dataset: {size_mb:.1f} MB "
|
1773
|
+
f"(limit {self.config.max_dataset_size_mb} MB)"
|
1774
|
+
)
|
1775
|
+
if self._skip_large_dataset_warning:
|
1776
|
+
logger.info("Skipping large dataset warning dialog.")
|
1777
|
+
return False
|
1778
|
+
return self._confirm_large_dataset(size_mb)
|
1779
|
+
|
1780
|
+
def _confirm_large_dataset(self, size_mb: float) -> bool:
|
1781
|
+
"""
|
1782
|
+
Confirm with the user whether to load a large dataset with dialog popup.
|
1783
|
+
Also allows the user to adjust the maximum dataset size limit and if user
|
1784
|
+
wants to see this popup again during session.
|
1785
|
+
|
1786
|
+
Args:
|
1787
|
+
size_mb(float): Size of the dataset in MB.
|
1788
|
+
|
1789
|
+
Returns:
|
1790
|
+
bool: True if the user confirmed to load the dataset, False otherwise.
|
1791
|
+
"""
|
1792
|
+
if self._skip_large_dataset_warning:
|
1793
|
+
return True
|
1794
|
+
|
1795
|
+
dialog = QDialog(self)
|
1796
|
+
dialog.setWindowTitle("Large dataset detected")
|
1797
|
+
main_dialog_layout = QVBoxLayout(dialog)
|
1798
|
+
|
1799
|
+
# Limit adjustment widgets
|
1800
|
+
limit_adjustment_layout = QHBoxLayout()
|
1801
|
+
limit_adjustment_layout.addWidget(QLabel("New limit (MB):"))
|
1802
|
+
spin = QDoubleSpinBox()
|
1803
|
+
spin.setRange(0.001, 4096)
|
1804
|
+
spin.setDecimals(3)
|
1805
|
+
spin.setSingleStep(0.01)
|
1806
|
+
spin.setValue(self.config.max_dataset_size_mb)
|
1807
|
+
spin.valueChanged.connect(lambda value: setattr(self.config, "max_dataset_size_mb", value))
|
1808
|
+
limit_adjustment_layout.addWidget(spin)
|
1809
|
+
|
1810
|
+
# Don't show again checkbox
|
1811
|
+
checkbox = QCheckBox("Don't show this again for this session")
|
1812
|
+
|
1813
|
+
buttons = QDialogButtonBox(
|
1814
|
+
QDialogButtonBox.Yes | QDialogButtonBox.No, Qt.Horizontal, dialog
|
1815
|
+
)
|
1816
|
+
buttons.accepted.connect(dialog.accept) # Yes
|
1817
|
+
buttons.rejected.connect(dialog.reject) # No
|
1818
|
+
|
1819
|
+
# widget layout
|
1820
|
+
main_dialog_layout.addWidget(
|
1821
|
+
QLabel(
|
1822
|
+
f"The selected dataset is {size_mb:.1f} MB which exceeds the "
|
1823
|
+
f"current limit of {self.config.max_dataset_size_mb} MB.\n"
|
1824
|
+
)
|
1825
|
+
)
|
1826
|
+
main_dialog_layout.addLayout(limit_adjustment_layout)
|
1827
|
+
main_dialog_layout.addWidget(checkbox)
|
1828
|
+
main_dialog_layout.addWidget(QLabel("Would you like to display dataset anyway?"))
|
1829
|
+
main_dialog_layout.addWidget(buttons)
|
1830
|
+
|
1831
|
+
result = dialog.exec() # modal; waits for user choice
|
1832
|
+
|
1833
|
+
# Respect the “don't show again” checkbox for *either* choice
|
1834
|
+
if checkbox.isChecked():
|
1835
|
+
self._skip_large_dataset_warning = True
|
1836
|
+
|
1837
|
+
if result == QDialog.Accepted:
|
1838
|
+
self.config.max_dataset_size_mb = spin.value()
|
1839
|
+
return True
|
1840
|
+
return False
|
1841
|
+
|
1660
1842
|
def _ensure_str_list(self, entries: list | tuple | np.ndarray):
|
1661
1843
|
"""
|
1662
1844
|
Convert a variety of possible inputs (string, bytes, list/tuple/ndarray of either)
|
@@ -1787,7 +1969,7 @@ class DemoApp(QMainWindow): # pragma: no cover
|
|
1787
1969
|
self.setCentralWidget(self.main_widget)
|
1788
1970
|
|
1789
1971
|
self.waveform_popup = Waveform(popups=True)
|
1790
|
-
self.waveform_popup.plot(y_name="
|
1972
|
+
self.waveform_popup.plot(y_name="waveform")
|
1791
1973
|
|
1792
1974
|
self.waveform_side = Waveform(popups=False)
|
1793
1975
|
self.waveform_side.plot(y_name="bpm4i", y_entry="bpm4i", dap="GaussianModel")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.10.1
|
4
4
|
Summary: BEC Widgets
|
5
5
|
Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
|
6
6
|
Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
|
@@ -17,7 +17,6 @@ Requires-Dist: isort>=5.13.2,~=5.13
|
|
17
17
|
Requires-Dist: pydantic~=2.0
|
18
18
|
Requires-Dist: pyqtgraph~=0.13
|
19
19
|
Requires-Dist: pyside6~=6.8.2
|
20
|
-
Requires-Dist: pyte
|
21
20
|
Requires-Dist: qtconsole>=5.5.1,~=5.5
|
22
21
|
Requires-Dist: qtpy~=2.4
|
23
22
|
Provides-Extra: dev
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.gitlab-ci.yml,sha256=1nMYldzVk0tFkBWYTcUjumOrdSADASheWOAc0kOFDYs,9509
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=ivqg3HTaOxNbEW3bzWh9MXAkrekuGoNdj0Mj3SdRYuw,639
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=8TfG8PPlQX7cHUlQKo1f5h5jRxV-JZPgWg7Pjn4Ns2k,292512
|
6
6
|
LICENSE,sha256=Daeiu871NcAp8uYi4eB_qHgvypG-HX0ioRQyQxFwjeg,1531
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=cqpZ5fRKb9iyumyY2VgHNy0qtW_B-5gbcH-uPvrWkPA,1254
|
8
8
|
README.md,sha256=oY5Jc1uXehRASuwUJ0umin2vfkFh7tHF-LLruHTaQx0,3560
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=T1p9cRdEf-x8mv73uVd77Cq2gmvp3vu7tihGr2VnxOk,2835
|
10
10
|
.git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
|
11
11
|
.github/pull_request_template.md,sha256=F_cJXzooWMFgMGtLK-7KeGcQt0B4AYFse5oN0zQ9p6g,801
|
12
12
|
.github/ISSUE_TEMPLATE/bug_report.yml,sha256=WdRnt7HGxvsIBLzhkaOWNfg8IJQYa_oV9_F08Ym6znQ,1081
|
@@ -17,7 +17,7 @@ pyproject.toml,sha256=wBhUzRBdzjF8GIWoZDMWlJeT4KjYdU3O6Hu0gsc8dgQ,2902
|
|
17
17
|
.github/scripts/pr_issue_sync/requirements.txt,sha256=bFVVn4_gJjJ-BCykMhfQZLPaG2cthrKwM_skcG9wJkU,17
|
18
18
|
.github/workflows/check_pr.yml,sha256=jKMtYBJTNRAdw_MAS4JzdKVSoNrv8nxUQMqobsYFAXw,903
|
19
19
|
.github/workflows/ci.yml,sha256=OVZt0UxN4wQInuMucuQcKsvHDiz27sLeuQRskxjtkY0,1863
|
20
|
-
.github/workflows/end2end-conda.yml,sha256=
|
20
|
+
.github/workflows/end2end-conda.yml,sha256=yTH-CS8xxQ7kMo4BDpWwOeef1xmsV6gyrgqnFPHTo30,2278
|
21
21
|
.github/workflows/formatter.yml,sha256=CdUVrRxWyVes9y-Ez3jiCJXqANPJtl6kfpGQxeWMhcQ,1694
|
22
22
|
.github/workflows/generate-cli-check.yml,sha256=b6TcK8F5Hy0sFjgXpk0w3BO9eMDZw9WysTl3P7zEPuQ,1742
|
23
23
|
.github/workflows/pytest-matrix.yml,sha256=0gL5wNPJKJF1JapqstlYNYiJ44ko05uaTD7epa7smVw,1834
|
@@ -35,7 +35,7 @@ bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqg
|
|
35
35
|
bec_widgets/assets/app_icons/ui_loader_tile.png,sha256=qSK3XHqvnAVGV9Q0ulORcGFbXJ9LDq2uz8l9uTtMsNk,1812476
|
36
36
|
bec_widgets/assets/app_icons/widget_launch_tile.png,sha256=bWsICHFfSe9-ESUj3AwlE95dDOea-f6M-s9fBapsxB4,2252911
|
37
37
|
bec_widgets/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
-
bec_widgets/cli/client.py,sha256=
|
38
|
+
bec_widgets/cli/client.py,sha256=6fDvgkNBt2Veli4pLARYP-vUT6_FiKKjeqgQLQyK9ik,97919
|
39
39
|
bec_widgets/cli/client_utils.py,sha256=F2hyt--jL53bN8NoWifNUMqwwx5FbpS6I1apERdTRzM,18114
|
40
40
|
bec_widgets/cli/generate_cli.py,sha256=K_wMxo2XBUn92SnY3dSrlyUn8ax6Y20QBGCuP284DsQ,10986
|
41
41
|
bec_widgets/cli/server.py,sha256=h7QyBOOGjyrP_fxJIIOSEMc4E06cLG0JyaofjNV6oCA,5671
|
@@ -219,11 +219,6 @@ bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui,sha256=BVm0Xydqbgm
|
|
219
219
|
bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py,sha256=7tB1gsvv310_kVuKf2u4EdSR4F1posm7QCrWH5Kih-Q,480
|
220
220
|
bec_widgets/widgets/editors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
221
221
|
bec_widgets/widgets/editors/dict_backed_table.py,sha256=u8n5diNaKY-UBb5vkpDSRtSI7w7g1096g37co8nxA8A,6422
|
222
|
-
bec_widgets/widgets/editors/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
223
|
-
bec_widgets/widgets/editors/console/console.py,sha256=OB5vvqpYNhUGWzn5Dx5rR1n0rQulef5Yv-by5RGjr2w,29323
|
224
|
-
bec_widgets/widgets/editors/console/console.pyproject,sha256=JcoDuZG03g1Bxkd3Aipo7jjLexujfbibIZqXHIgLSWc,26
|
225
|
-
bec_widgets/widgets/editors/console/console_plugin.py,sha256=EvFTruYDVHiS4pHIwZnuEvJhS9eQoktuB_k5mcPuEts,1357
|
226
|
-
bec_widgets/widgets/editors/console/register_console.py,sha256=zoF-i3R9sRGzb85sdoxVunebYOfOD53fkCELTPtrFRc,471
|
227
222
|
bec_widgets/widgets/editors/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
228
223
|
bec_widgets/widgets/editors/jupyter_console/jupyter_console.py,sha256=-e7HQOECeH5eDrJYh4BFIzRL78LDkooU4otabyN0aX4,2343
|
229
224
|
bec_widgets/widgets/editors/scan_metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -315,7 +310,7 @@ bec_widgets/widgets/plots/toolbar_bundles/save_state.py,sha256=H3fu-bRzNIycCUFb2
|
|
315
310
|
bec_widgets/widgets/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
316
311
|
bec_widgets/widgets/plots/waveform/curve.py,sha256=KlcGbd60lPO9BYcca08fMhWkfx5qu4O9IbSNTwvajGM,10401
|
317
312
|
bec_widgets/widgets/plots/waveform/register_waveform.py,sha256=pdcLCYKkLkSb-5DqbJdC6M3JyoXQBRVAKf7BZVCto80,467
|
318
|
-
bec_widgets/widgets/plots/waveform/waveform.py,sha256=
|
313
|
+
bec_widgets/widgets/plots/waveform/waveform.py,sha256=_EmQTWiPJmUzDo8PmvLd2gshzE-IECtswfaY7nCTZb4,75499
|
319
314
|
bec_widgets/widgets/plots/waveform/waveform.pyproject,sha256=X2T6d4JGt9YSI28e-myjXh1YkUM4Yr3kNb0-F84KvUA,26
|
320
315
|
bec_widgets/widgets/plots/waveform/waveform_plugin.py,sha256=2AZPtBHs75l9cdhwQnY3jpIMRPUUqK3RNvQbTvrFyvg,1237
|
321
316
|
bec_widgets/widgets/plots/waveform/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -408,8 +403,8 @@ bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py,sha256=O
|
|
408
403
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject,sha256=Lbi9zb6HNlIq14k6hlzR-oz6PIFShBuF7QxE6d87d64,34
|
409
404
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py,sha256=CzChz2SSETYsR8-36meqWnsXCT-FIy_J_xeU5coWDY8,1350
|
410
405
|
bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py,sha256=rMpZ1CaoucwobgPj1FuKTnt07W82bV1GaSYdoqcdMb8,521
|
411
|
-
bec_widgets-2.
|
412
|
-
bec_widgets-2.
|
413
|
-
bec_widgets-2.
|
414
|
-
bec_widgets-2.
|
415
|
-
bec_widgets-2.
|
406
|
+
bec_widgets-2.10.1.dist-info/METADATA,sha256=cqpZ5fRKb9iyumyY2VgHNy0qtW_B-5gbcH-uPvrWkPA,1254
|
407
|
+
bec_widgets-2.10.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
408
|
+
bec_widgets-2.10.1.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
409
|
+
bec_widgets-2.10.1.dist-info/licenses/LICENSE,sha256=Daeiu871NcAp8uYi4eB_qHgvypG-HX0ioRQyQxFwjeg,1531
|
410
|
+
bec_widgets-2.10.1.dist-info/RECORD,,
|
pyproject.toml
CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "bec_widgets"
|
7
|
-
version = "2.
|
7
|
+
version = "2.10.1"
|
8
8
|
description = "BEC Widgets"
|
9
9
|
requires-python = ">=3.10"
|
10
10
|
classifiers = [
|
@@ -21,7 +21,6 @@ dependencies = [
|
|
21
21
|
"pydantic~=2.0",
|
22
22
|
"pyqtgraph~=0.13",
|
23
23
|
"PySide6~=6.8.2",
|
24
|
-
"pyte", # needed for vt100 console
|
25
24
|
"qtconsole~=5.5, >=5.5.1", # needed for jupyter console
|
26
25
|
"qtpy~=2.4",
|
27
26
|
]
|
File without changes
|