datalab-platform 1.0.1__py3-none-any.whl → 1.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. datalab/__init__.py +1 -1
  2. datalab/adapters_metadata/common.py +2 -2
  3. datalab/adapters_plotpy/converters.py +3 -1
  4. datalab/adapters_plotpy/coordutils.py +157 -0
  5. datalab/adapters_plotpy/roi/image.py +35 -6
  6. datalab/adapters_plotpy/roi/signal.py +8 -1
  7. datalab/config.py +88 -26
  8. datalab/control/baseproxy.py +70 -0
  9. datalab/control/proxy.py +33 -0
  10. datalab/control/remote.py +35 -0
  11. datalab/data/doc/DataLab_en.pdf +0 -0
  12. datalab/data/doc/DataLab_fr.pdf +0 -0
  13. datalab/data/icons/create/linear_chirp.svg +1 -1
  14. datalab/data/icons/create/logistic.svg +1 -1
  15. datalab/gui/actionhandler.py +16 -2
  16. datalab/gui/h5io.py +25 -0
  17. datalab/gui/macroeditor.py +37 -6
  18. datalab/gui/main.py +62 -5
  19. datalab/gui/newobject.py +7 -0
  20. datalab/gui/objectview.py +18 -3
  21. datalab/gui/panel/base.py +89 -16
  22. datalab/gui/panel/macro.py +26 -0
  23. datalab/gui/plothandler.py +20 -2
  24. datalab/gui/processor/base.py +72 -26
  25. datalab/gui/processor/image.py +6 -2
  26. datalab/gui/processor/signal.py +10 -0
  27. datalab/gui/roieditor.py +2 -2
  28. datalab/locale/fr/LC_MESSAGES/datalab.mo +0 -0
  29. datalab/locale/fr/LC_MESSAGES/datalab.po +3288 -0
  30. datalab/objectmodel.py +1 -1
  31. datalab/tests/features/common/auto_analysis_recompute_unit_test.py +81 -0
  32. datalab/tests/features/common/coordutils_unit_test.py +212 -0
  33. datalab/tests/features/common/result_deletion_unit_test.py +121 -1
  34. datalab/tests/features/common/roi_plotitem_unit_test.py +4 -2
  35. datalab/tests/features/common/update_tree_robustness_test.py +65 -0
  36. datalab/tests/features/control/remoteclient_unit.py +10 -0
  37. datalab/tests/features/hdf5/h5workspace_unit_test.py +133 -0
  38. datalab/tests/features/image/roigrid_unit_test.py +75 -0
  39. datalab/tests/features/macro/macroeditor_unit_test.py +104 -3
  40. datalab/tests/features/signal/custom_signal_bug_unit_test.py +96 -0
  41. datalab/widgets/imagebackground.py +13 -4
  42. datalab/widgets/instconfviewer.py +2 -2
  43. datalab/widgets/signalcursor.py +7 -2
  44. datalab/widgets/signaldeltax.py +4 -1
  45. {datalab_platform-1.0.1.dist-info → datalab_platform-1.0.3.dist-info}/METADATA +3 -3
  46. {datalab_platform-1.0.1.dist-info → datalab_platform-1.0.3.dist-info}/RECORD +50 -43
  47. {datalab_platform-1.0.1.dist-info → datalab_platform-1.0.3.dist-info}/WHEEL +0 -0
  48. {datalab_platform-1.0.1.dist-info → datalab_platform-1.0.3.dist-info}/entry_points.txt +0 -0
  49. {datalab_platform-1.0.1.dist-info → datalab_platform-1.0.3.dist-info}/licenses/LICENSE +0 -0
  50. {datalab_platform-1.0.1.dist-info → datalab_platform-1.0.3.dist-info}/top_level.txt +0 -0
@@ -55,6 +55,81 @@ def test_roi_grid_geometry_headless() -> None:
55
55
  assert dy == img.height / 2 * 0.5
56
56
 
57
57
 
58
+ def test_roi_grid_custom_step() -> None:
59
+ """Test ROI grid with custom xstep/ystep parameters.
60
+
61
+ This test verifies the bug fix for Issue #XXX where grid ROI extraction
62
+ was not working correctly for images with non-uniformly distributed features
63
+ (e.g., laser spot arrays with gaps between spots).
64
+
65
+ The bug was that xstep and ystep parameters were missing, so users couldn't
66
+ adjust the spacing between ROIs when spots don't fill the entire image.
67
+ """
68
+ img = create_grid_of_gaussian_images()
69
+
70
+ # Test Case 1: Custom step to simulate tighter spacing (e.g., laser spots)
71
+ gp = ROIGridParam()
72
+ gp.nx, gp.ny = 3, 3
73
+ gp.xsize = gp.ysize = 20 # Small ROI size (20% of cell)
74
+ gp.xtranslation = gp.ytranslation = 50 # Centered
75
+ gp.xstep = gp.ystep = 75 # Tighter spacing (75% instead of 100%)
76
+ gp.xdirection = gp.ydirection = Direction.INCREASING
77
+
78
+ with qt_app_context():
79
+ dlg = ImageGridROIEditor(parent=None, obj=img, gridparam=gp)
80
+ dlg.update_obj(update_item=False)
81
+ roi = dlg.get_roi()
82
+ assert roi is not None
83
+ # 9 ROIs for 3x3 grid
84
+ assert len(list(roi)) == 9
85
+
86
+ # Verify spacing is correctly applied
87
+ r11 = next(r for r in roi if r.title == "ROI(1,1)")
88
+ r12 = next(r for r in roi if r.title == "ROI(1,2)")
89
+ x0_r11, _, _, _ = r11.get_physical_coords(img)
90
+ x0_r12, _, _, _ = r12.get_physical_coords(img)
91
+
92
+ # Expected spacing: (width / nx) * (xstep / 100)
93
+ expected_spacing = (img.width / gp.nx) * (gp.xstep / 100.0)
94
+ actual_spacing = x0_r12 - x0_r11
95
+
96
+ # Allow 1% tolerance for numerical precision
97
+ assert abs(actual_spacing - expected_spacing) / expected_spacing < 0.01
98
+
99
+ # Test Case 2: Different X and Y steps
100
+ gp2 = ROIGridParam()
101
+ gp2.nx, gp2.ny = 2, 2
102
+ gp2.xsize = gp2.ysize = 30
103
+ gp2.xtranslation = gp2.ytranslation = 50
104
+ gp2.xstep = 80 # Tighter X spacing
105
+ gp2.ystep = 120 # Wider Y spacing
106
+ gp2.xdirection = gp2.ydirection = Direction.INCREASING
107
+
108
+ with qt_app_context():
109
+ dlg2 = ImageGridROIEditor(parent=None, obj=img, gridparam=gp2)
110
+ dlg2.update_obj(update_item=False)
111
+ roi2 = dlg2.get_roi()
112
+ assert roi2 is not None
113
+ assert len(list(roi2)) == 4
114
+
115
+ # Verify X spacing (80%)
116
+ r11 = next(r for r in roi2 if r.title == "ROI(1,1)")
117
+ r12 = next(r for r in roi2 if r.title == "ROI(1,2)")
118
+ x0_r11, y0_r11, _, _ = r11.get_physical_coords(img)
119
+ x0_r12, _, _, _ = r12.get_physical_coords(img)
120
+ expected_x_spacing = (img.width / gp2.nx) * 0.8
121
+ actual_x_spacing = x0_r12 - x0_r11
122
+ assert abs(actual_x_spacing - expected_x_spacing) / expected_x_spacing < 0.01
123
+
124
+ # Verify Y spacing (120%)
125
+ r21 = next(r for r in roi2 if r.title == "ROI(2,1)")
126
+ _, y0_r21, _, _ = r21.get_physical_coords(img)
127
+ expected_y_spacing = (img.height / gp2.ny) * 1.2
128
+ actual_y_spacing = y0_r21 - y0_r11
129
+ assert abs(actual_y_spacing - expected_y_spacing) / expected_y_spacing < 0.01
130
+
131
+
58
132
  if __name__ == "__main__":
59
133
  test_roi_grid_geometry_headless()
134
+ test_roi_grid_custom_step()
60
135
  test_roi_grid(screenshots=True)
@@ -18,13 +18,15 @@ All other methods should be tested here.
18
18
  # guitest: show
19
19
 
20
20
  import os.path as osp
21
+ import time
21
22
 
22
23
  from guidata.qthelpers import qt_app_context
24
+ from qtpy import QtWidgets as QW
23
25
 
24
26
  from datalab.env import execenv
25
27
  from datalab.gui.macroeditor import Macro
26
- from datalab.gui.panel import macro
27
- from datalab.tests import helpers
28
+ from datalab.gui.panel.macro import MacroPanel
29
+ from datalab.tests import datalab_test_app_context, helpers
28
30
 
29
31
 
30
32
  def get_macro_example_path() -> str:
@@ -54,7 +56,7 @@ print("All done! :)")
54
56
  def test_macro_editor():
55
57
  """Test dep viewer window"""
56
58
  with qt_app_context(exec_loop=True):
57
- widget = macro.MacroPanel(None)
59
+ widget = MacroPanel(None)
58
60
  widget.resize(800, 600)
59
61
  widget.show()
60
62
 
@@ -98,5 +100,104 @@ def test_macro_editor():
98
100
  assert widget.get_macro_titles()[0] == osp.basename(macro_path)
99
101
 
100
102
 
103
+ def test_macro_unicode_encoding():
104
+ """Test that macros can print Unicode characters without encoding errors.
105
+
106
+ This test verifies the fix for the UnicodeEncodeError that occurred on Windows
107
+ systems with locales like cp1252 when macros printed Unicode characters.
108
+
109
+ The test creates and runs a macro that prints various Unicode characters,
110
+ simulating the scenario where RemoteProxy connection messages (which contain
111
+ arrows →) would cause encoding errors on Windows with cp1252 locale.
112
+
113
+ Without the UTF-8 encoding fix in Macro.run(), this test would fail with:
114
+ UnicodeEncodeError: 'charmap' codec can't encode character '\u2192'
115
+ """
116
+ with helpers.WorkdirRestoringTempDir():
117
+ with datalab_test_app_context(console=False) as win:
118
+ win.set_current_panel("macro")
119
+
120
+ # Create a macro that prints various Unicode characters
121
+ macro = win.macropanel.add_macro()
122
+ macro.title = "Unicode Test Macro"
123
+
124
+ # This test verifies that Unicode characters can be printed successfully.
125
+ # The macro prints Unicode characters without any encoding manipulation.
126
+ # With the UTF-8 fix in Macro.run(), these print statements work correctly.
127
+ # Without the fix, on systems with cp1252 locale, these would fail.
128
+ #
129
+ # Note: We cannot reliably simulate cp1252 locale in the test because:
130
+ # 1. Modern Python often defaults to UTF-8
131
+ # 2. If we manually reconfigure to cp1252 in the macro, it overrides
132
+ # any fix done before the macro code runs
133
+ # 3. The PYTHONIOENCODING env var might be set system-wide
134
+ #
135
+ # This test serves as a regression test - it will catch if the fix
136
+ # is removed, but only on systems that actually default to cp1252.
137
+ unicode_code = """
138
+ import sys
139
+
140
+ # Print encoding info for debugging
141
+ print(f"stdout encoding: {sys.stdout.encoding}")
142
+ print(f"stderr encoding: {sys.stderr.encoding}")
143
+
144
+ # Print various Unicode characters that are not in cp1252
145
+ # On systems with cp1252 default locale, without the UTF-8 fix,
146
+ # these would cause UnicodeEncodeError
147
+ print("Testing Unicode output:")
148
+ print(" → Arrow character (U+2192)")
149
+ print(" ✓ Check mark (U+2713)")
150
+ print(" • Bullet point (U+2022)")
151
+ print(" … Ellipsis (U+2026)")
152
+ print(" Emoji: 🎉 🚀 ⚡")
153
+
154
+ # Simulate RemoteProxy connection message format
155
+ print("Setting XML-RPC port... [input:None] →[execenv.xmlrpcport:None] OK")
156
+
157
+ print("All Unicode tests passed! ✓")
158
+ """
159
+ macro.set_code(unicode_code)
160
+
161
+ # Run the macro and wait for completion
162
+ execenv.print("Running Unicode test macro...")
163
+ win.macropanel.run_macro()
164
+
165
+ # Wait for macro to complete (with timeout)
166
+ # We need to process Qt events for the QProcess signals to be delivered
167
+ max_wait = 10 # seconds
168
+ elapsed = 0
169
+ while macro.is_running() and elapsed < max_wait:
170
+ QW.QApplication.processEvents()
171
+ time.sleep(0.1)
172
+ elapsed += 0.1
173
+
174
+ # Verify the macro completed (not still running)
175
+ # If there was an encoding error, the process would have crashed
176
+ assert not macro.is_running(), (
177
+ "Macro did not complete within timeout - "
178
+ "likely failed with encoding error"
179
+ )
180
+
181
+ # Check the exit code - should be 0 for success
182
+ # With the UTF-8 fix, the macro completes successfully (exit code 0)
183
+ # Without the fix, it crashes with UnicodeEncodeError (exit code 1)
184
+ exit_code = macro.get_exit_code()
185
+ assert exit_code == 0, (
186
+ f"Macro exited with error code {exit_code} - "
187
+ f"likely UnicodeEncodeError when trying to print Unicode characters"
188
+ )
189
+
190
+ execenv.print("✓ Unicode test macro completed successfully!")
191
+ execenv.print(
192
+ "Note: This test verifies Unicode support works. On systems with "
193
+ "UTF-8 as default encoding, it may pass even without the fix. "
194
+ "The fix is critical for Windows systems with cp1252 locale."
195
+ )
196
+
197
+ # Clean up
198
+ win.macropanel.remove_all_objects()
199
+
200
+
101
201
  if __name__ == "__main__":
102
202
  test_macro_editor()
203
+ test_macro_unicode_encoding()
@@ -0,0 +1,96 @@
1
+ # Copyright (c) DataLab Platform Developers, BSD 3-Clause license, see LICENSE file.
2
+
3
+ """
4
+ Test for Custom Signal creation bug fix
5
+ ========================================
6
+
7
+ This test verifies that creating a Custom signal doesn't crash with AttributeError
8
+ when xyarray is None.
9
+
10
+ Bug report: "Créer un signal Custom déclenche immédiatement l'erreur
11
+ AttributeError: 'NoneType' object has no attribute 'T'."
12
+ """
13
+
14
+ import pytest
15
+ from guidata.qthelpers import qt_app_context
16
+
17
+ from datalab.gui.newobject import CustomSignalParam, create_signal_gui
18
+
19
+
20
+ def test_custom_signal_param_initialization():
21
+ """Test that CustomSignalParam initializes properly"""
22
+ with qt_app_context():
23
+ param = CustomSignalParam()
24
+ # Initially, xyarray should be None
25
+ assert param.xyarray is None
26
+ # But other defaults should exist
27
+ assert param.size == 10
28
+ assert param.xmin == 0.0
29
+ assert param.xmax == 1.0
30
+
31
+
32
+ def test_custom_signal_param_setup_array():
33
+ """Test that setup_array creates the xyarray properly"""
34
+ with qt_app_context():
35
+ param = CustomSignalParam()
36
+ assert param.xyarray is None
37
+
38
+ # Call setup_array to initialize
39
+ param.setup_array(size=10, xmin=0.0, xmax=1.0)
40
+
41
+ # Now xyarray should exist and be transposable
42
+ assert param.xyarray is not None
43
+ assert param.xyarray.shape == (10, 2)
44
+
45
+ # Should be able to transpose without error
46
+ transposed = param.xyarray.T
47
+ assert transposed.shape == (2, 10)
48
+
49
+
50
+ def test_custom_signal_param_generate_1d_data():
51
+ """Test that generate_1d_data works even with None xyarray"""
52
+ with qt_app_context():
53
+ param = CustomSignalParam()
54
+ assert param.xyarray is None
55
+
56
+ # generate_1d_data should call setup_array internally
57
+ x, y = param.generate_1d_data()
58
+
59
+ # Should succeed without AttributeError
60
+ assert x is not None
61
+ assert y is not None
62
+ assert len(x) == param.size
63
+ assert len(y) == param.size
64
+
65
+
66
+ def test_custom_signal_creation_forces_edit_mode():
67
+ """Test that creating a custom signal with edit=False forces edit=True
68
+
69
+ This test verifies the bug fix for:
70
+ "Créer un signal Custom déclenche immédiatement l'erreur
71
+ AttributeError: 'NoneType' object has no attribute 'T'."
72
+
73
+ The bug occurred when edit=False was passed (the default), which caused
74
+ setup_array to not be called, leaving xyarray as None, which then crashed
75
+ when trying to access xyarray.T.
76
+
77
+ The fix forces edit=True for CustomSignalParam to ensure the user is always
78
+ prompted to set up the array properly.
79
+ """
80
+ # This test can't actually test the dialog interaction, but we can verify
81
+ # that the code doesn't crash immediately with AttributeError due to None xyarray
82
+ # The test framework will handle the unattended mode appropriately
83
+ with qt_app_context():
84
+ # In unattended mode, the dialogs will be auto-canceled, so this should
85
+ # return None rather than crashing
86
+ param = CustomSignalParam()
87
+ # In actual usage with GUI, this would show dialogs
88
+ # In unattended test mode, dialogs are auto-canceled
89
+ # The important thing is it doesn't crash with AttributeError
90
+ _signal = create_signal_gui(param, edit=False, parent=None)
91
+ # In unattended mode, this will be None because dialogs are canceled
92
+ # But it shouldn't have crashed with AttributeError
93
+
94
+
95
+ if __name__ == "__main__":
96
+ pytest.main([__file__, "-v"])
@@ -6,12 +6,12 @@
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- from typing import TYPE_CHECKING
9
+ from typing import TYPE_CHECKING, Any
10
10
 
11
11
  import numpy as np
12
12
  from guidata.configtools import get_icon
13
13
  from plotpy.builder import make
14
- from plotpy.plot import PlotDialog
14
+ from plotpy.plot import PlotDialog, PlotOptions
15
15
 
16
16
  from datalab.adapters_plotpy import create_adapter_from_object
17
17
  from datalab.config import _
@@ -29,16 +29,25 @@ class ImageBackgroundDialog(PlotDialog):
29
29
  Args:
30
30
  image: image object
31
31
  parent: parent widget. Defaults to None.
32
+ options: plot options. Defaults to None.
32
33
  """
33
34
 
34
- def __init__(self, image: ImageObj, parent: QWidget | None = None) -> None:
35
+ def __init__(
36
+ self,
37
+ image: ImageObj,
38
+ parent: QWidget | None = None,
39
+ options: PlotOptions | dict[str, Any] | None = None,
40
+ ) -> None:
35
41
  self.__background: float | None = None
36
42
  self.__rect_coords: tuple[float, float, float, float] | None = None
37
43
  self.imageitem: MaskedXYImageItem | None = None
38
44
  self.rectarea: RectangleShape | None = None
39
45
  self.comput2d: RangeComputation2d | None = None
40
46
  super().__init__(
41
- title=_("Image background selection"), edit=True, parent=parent
47
+ title=_("Image background selection"),
48
+ edit=True,
49
+ parent=parent,
50
+ options=options,
42
51
  )
43
52
  self.setObjectName("backgroundselection")
44
53
  if parent is None:
@@ -89,8 +89,8 @@ def get_manifest_package_info(manifest_path: Path) -> str:
89
89
  result_lines.append(f"{name:{name_width}} {version:{version_width}}")
90
90
 
91
91
  return os.linesep.join(result_lines)
92
- except Exception as e:
93
- return f"Error reading manifest file: {e}"
92
+ except Exception as exc: # pylint: disable=broad-except
93
+ return f"Error reading manifest file: {exc}"
94
94
 
95
95
 
96
96
  def get_install_info() -> str:
@@ -12,6 +12,7 @@ import numpy as np
12
12
  from guidata.configtools import get_icon
13
13
  from plotpy.builder import make
14
14
  from plotpy.plot import PlotDialog
15
+ from qtpy import QtCore as QC
15
16
  from qtpy import QtGui as QG
16
17
  from qtpy import QtWidgets as QW
17
18
  from sigima.tools.signal.features import find_x_values_at_y
@@ -76,10 +77,14 @@ class SignalCursorDialog(PlotDialog):
76
77
  ylabel = QW.QLabel("Y=")
77
78
  self.xlineedit = QW.QLineEdit()
78
79
  self.xlineedit.editingFinished.connect(self.xlineedit_editing_finished)
79
- self.xlineedit.setValidator(QG.QDoubleValidator())
80
+ x_validator = QG.QDoubleValidator()
81
+ x_validator.setLocale(QC.QLocale("C"))
82
+ self.xlineedit.setValidator(x_validator)
80
83
  self.ylineedit = QW.QLineEdit()
81
84
  self.ylineedit.editingFinished.connect(self.ylineedit_editing_finished)
82
- self.ylineedit.setValidator(QG.QDoubleValidator())
85
+ y_validator = QG.QDoubleValidator()
86
+ y_validator.setLocale(QC.QLocale("C"))
87
+ self.ylineedit.setValidator(y_validator)
83
88
  self.xlineedit.setReadOnly(self.__cursor_orientation == "horizontal")
84
89
  self.xlineedit.setDisabled(self.__cursor_orientation == "horizontal")
85
90
  self.ylineedit.setReadOnly(self.__cursor_orientation == "vertical")
@@ -15,6 +15,7 @@ import numpy as np
15
15
  from guidata.configtools import get_icon
16
16
  from plotpy.builder import make
17
17
  from plotpy.plot import PlotDialog
18
+ from qtpy import QtCore as QC
18
19
  from qtpy import QtGui as QG
19
20
  from qtpy import QtWidgets as QW
20
21
  from sigima.tools.signal.pulse import full_width_at_y
@@ -68,7 +69,9 @@ class SignalDeltaXDialog(PlotDialog):
68
69
  self.deltaxlineedit.setDisabled(True)
69
70
  self.ylineedit = QW.QLineEdit()
70
71
  self.ylineedit.editingFinished.connect(self.ylineedit_editing_finished)
71
- self.ylineedit.setValidator(QG.QDoubleValidator())
72
+ y_validator = QG.QDoubleValidator()
73
+ y_validator.setLocale(QC.QLocale("C"))
74
+ self.ylineedit.setValidator(y_validator)
72
75
  xygroup = QW.QGroupBox(_("Cursor position"))
73
76
  xylayout = QW.QHBoxLayout()
74
77
  xylayout.addWidget(xlabel)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datalab-platform
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: DataLab is a data processing and analysis software for scientific and industrial applications
5
5
  Author-email: Pierre Raybaut <p.raybaut@codra.fr>
6
6
  Maintainer-email: DataLab Platform Developers <p.raybaut@codra.fr>
@@ -32,9 +32,9 @@ Classifier: Topic :: Software Development :: Widget Sets
32
32
  Requires-Python: <4,>=3.9
33
33
  Description-Content-Type: text/markdown
34
34
  License-File: LICENSE
35
- Requires-Dist: guidata>=3.13.3
35
+ Requires-Dist: guidata>=3.13.4
36
36
  Requires-Dist: PlotPy>=2.8.2
37
- Requires-Dist: Sigima>=1.0.2
37
+ Requires-Dist: Sigima>=1.0.4
38
38
  Requires-Dist: NumPy>=1.22
39
39
  Requires-Dist: SciPy>=1.10.1
40
40
  Requires-Dist: scikit-image>=0.19.2
@@ -1,18 +1,19 @@
1
- datalab/__init__.py,sha256=4jqHacSyoyjmVdwTwO9Gzfzn1-Jjbg-2j1X416ME96k,1245
1
+ datalab/__init__.py,sha256=tcHTf_MJ4QWBZIe0RUC5qsCe0qCYvZh20A2khoVwO3I,1245
2
2
  datalab/app.py,sha256=DEr6IQ211YfltLD8xdHngb5-Zv8Tng9G2t2snW-AowQ,3004
3
- datalab/config.py,sha256=NWNBgi6pX73WAEuL61I607NkQgcCM-cXk5F5nJDy_9I,34293
3
+ datalab/config.py,sha256=TFh_rItt2S285gdA-_A0_J1vixbxw0AJqHupn8sZKN0,37435
4
4
  datalab/env.py,sha256=gWfLH7wWdj7b7nTocvSi1ptEF1KkGZry5Sw9g7ND2N8,18769
5
- datalab/objectmodel.py,sha256=v275fem6ZLK4xa4qvbES8dh9p90-ZwmCzTu-wuGh7HE,22410
5
+ datalab/objectmodel.py,sha256=pwxiHNOqEWJjTiJmo5f3uqtPEBjogRzpLJrdl4_y8q8,22417
6
6
  datalab/plugins.py,sha256=hTkbeDDD2oGovKLWCcuuleEkTLZWI3dnyhqPQh7saZM,11950
7
7
  datalab/adapters_metadata/__init__.py,sha256=XyKDWfkko1KRgXcdRP2BZhdc8Y8ghG9hhf3mPXJ58Y0,815
8
8
  datalab/adapters_metadata/base_adapter.py,sha256=Y4MGQuw5HMFDUmGWuBf2ctgjrGCp7ttRawpmnCmAzbI,9999
9
- datalab/adapters_metadata/common.py,sha256=thdGIO1jN0ByWVCU0cvdIJPfUL4t7kT_FDugeCBKZVY,15363
9
+ datalab/adapters_metadata/common.py,sha256=4qmvqndfUeFbyzWa3jklhRkOf6XTwPA-x3wE10aVbjY,15375
10
10
  datalab/adapters_metadata/geometry_adapter.py,sha256=M1zHd-gJ27wSFWiq40Ap_5sMqA0yERNbA48d4SX-21s,2930
11
11
  datalab/adapters_metadata/table_adapter.py,sha256=DZ3kD3A-wiiXWzRQ2P-ld3v-Fv5EwXkgkJFA4wYfVvs,2488
12
12
  datalab/adapters_plotpy/__init__.py,sha256=YKQa4-mB6TQPN8QVc4sknnmWb6muRWpnPrmbsx9W4Jw,1471
13
13
  datalab/adapters_plotpy/annotations.py,sha256=zDMFw2OYzDUDq-yKDkDuWxHTxrDHc3mNBJEyCc7gCUc,3985
14
14
  datalab/adapters_plotpy/base.py,sha256=xk4Zu0SamshK8Fb9htn-w2y4BPLLkiZOmJ3DXpQoI3Y,2906
15
- datalab/adapters_plotpy/converters.py,sha256=A-leWE5XOwDItdGjrrFPImHakfa3Xrij9j2LVmUR4aY,2561
15
+ datalab/adapters_plotpy/converters.py,sha256=dRR-eno4iZjh56j9cuU1TVjISYC0FlqdgG67OtvOb9M,2682
16
+ datalab/adapters_plotpy/coordutils.py,sha256=noHhA8PI0fbqiRU2HoZcnSTSA_TXMsmK9KjVABKdSxA,5887
16
17
  datalab/adapters_plotpy/factories.py,sha256=5_cb2mGNJPR2bS97J36XvNkuf9rwu4xHquP5T_hOnHg,2986
17
18
  datalab/adapters_plotpy/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
19
  datalab/adapters_plotpy/objects/base.py,sha256=MSWv2I057_2qtJhY02GslJ23TRdK_2GqWgD0Ap1eTjg,6914
@@ -22,14 +23,14 @@ datalab/adapters_plotpy/objects/signal.py,sha256=Bp8ahogAPzq_ndY2wK5t4MflhMoYKTA
22
23
  datalab/adapters_plotpy/roi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
24
  datalab/adapters_plotpy/roi/base.py,sha256=FbqYb9cf1FASWri901Jkf162GyUYn0FQp97tzTmGEo8,3992
24
25
  datalab/adapters_plotpy/roi/factory.py,sha256=vH8ko4hWoxySSwQjpblOgU7PSGXZ0aa2_cl33nkKiqc,2908
25
- datalab/adapters_plotpy/roi/image.py,sha256=ltnosSv8r0xMbTwiFHhixQbku69IKXAnOR19vFIXCPc,6954
26
- datalab/adapters_plotpy/roi/signal.py,sha256=QC_H1fFmyDQFnF4Cq8KA2RNebBPL7g8AZV2AbOkYkF0,2120
26
+ datalab/adapters_plotpy/roi/image.py,sha256=nhW60NPQJwUvx-cwJylzJp1kNg_SEY9NyjP-i5niIPs,8285
27
+ datalab/adapters_plotpy/roi/signal.py,sha256=ZPQehXVAw9rIEUmwUsAmM-6t9yU_2VHdNQTbLJUSJXA,2439
27
28
  datalab/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- datalab/control/baseproxy.py,sha256=noCjpF-FcuvUg-7BpEQPgqde8RPMRTxvafA6douJSF0,24813
29
- datalab/control/proxy.py,sha256=CNnX8u8VAfYvL1jUMRf0I8By5ugYVD2IE7nAKuhqzlE,10906
30
- datalab/control/remote.py,sha256=f6PQkKpIlad32DVYxzX5UFfGtYWxxH24U4eYbVK0YHY,35350
31
- datalab/data/doc/DataLab_en.pdf,sha256=UlniEIa1UFv1JWWyItJeZJSW3R3COHIAAevx1y7I3B4,17133131
32
- datalab/data/doc/DataLab_fr.pdf,sha256=QTcLo27JXYLBzWZz4a4M30pi9lgvqtkY6zvj3VkP9I8,17171360
29
+ datalab/control/baseproxy.py,sha256=-T_R2JgC_gXx1HAfd28nWqDWG439mF9OhY4jVPO8ctY,27545
30
+ datalab/control/proxy.py,sha256=Aj7xOr04QVNXtYs4aHCrhMl-BOKNB21nDEy3BotHeVU,12257
31
+ datalab/control/remote.py,sha256=DcklNCDILT1uQlV0ydaaMvQv2Zn3E66jODXoSSHTixE,36718
32
+ datalab/data/doc/DataLab_en.pdf,sha256=sgDH0_iSAJ19WvRpsjKDV6VcZxztpBwVcnhHoyueNHI,17242202
33
+ datalab/data/doc/DataLab_fr.pdf,sha256=LbSglp7beQhcqgFv-2wtK8RKQYYsl_eQ30k8d9_baEc,17287221
33
34
  datalab/data/icons/analysis.svg,sha256=jDZAqd1UpSfyiIPXnk3AyUcxqYByYvcKlJ61PI3g7bE,6592
34
35
  datalab/data/icons/apply.svg,sha256=VQQxY3a2UA7Chu5gJ7XQUwiRHdqfkOmmRNhv34PA0SY,471
35
36
  datalab/data/icons/check_all.svg,sha256=pe7FtRiD64KvzBPh3JJpQN9tDmdwtbTHy3YHx90KGq8,4254
@@ -106,8 +107,8 @@ datalab/data/icons/create/cosine.svg,sha256=qH7yVUMYh5VUvt8tpN8oGJssIr7hrkYHw9Y5
106
107
  datalab/data/icons/create/exponential.svg,sha256=KyBCK9DHakA8a7yKirWm0wumrI7SNLHQ9RhVn3r2AjI,1734
107
108
  datalab/data/icons/create/gaussian.svg,sha256=qNtRIbYoH2zsipGceLm87hCCcsL72X3bTmZVKwW5jd8,6584
108
109
  datalab/data/icons/create/grating.svg,sha256=NVUKaliu_fmoAm-Zy3ED5-kJMZm7DgKHFDWkFoP8voU,2632
109
- datalab/data/icons/create/linear_chirp.svg,sha256=qUT4Pkj8LRVgCG8ymdkQYt24YKIVvr7y2KIWDnfMjEo,809
110
- datalab/data/icons/create/logistic.svg,sha256=2BSCgoQ4YMGfEcTv0le_mmF04b7XkraiZ-HnXLKj7t4,752
110
+ datalab/data/icons/create/linear_chirp.svg,sha256=YoiyF75Byoeum9djc2KZVuDLmUfTEbxRae2Fo31saZU,836
111
+ datalab/data/icons/create/logistic.svg,sha256=HiGJ-B7GClZSgnwP8SNvSa5mlwszs12SZLOJTB-HoJc,766
111
112
  datalab/data/icons/create/lorentzian.svg,sha256=GCH5wniyiMq-rFz-WQfI8ys53VICNEPEV-3hcS1Mwhc,6417
112
113
  datalab/data/icons/create/planck.svg,sha256=DuEa8qogqFIJD6DEe34rwIcOeKmfUYvWZWGdzfaJV7Y,6412
113
114
  datalab/data/icons/create/polynomial.svg,sha256=7IbiblyA-3oJZR5nuiLAtVBEHTiK8gTZlp31UTvnR9M,718
@@ -297,34 +298,36 @@ datalab/data/tutorials/laser_beam/TEM00_z_70.jpg,sha256=monLxXE8zwzHmv8i2eVwToEr
297
298
  datalab/data/tutorials/laser_beam/TEM00_z_75.jpg,sha256=4sQ17VWtte7E6RbMWiUcluGCXjWYLmnfCW6I3b1lWHg,81376
298
299
  datalab/data/tutorials/laser_beam/TEM00_z_80.jpg,sha256=5KMSrqB02sAyOqytQyRgMsTfrRT3Cna9vhcBRL4PWis,80464
299
300
  datalab/gui/__init__.py,sha256=ueRKAHh4jpIM7psJWmn-ddRpTU9Yy7gUljWJb6uluJw,2923
300
- datalab/gui/actionhandler.py,sha256=xbI_bWtJA7WdqKULaBma-f1EWM6LIft9pNGolOptX7M,72887
301
+ datalab/gui/actionhandler.py,sha256=SOTI5KUJt_XbHiJ5qpWv6J3Aba7mRww9P4NhpCZBWIs,73498
301
302
  datalab/gui/docks.py,sha256=Fan4Pv9vQ4xrZdFgB4KfqbM28E5JHK93_ZARSfGEXz8,17164
302
- datalab/gui/h5io.py,sha256=786P-mxrFA0SAeA6YrH9F_xz8Nu01fMAtUd672bfMNU,5759
303
- datalab/gui/macroeditor.py,sha256=D8h9rw0Bqhmv0oqARXKXrg3plWD6PMO-5KGEMmM4ka8,9473
304
- datalab/gui/main.py,sha256=XCGYghhTfBlEe2b_8feWM0JuOXbpdE3S-JQhNXzb0-s,81954
305
- datalab/gui/newobject.py,sha256=QvQ-633Rgub7Sjk_M7DkYZ5y91Pc7RRh-YwlOPbQ1pY,7258
306
- datalab/gui/objectview.py,sha256=ZHAn66Qkt_Fjld8uAYw0EGS8EiMR_xeRYmoLzQzbeM8,32122
307
- datalab/gui/plothandler.py,sha256=KhCZ20KEKq3TsBoi_Xia51eJuTIrNu-bgsLGqnwFsuM,33046
303
+ datalab/gui/h5io.py,sha256=_h930rKql0pzXohovfqGx7tOQQ7k6ANfwGemPWk3Cow,6710
304
+ datalab/gui/macroeditor.py,sha256=XLb1EbVPC2oPFSgqWGVZFG9707StwPuuChQrRxnN0hY,10649
305
+ datalab/gui/main.py,sha256=8F698RBG4GFFF8l9OCpgs1mxBdBux0MGpv_emBvMB1E,84307
306
+ datalab/gui/newobject.py,sha256=dfGWiQF13CeJ0LHDS3fcYjuVTpszl3e2XAc6xyUQXKc,7625
307
+ datalab/gui/objectview.py,sha256=bTUE_kCepfV-_OpUrlEZqlSjCHkiGYwwzlQaOJPrfro,32828
308
+ datalab/gui/plothandler.py,sha256=GBVdU61sSJ6bMfF14J5aSR-lomv6P1MEod5_Vfr2DdA,34086
308
309
  datalab/gui/profiledialog.py,sha256=n7X-XwJPYD9fi7lQ1V3WemsHq-fNokwfLfqMIwY30tA,12799
309
- datalab/gui/roieditor.py,sha256=yuG0y1Sm_cwwYcKvCOQ80V4tHb15L_ZWICIlwlmw0fY,22274
310
+ datalab/gui/roieditor.py,sha256=g2_8SyIJ5i8u8o_p-_h-vyML10mA0N0TteAScZMn-6c,22276
310
311
  datalab/gui/roigrideditor.py,sha256=Ce4g2E65S0dROaYZSyOJekgeKDReNS8MCwt_WHLWH3k,7984
311
312
  datalab/gui/settings.py,sha256=lf5NMn1StgrmlriAqcWhD0dobWSPbrzFx7SoNt81je0,22561
312
313
  datalab/gui/tour.py,sha256=PzT9hIFohrLovQ7yCBEqPhGYYFLNIDkh053nTmj2y1U,32399
313
314
  datalab/gui/panel/__init__.py,sha256=ZVgYukxTkP763BoNUWEIoHjrt_GnEiAsGexXTu4QiJQ,1452
314
- datalab/gui/panel/base.py,sha256=neOFWA5OArLCqf567GNbPj5DuFV-RsR06z2jgFu5vMY,134542
315
+ datalab/gui/panel/base.py,sha256=ON__SfFVN_1kJDd9_jgCpZQjzTzDcX0VYfxxMEJJUSg,138104
315
316
  datalab/gui/panel/image.py,sha256=8SWLS24RdPKzO-tCoc-8PDFb2PQbjNcVb_heItRpZjI,5696
316
- datalab/gui/panel/macro.py,sha256=gbqvaLa-IsqCV1g6WwTH57z89K7uratO0LPHqGpRKgs,20491
317
+ datalab/gui/panel/macro.py,sha256=0PsAPwQQPdjXk4VxtfLhNqdG_YFcwwwbBbhUxhNw_9o,21773
317
318
  datalab/gui/panel/signal.py,sha256=LRsF-py96xvWa-XKJW9Qpay-4O3F_zLs2UFydrjCnYw,5762
318
319
  datalab/gui/processor/__init__.py,sha256=6-Boho-VTI8I5s1UWaauT17gW8fp_UK2DBWqvMZ4qF8,3132
319
- datalab/gui/processor/base.py,sha256=Gk3VQeN4_-T1cw1qSzQCcvlI6j9nu-fdwzuAcnxki_U,100575
320
+ datalab/gui/processor/base.py,sha256=aqSS90lcgSdh-ycl4Gy5cnWgU2ZdoIQfZq5YnAHwSl8,102774
320
321
  datalab/gui/processor/catcher.py,sha256=g8_cEA7gOyej-vwjmUksgpcBbFlRZwHsGM9aYTyL6Ys,2667
321
- datalab/gui/processor/image.py,sha256=PMdZ9KS3rJTHU7qZ6KB8hgKVykO3U2jex5Yzz2vOKIg,48062
322
- datalab/gui/processor/signal.py,sha256=Y_yCNUjw4_86tAvBHcKceTMcu5t9Csm1v2Cfpzi5l90,28627
322
+ datalab/gui/processor/image.py,sha256=l4AQwQCyFy4s7Eavt_N7VaUKol0uw4l-3r466uzZEi4,48254
323
+ datalab/gui/processor/signal.py,sha256=Dyj6fHSXOqY_tCNmeubz5lyqOtyYa4pSSnXkXdBUbXA,29055
323
324
  datalab/h5/__init__.py,sha256=N55pl08bbGH-QCTqoA-8BCe5Hgj-N1QxvvCd2ZvGQ9Q,301
324
325
  datalab/h5/common.py,sha256=zfXNZT4ZnTlLCe5Hz2vv44FXSKJqhpidUiRqY8CYCLI,10268
325
326
  datalab/h5/generic.py,sha256=s51etvOl2acgkvqhhq_o_VxldmPCj3TsK6_N_2U4l8E,20737
326
327
  datalab/h5/native.py,sha256=xXQ7R5gT3iGQBPolpWovB8texJrPItJ4RUo01VDxPdA,991
327
328
  datalab/h5/utils.py,sha256=PWwNKwsuEgL1Ofx638omTDwhCYcgA-mkl38vZAzjhiE,2858
329
+ datalab/locale/fr/LC_MESSAGES/datalab.mo,sha256=hTQJ_JoLBQYd0wEh0J6HIBYG4dht66eWsTXMqsREMWk,98947
330
+ datalab/locale/fr/LC_MESSAGES/datalab.po,sha256=k1gfpf2T-1yzFY3-0WRC9qwTZPB0XDMo6wpM0a2VoO0,105990
328
331
  datalab/plugins/_readme_.txt,sha256=9SOgCDB34veOgCmYrA3ZTzYbv5ywraJGkgNislN9ogg,278
329
332
  datalab/plugins/datalab_imageformats.py,sha256=0_GxhtWLLE3Lii-ej2pkehsJpi7NBBGj1gj8GtPSXTA,5788
330
333
  datalab/plugins/datalab_testdata.py,sha256=IiRuPrz6iWxm8UL44hCtccEutlX-420KfB1lLko7IYg,7697
@@ -356,7 +359,8 @@ datalab/tests/features/common/__init__.py,sha256=_6Yl-eMBve0mGQA-aiFg4qvQ7GUCV5e
356
359
  datalab/tests/features/common/add_metadata_app_test.py,sha256=0OYyXZpIkidmqb4dbPMjuWpcdt4At2O0srVriVqL_jA,4545
357
360
  datalab/tests/features/common/add_metadata_unit_test.py,sha256=ypbwZfhEcW6WrEy6BhG3gdlv8AWRerTkFMMn-U3rMcQ,9269
358
361
  datalab/tests/features/common/annotations_management_unit_test.py,sha256=Sjoywcz9sdzqlNw_aqLT__HQDhwew1oL1jPUC_QQDD4,5379
359
- datalab/tests/features/common/auto_analysis_recompute_unit_test.py,sha256=0CSi6kDz130sNN_iqxeHb2S3Z4G9YPewP-8G6fYYuCk,10666
362
+ datalab/tests/features/common/auto_analysis_recompute_unit_test.py,sha256=2jQ-OxeKySU4qoe2estv4V5FxYtp47qwWjCXZKlOdI4,14258
363
+ datalab/tests/features/common/coordutils_unit_test.py,sha256=w_od5ing5Xh3l3MSsZK5QoqcOeeG5smnfl7my_bVO0c,6704
360
364
  datalab/tests/features/common/createobject_unit_test.py,sha256=2_LnW_RF0nhKDtmwBQn6tl7vM_1CFiJN7urDNFFUJFU,1631
361
365
  datalab/tests/features/common/geometry_results_app_test.py,sha256=pB9Hj6IvNl8HUEuTAyeW5LHX0pVymxFnGUWhdEyJFz8,5192
362
366
  datalab/tests/features/common/interactive_processing_test.py,sha256=lNWRw9oHGu5U5Rnk5BCKJVXJdBii2fWLHmG5sumVLWA,46488
@@ -371,10 +375,10 @@ datalab/tests/features/common/multiple_table_results_unit_test.py,sha256=HBuT6Sy
371
375
  datalab/tests/features/common/operation_modes_app_test.py,sha256=Gozh-e3rS-MqWGaDl2hXxeJoJmSWfwiDNmIHtpcJTQY,16403
372
376
  datalab/tests/features/common/plot_results_app_test.py,sha256=YnyKgwszRg7XTUxjUwHERHOtwUxXAxQJpNKlcEptgKs,11601
373
377
  datalab/tests/features/common/reorder_app_test.py,sha256=pIYbvBNjhWe-Eu6_EMJzczphkptQuUNbgrTmZU71PVY,3059
374
- datalab/tests/features/common/result_deletion_unit_test.py,sha256=4D6NToe_kAQ2gOlQBROj-MgFimrl31n6gijRV00nnS8,3593
378
+ datalab/tests/features/common/result_deletion_unit_test.py,sha256=NRTuFlvhrLn-AqOm15G-SbN3r04Ep_xYHAJrNibzGGc,9029
375
379
  datalab/tests/features/common/result_merged_label_unit_test.py,sha256=VUf4vfrUbgtdOyU5x6lj3-xg4vklYHdU5q-3DCpRVTg,6387
376
380
  datalab/tests/features/common/result_shape_settings_unit_test.py,sha256=NceT85JMqfVUScZ9p8-D_E6L9ct51V2Ev6v5zpajpPg,9406
377
- datalab/tests/features/common/roi_plotitem_unit_test.py,sha256=bEg0k-ahg-tY7otjTjHvef_mehVYJd3ws026VKxK9YE,2454
381
+ datalab/tests/features/common/roi_plotitem_unit_test.py,sha256=wQHycjeNL3V01ldQn4NQvtsqkAKHXd1G6yP1d2GRESU,2584
378
382
  datalab/tests/features/common/roieditor_unit_test.py,sha256=1jnQTv_tPiFLM4EQutAENFBatZMv9HIo1TjEVaINwWc,4272
379
383
  datalab/tests/features/common/save_to_dir_app_test.py,sha256=g-73KBzAehTW1iJ4cmI_rXqYlTV8vDXnx9dVcsvHkhs,6345
380
384
  datalab/tests/features/common/save_to_dir_unit_test.py,sha256=a_IAnJ-f18rxTK8JVxfUHdReluUukt1VXuWKhrj3XNQ,17324
@@ -382,6 +386,7 @@ datalab/tests/features/common/stat_app_test.py,sha256=i5zGgu3yTjGCidmQ5TqA0xnqjv
382
386
  datalab/tests/features/common/stats_tools_unit_test.py,sha256=msE_WL8W_WBzjJRCYBHxjTptn-9AXxGMOP5l0rlL-zQ,2640
383
387
  datalab/tests/features/common/table_results_app_test.py,sha256=QaZ120LLH2_Q0JHQ0uDkdM1KcQcYri6uk5hpDTJKPHo,1649
384
388
  datalab/tests/features/common/textimport_unit_test.py,sha256=kI6nmd5OGEgw_FDQhf2mpSpljmT_Owzv3zFMfAF2ez8,5509
389
+ datalab/tests/features/common/update_tree_robustness_test.py,sha256=20UDQcu0Qh54I6ojyCSVVhqu03em-BKcNb8byEjUL8M,2480
385
390
  datalab/tests/features/common/uuid_preservation_test.py,sha256=oWT6rWYST23-7PYOsYnp9XXjOT3TSK6qGQkl1Qb4wjk,12563
386
391
  datalab/tests/features/common/worker_unit_test.py,sha256=xJsiyzUGL8RKaetO1Fco6mIAmo2K4M-H5-gH8ergSeQ,15242
387
392
  datalab/tests/features/control/__init__.py,sha256=_6Yl-eMBve0mGQA-aiFg4qvQ7GUCV5eGvIcoRf4mEPw,3
@@ -389,7 +394,7 @@ datalab/tests/features/control/connect_dialog.py,sha256=tfkgrsJMj-WGFj7WUapEDR6R
389
394
  datalab/tests/features/control/embedded1_unit_test.py,sha256=2fEOlqxjMGG4yrnUjDQVyZcvGpmmE9KXdpXhsml-fiY,10606
390
395
  datalab/tests/features/control/embedded2_unit_test.py,sha256=X0xDDy_o3XTprmQdDWVyLTku9TMUBCaDOMLpQanIcJM,1563
391
396
  datalab/tests/features/control/remoteclient_app_test.py,sha256=bsQFcBDxzDNJam2-T91YoYWYcDK-pO8YjDlARzRF984,8028
392
- datalab/tests/features/control/remoteclient_unit.py,sha256=BaGoA-A4yIVGA2ogKZK7i6EORWhemar9oCiwhPVJyXU,2559
397
+ datalab/tests/features/control/remoteclient_unit.py,sha256=lAu_UFUbKLo7uha8npqqxoz8hbBad5_mzHuOTvf_Vxs,3048
393
398
  datalab/tests/features/control/simpleclient_unit_test.py,sha256=9p5mS02syo-xfPDN3nS26RJU-Ca8_LMppW0h47dVcIE,13130
394
399
  datalab/tests/features/hdf5/__init__.py,sha256=_6Yl-eMBve0mGQA-aiFg4qvQ7GUCV5eGvIcoRf4mEPw,3
395
400
  datalab/tests/features/hdf5/h5browser1_unit_test.py,sha256=vqWpa4fhLqTtmS82oP6WJG2OZLd-ZwyRA3PSV1fqTBA,958
@@ -397,6 +402,7 @@ datalab/tests/features/hdf5/h5browser2_unit.py,sha256=2TcNVXdEYG5l3XNrn0SHRurs-B
397
402
  datalab/tests/features/hdf5/h5browser_app_test.py,sha256=e1yAg6Io6M8UR8bpf0W7Bug9JVJ3R7YgJM6kNtRpnX0,2212
398
403
  datalab/tests/features/hdf5/h5import_app_test.py,sha256=uglmmb4OSQyjFkwoKZwRRXvFl2K6HOFeDysIOmX5_30,656
399
404
  datalab/tests/features/hdf5/h5importer_app_test.py,sha256=HOgdU5VVE8ndDikt-XaBqcP1Y1C5A6No-gC5s6bOXP8,1098
405
+ datalab/tests/features/hdf5/h5workspace_unit_test.py,sha256=k7-8Zg6HmBEiEaPTZiOnElPrajb5-x5y__0WRQ6xnB4,5040
400
406
  datalab/tests/features/image/__init__.py,sha256=_6Yl-eMBve0mGQA-aiFg4qvQ7GUCV5eGvIcoRf4mEPw,3
401
407
  datalab/tests/features/image/annotations_app_test.py,sha256=2k2unIBnwigjv0IGI6s1ZUhZo0YYsTi2DjVhf99Un5Y,811
402
408
  datalab/tests/features/image/annotations_unit_test.py,sha256=H3iRzuWw9YAySOndRSO__q3cHMPpQm2S-GBGHPkFjzY,3089
@@ -423,13 +429,14 @@ datalab/tests/features/image/profile_dialog_test.py,sha256=x2wWVlseQrEr3KE7o5HCR
423
429
  datalab/tests/features/image/roi_app_test.py,sha256=tIt731Xu0uCB13S_F_R167hUjs_bvZNk_nPupb0kNPY,3513
424
430
  datalab/tests/features/image/roi_circ_app_test.py,sha256=rD72vTeV7GH7y9PhAnN53fi8rqmfaj2L1aFRmekmx8I,2081
425
431
  datalab/tests/features/image/roi_manipulation_app_test.py,sha256=W-UJpRp0FJKQmgDo5AbReXEdYMXH6lFiDIhJ4qcmtxk,11040
426
- datalab/tests/features/image/roigrid_unit_test.py,sha256=0xQPIkT7Jp0RvU2JaaWeFNOsXIPeRLrKaOv40KrRJ0A,2040
432
+ datalab/tests/features/image/roigrid_unit_test.py,sha256=_GYuqKuV10aPDRs2fsdHf98ypscux4_b5QLD3Be1zJE,5222
427
433
  datalab/tests/features/image/side_by_side_app_test.py,sha256=x7C4873p6dGe9ck-O-uGA6BS0RwtZnpMM28SXP7KiKA,1540
428
434
  datalab/tests/features/macro/__init__.py,sha256=_6Yl-eMBve0mGQA-aiFg4qvQ7GUCV5eGvIcoRf4mEPw,3
429
435
  datalab/tests/features/macro/macro_app_test.py,sha256=BKT9usab_k8dLsfvanHfiv2I2vA4wiOqMDmzITDdY1g,804
430
- datalab/tests/features/macro/macroeditor_unit_test.py,sha256=y5u0_ZL-wuX_tj9SN8YH91L1RiKErp8lBPbs6uRsGFU,3314
436
+ datalab/tests/features/macro/macroeditor_unit_test.py,sha256=FVibXRX21ILYs8eJNMK10xKYt46jMNCkTm_ccC1JFXE,7873
431
437
  datalab/tests/features/signal/__init__.py,sha256=_6Yl-eMBve0mGQA-aiFg4qvQ7GUCV5eGvIcoRf4mEPw,3
432
438
  datalab/tests/features/signal/baseline_dialog_test.py,sha256=wYdWKEpXJ74DXbMeEjxOSCFIvh36QLXiDH0yP-Xjfg8,1804
439
+ datalab/tests/features/signal/custom_signal_bug_unit_test.py,sha256=8tyNX6pxp4ToTSV61OxgNBsUld5NBcBm6RWtQI6LTNg,3609
433
440
  datalab/tests/features/signal/deltax_dialog_unit_test.py,sha256=9I4-gIAUlkFRyiDr_6s1Se-2Zp1rv_Ix6wcQ137pKKw,1166
434
441
  datalab/tests/features/signal/fft1d_app_test.py,sha256=8560mrwMuq4wBF163VkrcdEjOSHGa7nT06oTPD3EQYA,730
435
442
  datalab/tests/features/signal/filter_app_test.py,sha256=iDaA7mOnti2xVMV80k0m7i948M0q_CmaO1mE8_swIKo,1663
@@ -475,20 +482,20 @@ datalab/widgets/filedialog.py,sha256=KP3gyvumoNdBC6zDzjsAHb_q6ET-VUcPwIhAU9cFuzY
475
482
  datalab/widgets/fileviewer.py,sha256=q9nGwaOXuWGDy8C61gbGt0WucQndDWD0tXqfCfDcAwk,2335
476
483
  datalab/widgets/fitdialog.py,sha256=G9223TxY7PuEfrVhfyqlpZ-ZEXI94lE9HCOW8oiNfto,25386
477
484
  datalab/widgets/h5browser.py,sha256=wI5ZBEmrCAjC7zL28Md_p4_7V0cgQiMwodERJ4ytZn8,35159
478
- datalab/widgets/imagebackground.py,sha256=1uOPhRXx6DsQzYbV_G5Sck6xs5imuaNL6hxKIcErGVE,4031
479
- datalab/widgets/instconfviewer.py,sha256=gqZ1cbxEgpBcv0JXW4hNXFSu79XQolljWUw-Vs5W1H8,6157
485
+ datalab/widgets/imagebackground.py,sha256=OStOjxF1O2vxPefd8qbCl3cG7XQZO-cS6vATUeaCGBM,4253
486
+ datalab/widgets/instconfviewer.py,sha256=OAzUe3hWid6sXIa3Am3J9baK6aKVysM3-mAOQUa320Q,6193
480
487
  datalab/widgets/logviewer.py,sha256=K3d1N5rgDowOBoCIEeyDNgrjfnByXeNWT9H_x0okfJU,2908
481
488
  datalab/widgets/signalbaseline.py,sha256=Zutrc4g2PPpFLw_Dgcubop6R46HdzIl91THF0302860,3395
482
- datalab/widgets/signalcursor.py,sha256=ydkpJEIeQTdjsPclKomVlAllbhjOWWIxwentyHFd67Y,8394
483
- datalab/widgets/signaldeltax.py,sha256=1zkDC59USF0lbB9XDt2UMXTTHPj-CwJr2MTsx6pji1w,5822
489
+ datalab/widgets/signalcursor.py,sha256=U75z0roxRXIabEyLiDDkf6EJg3aOH0hq9ZMmU0K9D-Y,8591
490
+ datalab/widgets/signaldeltax.py,sha256=oRt0VXS38fYAwOdg61GAgO165iM_Q-bwP1xnHXUFsEk,5936
484
491
  datalab/widgets/signalpeak.py,sha256=CrAmdGQW4LZNd6yppZsSW8NXRhFlq3-OGIdM3zrc0AI,6835
485
492
  datalab/widgets/status.py,sha256=LopY06Mom3RqvxGCdqKJUobH3-7OxCNz5YGeAY_EQHE,8036
486
493
  datalab/widgets/textimport.py,sha256=NqJH8JsqEoIvjZeebW4GZkCD4ubxBuDJih6RzFki1K0,27997
487
494
  datalab/widgets/warningerror.py,sha256=KiPagfry7-OJ7bHPw9r6RqhJm5e8SZfrjrC_DuNtVJw,8258
488
495
  datalab/widgets/wizard.py,sha256=KN7NYadQuxO921WK9q0NfWAlw66l4c8JF4yeOhcRaAo,9904
489
- datalab_platform-1.0.1.dist-info/licenses/LICENSE,sha256=iMgU90_yimtLdU_nI3rWUq2mDMCvdm_EOVliNKyNLXo,1565
490
- datalab_platform-1.0.1.dist-info/METADATA,sha256=UjIH5cE755oyvnCt7eZAtG_bm9HS3uLHcr4dyQRWqZI,6945
491
- datalab_platform-1.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
492
- datalab_platform-1.0.1.dist-info/entry_points.txt,sha256=9qI5xVtl8G_ivVnsIYV-v2rPZ98HVO1WF1Of78ZxZhg,122
493
- datalab_platform-1.0.1.dist-info/top_level.txt,sha256=sK3HGZNGMtLR-m29UNms9QgVzVqwSNCtmuR-_hmamdc,8
494
- datalab_platform-1.0.1.dist-info/RECORD,,
496
+ datalab_platform-1.0.3.dist-info/licenses/LICENSE,sha256=iMgU90_yimtLdU_nI3rWUq2mDMCvdm_EOVliNKyNLXo,1565
497
+ datalab_platform-1.0.3.dist-info/METADATA,sha256=p7mz8qAG1H3s_H1LYOkaOTHcPyyWPbQF6raNL95Chyw,6945
498
+ datalab_platform-1.0.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
499
+ datalab_platform-1.0.3.dist-info/entry_points.txt,sha256=9qI5xVtl8G_ivVnsIYV-v2rPZ98HVO1WF1Of78ZxZhg,122
500
+ datalab_platform-1.0.3.dist-info/top_level.txt,sha256=sK3HGZNGMtLR-m29UNms9QgVzVqwSNCtmuR-_hmamdc,8
501
+ datalab_platform-1.0.3.dist-info/RECORD,,