pymodaq 4.2.2__py3-none-any.whl → 4.2.4__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.

Potentially problematic release.


This version of pymodaq might be problematic. Click here for more details.

@@ -26,7 +26,7 @@ from pymodaq.control_modules.daq_move_ui import DAQ_Move_UI, ThreadCommand
26
26
  from pymodaq.control_modules.move_utility_classes import MoveCommand, DAQ_Move_base
27
27
  from pymodaq.control_modules.move_utility_classes import params as daq_move_params
28
28
  from pymodaq.utils import daq_utils as utils
29
- from pymodaq.utils.parameter import Parameter, utils as putils
29
+ from pymodaq.utils.parameter import utils as putils
30
30
  from pymodaq.utils.gui_utils import get_splash_sc
31
31
  from pymodaq.utils import config as config_mod
32
32
  from pymodaq.utils.exceptions import ActuatorError
@@ -34,6 +34,7 @@ from pymodaq.utils.messenger import deprecation_msg
34
34
  from pymodaq.utils.h5modules import module_saving
35
35
  from pymodaq.utils.data import DataRaw, DataToExport, DataFromPlugins, DataActuator
36
36
  from pymodaq.utils.h5modules.backends import Node
37
+ from pymodaq.utils.parameter import ioxml, Parameter
37
38
 
38
39
  from pymodaq.utils.leco.pymodaq_listener import MoveActorListener, LECOMoveCommands
39
40
 
@@ -596,6 +597,14 @@ class DAQ_Move(ParameterControlModule):
596
597
  self._send_to_tcpip = True
597
598
  self.command_hardware.emit(ThreadCommand('get_actuator_value', ))
598
599
 
600
+ elif status.command == 'set_info':
601
+ path_in_settings = status.attribute[0]
602
+ param_as_xml = status.attribute[1]
603
+ param_dict = ioxml.XML_string_to_parameter(param_as_xml)[0]
604
+ param_tmp = Parameter.create(**param_dict)
605
+ param = self.settings.child('move_settings', *path_in_settings[1:])
606
+ param.restoreState(param_tmp.saveState())
607
+
599
608
 
600
609
  class DAQ_Move_Hardware(QObject):
601
610
  """
@@ -187,9 +187,9 @@ class DAQ_Move_UI(ControlModuleUI):
187
187
  self.main_ui.layout().addWidget(self.toolbar, 0, 0, 1, 2)
188
188
  self.main_ui.layout().addWidget(self.move_toolbar, 1, 0, 1, 2)
189
189
 
190
- self.abs_value_sb = SpinBox()
190
+ self.abs_value_sb = SpinBox(step=0.1, dec=True)
191
191
  self.abs_value_sb.setStyleSheet("background-color : lightgreen; color: black")
192
- self.abs_value_sb_2 = SpinBox()
192
+ self.abs_value_sb_2 = SpinBox(step=0.1, dec=True)
193
193
  self.abs_value_sb_2.setStyleSheet("background-color : lightcoral; color: black")
194
194
  self.move_toolbar.addWidget(self.abs_value_sb)
195
195
  self.move_toolbar.addWidget(self.abs_value_sb_2)
@@ -213,7 +213,7 @@ class DAQ_Move_UI(ControlModuleUI):
213
213
  self.control_ui.layout().addWidget(LabelWithFont('Abs. Value'), 0, 0)
214
214
  self.find_home_pb = PushButtonIcon('home2', 'Find Home')
215
215
  self.control_ui.layout().addWidget(self.find_home_pb, 0, 1)
216
- self.abs_value_sb_bis = SpinBox()
216
+ self.abs_value_sb_bis = SpinBox(step=0.1, dec=True)
217
217
  self.control_ui.layout().addWidget(self.abs_value_sb_bis, 1, 0)
218
218
  self.move_abs_pb = PushButtonIcon('Move', 'Set Abs.',
219
219
  tip='Set the value of the actuator to the set absolute value')
@@ -222,7 +222,7 @@ class DAQ_Move_UI(ControlModuleUI):
222
222
  self.move_rel_plus_pb = PushButtonIcon('MoveUp', 'Set Rel. (+)')
223
223
  self.control_ui.layout().addWidget(self.move_rel_plus_pb, 2, 1)
224
224
 
225
- self.rel_value_sb = SpinBox()
225
+ self.rel_value_sb = SpinBox(step=0.1, dec=True)
226
226
  self.control_ui.layout().addWidget(self.rel_value_sb, 3, 0)
227
227
  self.move_rel_minus_pb = PushButtonIcon('MoveDown', 'Set Rel. (-)')
228
228
  self.control_ui.layout().addWidget(self.move_rel_minus_pb, 3, 1)
@@ -311,6 +311,7 @@ class DAQ_Move_UI(ControlModuleUI):
311
311
  self.actuators_combo.currentText()]))
312
312
 
313
313
  def emit_move_abs(self, spinbox):
314
+ spinbox.editingFinished.emit()
314
315
  self.command_sig.emit(ThreadCommand('move_abs', DataActuator(data=spinbox.value())))
315
316
 
316
317
  def emit_move_rel(self, sign):
@@ -1106,6 +1106,14 @@ class DAQ_Viewer(ParameterControlModule):
1106
1106
  elif status.command == LECOClientCommands.LECO_DISCONNECTED:
1107
1107
  self.settings.child('main_settings', 'leco', 'leco_connected').setValue(False)
1108
1108
 
1109
+ elif status.command == 'set_info':
1110
+ path_in_settings = status.attribute[0]
1111
+ param_as_xml = status.attribute[1]
1112
+ param_dict = ioxml.XML_string_to_parameter(param_as_xml)[0]
1113
+ param_tmp = Parameter.create(**param_dict)
1114
+ param = self.settings.child('detector_settings', *path_in_settings[1:])
1115
+ param.restoreState(param_tmp.saveState())
1116
+
1109
1117
  elif status.command == 'get_axis':
1110
1118
  raise DeprecationWarning('Do not use this, the axis are in the data objects')
1111
1119
  self.command_hardware.emit(
@@ -481,12 +481,6 @@ class ParameterControlModule(ParameterManager, ControlModule):
481
481
  elif status.command == 'Update_Status':
482
482
  self.thread_status(status)
483
483
 
484
- elif status.command == 'set_info':
485
- param_dict = ioxml.XML_string_to_parameter(status.attribute[1])[0]
486
- param_tmp = Parameter.create(**param_dict)
487
- param = self.settings.child('move_settings', *status.attribute[0][1:])
488
-
489
- param.restoreState(param_tmp.saveState())
490
484
  else:
491
485
  # not handled
492
486
  return status
pymodaq/dashboard.py CHANGED
@@ -229,7 +229,7 @@ class DashBoard(QObject):
229
229
  return self.bayesian_module
230
230
 
231
231
  def load_extension_from_name(self, name: str) -> dict:
232
- self.load_extensions_module(find_dict_in_list_from_key_val(extensions, 'name', name))
232
+ return self.load_extensions_module(find_dict_in_list_from_key_val(extensions, 'name', name))
233
233
 
234
234
  def load_extensions_module(self, ext: dict):
235
235
  """ Init and load an extension from a plugin package
@@ -255,7 +255,7 @@ class DashBoard(QObject):
255
255
  self.extension_windows[-1].setWindowTitle(ext['name'])
256
256
  module = import_module(f"{ext['pkg']}.extensions.{ext['module']}")
257
257
  klass = getattr(module, ext['class_name'])
258
- self.extensions[ext['class_name']] = klass(dockarea=area, dashboard=self)
258
+ self.extensions[ext['class_name']] = klass(area, dashboard=self)
259
259
  self.extension_windows[-1].show()
260
260
  return self.extensions[ext['class_name']]
261
261
 
@@ -1210,7 +1210,6 @@ class DashBoard(QObject):
1210
1210
  QtWidgets.QApplication.processEvents()
1211
1211
  self.settings.child('detectors', name).setValue(det.initialized_state)
1212
1212
 
1213
- Slot(bool)
1214
1213
  def stop_moves(self, overshoot):
1215
1214
  """
1216
1215
  Foreach module of the move module object list, stop motion.
@@ -96,7 +96,7 @@ if __name__ == '__main__':
96
96
  Ny = 200
97
97
  x = (np.linspace(0, Nx - 1, Nx) + 100) / 2
98
98
  y = (np.linspace(0, Ny - 1, Ny) - 10) * 2
99
- from pymodaq.utils.daq_utils import gauss2D
99
+ from pymodaq.utils.math_utils import gauss2D
100
100
 
101
101
  data_red = 3 * gauss2D(x, np.mean(x), (np.max(x)-np.min(x)) / 5, y, np.mean(y), (np.max(y)-np.min(y)) / 5, 1)
102
102
  data_red += np.random.random(data_red.shape)
pymodaq/resources/VERSION CHANGED
@@ -1 +1 @@
1
- version = '4.2.2'
1
+ version = '4.2.4'
@@ -35,14 +35,10 @@ message_status_persistence = 1000 # ms
35
35
  [user]
36
36
  name = "User name" # default name used as author in the hdf5 saving files
37
37
 
38
- [viewer]
39
- daq_type = 'DAQ0D' #either "DAQ0D", "DAQ1D", "DAQ2D", "DAQND"
40
- viewer_in_thread = true
41
- timeout = 10000 # default duration in ms to wait for data to be acquirred
42
- allow_settings_edition = false
43
38
 
44
39
  [plotting]
45
40
  backend = 'matplotlib' # either 'matplotlib' or 'qt' or any other custom backend
41
+ plot_colors = [[255, 255, 255], [255, 0, 0], [0, 255, 0], [0, 0, 255], [14, 207, 189], [207, 14, 166], [207, 204, 14]]
46
42
 
47
43
  [network]
48
44
  [network.logging]
@@ -69,19 +65,27 @@ default_preset_for_logger = "preset_default"
69
65
  default_preset_for_pid = "beam_steering_mock"
70
66
 
71
67
  [actuator]
72
- epsilon_default = 1
73
- polling_interval_ms = 100 # ms Careful when using TCP/IP connection as you can saturate the connection with too much polling
74
- polling_timeout_s = 20 # s
75
- refresh_timeout_ms = 500 # ms
76
- timeout = 10000 # default duration in ms to wait for data to be acquirred
68
+ epsilon_default = 1
69
+ polling_interval_ms = 100 # ms Careful when using TCP/IP connection as you can saturate the connection with too much polling
70
+ polling_timeout_s = 20 # s
71
+ refresh_timeout_ms = 500 # ms
72
+ timeout = 10000 # default duration in ms to wait for data to be acquirred
73
+ siprefix = true # tell if printing of current value use a SI prefix or not (µ, m, k, M...)
74
+ display_units = true # display units in the SpinBoxes
75
+
76
+ [viewer]
77
+ daq_type = 'DAQ0D' #either "DAQ0D", "DAQ1D", "DAQ2D", "DAQND"
78
+ viewer_in_thread = true
79
+ timeout = 10000 # default duration in ms to wait for data to be acquirred
80
+ allow_settings_edition = false
77
81
 
78
82
  [scan]
79
- scan_in_thread = true
80
- show_popups = true
81
- default = "Scan2D"
82
- Naverage = 1 # minimum is 1
83
- steps_limit = 1000 # the limit of the number of steps you can set in a given scan
84
- sort1D = true
83
+ scan_in_thread = true
84
+ show_popups = true
85
+ default = "Scan2D"
86
+ Naverage = 1 # minimum is 1
87
+ steps_limit = 1000 # the limit of the number of steps you can set in a given scan
88
+ sort1D = true
85
89
 
86
90
  [scan.timeflow]
87
91
  wait_time = 0
@@ -42,10 +42,54 @@ else:
42
42
 
43
43
  logger = logger_module.set_logger(logger_module.get_module_name(__file__))
44
44
 
45
- plot_colors = [(255, 255, 255), (255, 0, 0), (0, 255, 0), (0, 0, 255), (14, 207, 189), (207, 14, 166), (207, 204, 14)]
46
45
  config = Config()
47
46
 
48
47
 
48
+ class PlotColors:
49
+
50
+ def __init__(self, colors=config('plotting', 'plot_colors')[:]):
51
+
52
+ self._internal_counter = -1
53
+
54
+ self.check_colors(colors)
55
+ self._plot_colors = list(colors)
56
+
57
+ def __getitem__(self, item: int):
58
+ if not isinstance(item, int):
59
+ raise TypeError('getter should be an integer')
60
+ return tuple(self._plot_colors[item % len(self._plot_colors)])
61
+
62
+ def __len__(self):
63
+ return len(self._plot_colors)
64
+
65
+ def __iter__(self):
66
+ self._internal_counter = -1
67
+ return self
68
+
69
+ def __next__(self):
70
+ if self._internal_counter >= len(self) - 1:
71
+ raise StopIteration
72
+ self._internal_counter += 1
73
+ return self[self._internal_counter]
74
+
75
+ def check_colors(self, colors: IterableType):
76
+ if not isinstance(colors, Iterable):
77
+ raise TypeError('Colors should be a list of 3-tuple 8 bits integer (0-255)')
78
+ for color in colors:
79
+ self.check_color(color)
80
+
81
+ @staticmethod
82
+ def check_color(color: IterableType):
83
+ if not isinstance(color, Iterable) and len(color) != 3:
84
+ raise TypeError('Colors should be a list of 3-tuple 8 bits integer (0-255)')
85
+ for col_val in color:
86
+ if not (isinstance(col_val, int) and 0 <= col_val <= 255):
87
+ raise TypeError('Colors should be a list of 3-tuple 8 bits integer (0-255)')
88
+
89
+
90
+ plot_colors = PlotColors()
91
+
92
+
49
93
  def is_64bits():
50
94
  return sys.maxsize > 2**32
51
95
 
@@ -427,16 +427,19 @@ class DataSaverLoader(DataManagement):
427
427
  if not isinstance(data_node, CARRAY):
428
428
  return
429
429
  data_nodes = [data_node]
430
+ error_node = None
430
431
  try:
431
432
  error_node_index = self.get_index_from_node_name(data_node)
432
- error_node = self._error_saver.get_node_from_index(parent_node, error_node_index)
433
+ if error_node_index is not None:
434
+ error_node = self._error_saver.get_node_from_index(parent_node, error_node_index)
433
435
  except NodeError as e:
434
- error_node = None
436
+ pass
435
437
 
436
438
  if 'axis' in self.data_type.name:
437
439
  ndarrays = [squeeze(data_node.read()) for data_node in data_nodes]
438
440
  axes = [Axis(label=data_node.attrs['label'], units=data_node.attrs['units'],
439
441
  data=np.linspace(0, ndarrays[0].size-1, ndarrays[0].size-1))]
442
+ error_arrays = None
440
443
  else:
441
444
  ndarrays = self.get_data_arrays(data_node, with_bkg=with_bkg, load_all=load_all)
442
445
  axes = self.get_axes(parent_node)
@@ -467,7 +470,8 @@ class DataSaverLoader(DataManagement):
467
470
  errors=error_arrays,
468
471
  path=data_node.path,
469
472
  **extra_attributes)
470
- data.timestamp = data_node.attrs['timestamp']
473
+ if 'axis' not in self.data_type.name:
474
+ data.timestamp = data_node.attrs['timestamp']
471
475
  return data
472
476
 
473
477
 
@@ -278,7 +278,7 @@ def main():
278
278
  app = QtWidgets.QApplication(sys.argv)
279
279
  widget = QtWidgets.QWidget()
280
280
  prog = Viewer0D(widget, show_toolbar=False)
281
- from pymodaq.utils.daq_utils import gauss1D
281
+ from pymodaq.utils.math_utils import gauss1D
282
282
 
283
283
  x = np.linspace(0, 200, 201)
284
284
  y1 = gauss1D(x, 75, 25) + 0.1*np.random.rand(len(x))
@@ -672,7 +672,9 @@ def main():
672
672
 
673
673
  # x = np.sin(np.linspace(0,6*np.pi,201))
674
674
  # y = np.sin(np.linspace(0, 6*np.pi, 201)+np.pi/2)
675
- data = DataRaw('mydata', data=[y1, ydata_expodec, -ydata_expodec, -y1],
675
+ data = DataRaw('mydata', data=[y1, ydata_expodec, -ydata_expodec, -y1,
676
+ y1, ydata_expodec, -ydata_expodec, -y1,
677
+ y1, ydata_expodec, -ydata_expodec, -y1,],
676
678
  axes=[Axis('myaxis', 'units', data=x)])
677
679
 
678
680
  Form.show()
@@ -700,7 +702,7 @@ def main_unsorted():
700
702
  widget = QtWidgets.QWidget()
701
703
  prog = Viewer1D(widget)
702
704
 
703
- from pymodaq.utils.daq_utils import gauss1D
705
+ from pymodaq.utils.math_utils import gauss1D
704
706
 
705
707
  x = np.linspace(0, 200, 201)
706
708
  xaxis = np.concatenate((x, x[::-1]))
@@ -713,6 +715,7 @@ def main_unsorted():
713
715
 
714
716
  sys.exit(app.exec_())
715
717
 
718
+
716
719
  def main_random():
717
720
  app = QtWidgets.QApplication(sys.argv)
718
721
  widget = QtWidgets.QWidget()
@@ -733,6 +736,7 @@ def main_random():
733
736
  QtWidgets.QApplication.processEvents()
734
737
  sys.exit(app.exec_())
735
738
 
739
+
736
740
  def main_extra_scatter():
737
741
  app = QtWidgets.QApplication(sys.argv)
738
742
  widget = QtWidgets.QWidget()
@@ -761,6 +765,7 @@ def main_extra_scatter():
761
765
  QtWidgets.QApplication.processEvents()
762
766
  sys.exit(app.exec_())
763
767
 
768
+
764
769
  def main_errors():
765
770
  app = QtWidgets.QApplication(sys.argv)
766
771
  widget = QtWidgets.QWidget()
@@ -783,6 +788,7 @@ def main_errors():
783
788
  QtWidgets.QApplication.processEvents()
784
789
  sys.exit(app.exec_())
785
790
 
791
+
786
792
  def main_view1D():
787
793
  app = QtWidgets.QApplication(sys.argv)
788
794
  widget = QtWidgets.QWidget()
@@ -796,7 +802,7 @@ def main_nans():
796
802
  widget = QtWidgets.QWidget()
797
803
  prog = Viewer1D(widget)
798
804
 
799
- from pymodaq.utils.daq_utils import gauss1D
805
+ from pymodaq.utils.math_utils import gauss1D
800
806
 
801
807
  x = np.linspace(0, 200, 201)
802
808
  y = gauss1D(x, 75, 25)
@@ -812,9 +818,9 @@ def main_nans():
812
818
 
813
819
 
814
820
  if __name__ == '__main__': # pragma: no cover
815
- # main()
821
+ main()
816
822
  # main_random()
817
823
  #main_errors()
818
- main_extra_scatter()
824
+ #main_extra_scatter()
819
825
  #main_view1D()
820
826
  #main_nans()
@@ -17,7 +17,7 @@ from pymodaq.utils.data import DataCalculated
17
17
 
18
18
  logger = set_logger(get_module_name(__file__))
19
19
  IMAGE_TYPES = ['red', 'green', 'blue']
20
- COLOR_LIST = utils.plot_colors
20
+ COLOR_LIST = list(utils.plot_colors)
21
21
  COLORS_DICT = dict(red=(255, 0, 0), green=(0, 255, 0), blue=(0, 0, 255), spread=(128, 128, 128))
22
22
 
23
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymodaq
3
- Version: 4.2.2
3
+ Version: 4.2.4
4
4
  Summary: Modular Data Acquisition with Python
5
5
  Project-URL: Homepage, http://pymodaq.cnrs.fr
6
6
  Project-URL: Source, https://github.com/PyMoDAQ/PyMoDAQ
@@ -1,19 +1,19 @@
1
1
  pymodaq/__init__.py,sha256=OzwjVWbxpnESia6TdOYBQInMYYeG3angsHwXWgLedrQ,4240
2
- pymodaq/dashboard.py,sha256=4JK_I5M_KbGTyw18ws5cA9NwRersn7yAj_g6u2Ud4LA,64575
2
+ pymodaq/dashboard.py,sha256=qu-S3bYmiwOUsdiL5OFs2b7h82N3kYs4hLH3NLjkZ7Y,64558
3
3
  pymodaq/icon.ico,sha256=hOHHfNDENKphQvG1WDleSEYcHukneR2eRFJu8isIlD4,74359
4
4
  pymodaq/splash.png,sha256=ow8IECF3tPRUMA4tf2tMu1aRiMaxx91_Y2ckVxkrmF0,53114
5
5
  pymodaq/control_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- pymodaq/control_modules/daq_move.py,sha256=ygtVvhZHjfMYUmIASnpMppdESnEVg46PeYpuom1sn8o,34532
7
- pymodaq/control_modules/daq_move_ui.py,sha256=sviVOHASH4zjCIfhWzh42v35_n4JaUwUh-t5dFzQBo4,14530
8
- pymodaq/control_modules/daq_viewer.py,sha256=E9DDC8LaOZsxciEo05CTfBp8zXmc-_N017l00e836lc,57316
6
+ pymodaq/control_modules/daq_move.py,sha256=SOj8zsaN8xlAJzvxLao_f9Op0JhZ4eLJXH1GUAW8DnE,34977
7
+ pymodaq/control_modules/daq_move_ui.py,sha256=ZFV2iauEtbLDvAfjb4VgtfpM_Fa5VlCA9fC4zjl_INI,14641
8
+ pymodaq/control_modules/daq_viewer.py,sha256=iNN5iEsuTdxB8sxjL4FtrRth_Cj5rDHrTt32SpLg7oM,57723
9
9
  pymodaq/control_modules/daq_viewer_ui.py,sha256=FWP3jdIOR9vTgYqNaaodteGZ3dwgQ1GdWKrOpOAuSrs,15693
10
10
  pymodaq/control_modules/mocks.py,sha256=hh_xSWp9g1UV3NAQVD9Ft9tNWfTsSvKU0OU0trgzP2w,1956
11
11
  pymodaq/control_modules/move_utility_classes.py,sha256=8ePiQUQ7AEBnhn4CjWPjMmo10yLznGHF9-s28OzYWGg,33382
12
- pymodaq/control_modules/utils.py,sha256=hWRJ1k-apFSUWopZIefsE91dBa_DVI240uklXzYGDlY,20331
12
+ pymodaq/control_modules/utils.py,sha256=5YdSwq_lFJm7IalYWe_Hn1U4LUoUmo1gedvV9UguU0Y,20016
13
13
  pymodaq/control_modules/viewer_utility_classes.py,sha256=XHL0UOi9rfDezyePaiBhh4KiAH0qeogo3AipA9ei2O8,26509
14
14
  pymodaq/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  pymodaq/examples/custom_app.py,sha256=2wQR0hlPWjZrWK0abNF6ASv8iQyJqRn2CKnBa_nAgN4,10452
16
- pymodaq/examples/custom_viewer.py,sha256=IeLqiDkIIxLps5juaW1fVSNSzOKt5iceyzwV0DJTbnM,4813
16
+ pymodaq/examples/custom_viewer.py,sha256=nUj5n6l7DSyh-qaXboNBfXKa9mAiXrHSiOcuFL1ayRE,4814
17
17
  pymodaq/examples/function_plotter.py,sha256=T-VT0Rd3jHP9GcR2h6Nao6lwZE06P8zWUbOlz8b8Rxk,6104
18
18
  pymodaq/examples/nonlinearscanner.py,sha256=x0R2_FP0YnuOCCAmYRiAiZ1jfUdRxu5RqIYLyGQMZ0U,3790
19
19
  pymodaq/examples/parameter_ex.py,sha256=yuUjHfiZg6LjNN0QYxZH264AjZt5SikNQRTVnqVS8jY,8067
@@ -57,9 +57,9 @@ pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py,sha256=1u7hWDaiwsZ
57
57
  pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui,sha256=PyzbCWPMkh5oIYYteZczXyWMeHKW9EJmM1QlzXhnyTk,7037
58
58
  pymodaq/post_treatment/daq_measurement/daq_measurement_main.py,sha256=CAKwcWMOD86aXB8mbdxOK7e8nZRos5d59FzDtqK1QoY,17093
59
59
  pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat,sha256=e1tu2A67MS9fk3jhriF6saQgRxWIucIvNW92iWXFP6E,164
60
- pymodaq/resources/VERSION,sha256=jzOViljn39B2vYgUGg8dWFn_c3tT5r2Ze5rCzN3oRHk,18
60
+ pymodaq/resources/VERSION,sha256=aI8JEAtHYG_tODjWyXfZaIQL6ha47CAK62QzoSwdu10,18
61
61
  pymodaq/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- pymodaq/resources/config_template.toml,sha256=klU5XH_2DBkF8QLIS-ZBQZCKfhwnrxyQHoG2meCEmEA,2889
62
+ pymodaq/resources/config_template.toml,sha256=43C1gVgB5bxmRpXaW9ru5t1X48KCgIZvPe6Epqkl68c,3112
63
63
  pymodaq/resources/preset_default.xml,sha256=Dt8iWLwPPOPtcG00JCVP-mh-G7KC6B0YN8hd8RQdnNI,27256
64
64
  pymodaq/resources/setup_plugin.py,sha256=yab26FHPB-zsUZ6ZiKQ7Rm9H1ZhoZW8RQoW4wPK-T94,3130
65
65
  pymodaq/resources/triangulation_data.npy,sha256=Dzq6eE8f_i7Woloy1iUn6N1OfVdBZ4WnK4J4SCoqXso,9320
@@ -304,7 +304,7 @@ pymodaq/utils/calibration_camera.py,sha256=d3aAu0izXOdeLs-vyBaFfBuvyDGT3O-SreTuy
304
304
  pymodaq/utils/chrono_timer.py,sha256=rwX8apS8B-IKhA0Cp2H9tLz0BRN7G3Pg5ptozvd3MKM,7244
305
305
  pymodaq/utils/config.py,sha256=v0WoSscW0i-pFCrjCE9RVrfCH9Ef7mbqx3gmUp1xT8w,15883
306
306
  pymodaq/utils/conftests.py,sha256=3Ak8WEpa3EhAp73Yb1LLq8YFONhPqiL7gG9eSDIoTNc,58
307
- pymodaq/utils/daq_utils.py,sha256=SM09CcBjDzuiErICLaVflF9NfaaYEv20JaK7tati7YA,26586
307
+ pymodaq/utils/daq_utils.py,sha256=ys8LI0aB8W1h0pDyx-KQ8S2VIIuL5PEMAaRSntNW_eM,27896
308
308
  pymodaq/utils/data.py,sha256=XCk4oFWXvkIEloHSQruXvs27vHTnNJBZcpK8l6QYm9Y,105709
309
309
  pymodaq/utils/enums.py,sha256=wpRipioUJkKcEfoaY2NrDQ2WhGxZTZiZoJty5f2Ljpc,2236
310
310
  pymodaq/utils/exceptions.py,sha256=wLO6VlofzfwWkOOWMN2B-3NEWMfpgygyeEdakIx_rAs,668
@@ -340,7 +340,7 @@ pymodaq/utils/gui_utils/widgets/tree_toml.py,sha256=Csq1v1_sqdCEvrb4VCewfsMVMpu-
340
340
  pymodaq/utils/h5modules/__init__.py,sha256=x3_4ELvG9onTKEFgIt9xEGg_mA1bB07dvVbU9q0xQKw,104
341
341
  pymodaq/utils/h5modules/backends.py,sha256=i-3x_DtTbnYKqft9Y3V1PuinGRXZ9DVv0Mg9TNTA33Q,33269
342
342
  pymodaq/utils/h5modules/browsing.py,sha256=NQuLJHh7AsU1q3vH_Pmi_FUx3V1KR2PV7SPnWb47y7Y,23356
343
- pymodaq/utils/h5modules/data_saving.py,sha256=9wMnEZAjWvzAKrSw31ylhCQOdX9DT8hjuUciPlMs4tk,42103
343
+ pymodaq/utils/h5modules/data_saving.py,sha256=RP7cmrF77ELjzNnXJrfcFklKXD1jN0F36u9Wc08VgiU,42255
344
344
  pymodaq/utils/h5modules/exporter.py,sha256=iCfUjkuGjs3-ijcUkt38NMrjO8tI9wXShvwYHJIUU70,3670
345
345
  pymodaq/utils/h5modules/h5logging.py,sha256=UhRo9YvjU5Ujw_i5aPHXOgOdw_IszxmekOa7gYUY5AQ,2492
346
346
  pymodaq/utils/h5modules/module_saving.py,sha256=r9rzHQhePS78yRZd4Sb-4vccLGNY8n_ulB0qJb6HogA,13761
@@ -393,8 +393,8 @@ pymodaq/utils/plotting/widgets.py,sha256=aD0ebvQrJYNkkwdE43c1Judqxn9rohQ37zvt3fL
393
393
  pymodaq/utils/plotting/data_viewers/__init__.py,sha256=ve0IhcPpcK68xHxQ0CjcYt3d-X75WI7z3YONa45AS7U,248
394
394
  pymodaq/utils/plotting/data_viewers/base.py,sha256=DnIeYACFGUswBq0OKt9g1r3nsDPsoRW44wfYuQy1osU,9637
395
395
  pymodaq/utils/plotting/data_viewers/viewer.py,sha256=NjYzOdKE17BDhYJROfLkCU2vwiO1DpEsaQRMIfFyIJc,8541
396
- pymodaq/utils/plotting/data_viewers/viewer0D.py,sha256=jFYdz_JroGpKwDLUv6gpX3-GvRQK5Det8jev_X3ItZc,11608
397
- pymodaq/utils/plotting/data_viewers/viewer1D.py,sha256=IjU4u5ATZCqsvQMwyOQsuMZkfwpbmCmzBR39YIjZcyU,32083
396
+ pymodaq/utils/plotting/data_viewers/viewer0D.py,sha256=YgCNuqAW5NOURw2pqPWT4WHHaowXjySDWoYgY7lbl-s,11609
397
+ pymodaq/utils/plotting/data_viewers/viewer1D.py,sha256=7Iz0fDIgP_IpDt2QtB3Do8nONM0eZemcHSrv3XeJn_Q,32239
398
398
  pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py,sha256=u91tVhmi_WIlVa8areapb0xWu0NOr5pVRLMylY_in7g,7432
399
399
  pymodaq/utils/plotting/data_viewers/viewer2D.py,sha256=M0Fb3wJ18OSz57edENXZUtpA6auAgO1QczK25-ULlH8,46203
400
400
  pymodaq/utils/plotting/data_viewers/viewer2D_basic.py,sha256=aRLu8JVZZI8PH6Lxl8oITpHwUXaUY3PyLW6eHzkf76o,5588
@@ -410,7 +410,7 @@ pymodaq/utils/plotting/plotter/plotters/qt_plotters.py,sha256=E33lRZDUxSCWlpV-J9
410
410
  pymodaq/utils/plotting/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
411
  pymodaq/utils/plotting/utils/axes_viewer.py,sha256=sOfnqz4dyz46SjxO9rmYa7eXmRVq9fLejDawc1MEvKU,2945
412
412
  pymodaq/utils/plotting/utils/filter.py,sha256=-rS3nUHcbzDXT4l8RfR-iziiMfqwRx_75faXo6g38p4,23175
413
- pymodaq/utils/plotting/utils/lineout.py,sha256=botUZPLMuXXA8jhA_N2rsQ-w7jRtSAW6PBu7gPV1kcI,8067
413
+ pymodaq/utils/plotting/utils/lineout.py,sha256=1k3pzF4mXiLTWQ6WEiBYpgVykK-luSv2D8VT-tGrYHw,8073
414
414
  pymodaq/utils/plotting/utils/plot_utils.py,sha256=L7dIOjTlRjtoUEbX4_8d0HFPw45mP3jHkqp3oldShMY,19807
415
415
  pymodaq/utils/plotting/utils/signalND.py,sha256=pprtf7aOwb6235VVicJCojJJAkBk92X9GPvqgq4gveg,44892
416
416
  pymodaq/utils/scanner/__init__.py,sha256=LqY1QwGnJEgr8CcW8uLWzbWy55Nvkmjmww4nl7xMpYU,171
@@ -431,8 +431,8 @@ pymodaq/utils/tcp_ip/__init__.py,sha256=1e_EK0AgvdoLAD_CSGGEaITZdy6OWCO7ih9IAIp7
431
431
  pymodaq/utils/tcp_ip/mysocket.py,sha256=StAWj8dzHeMnbLj68Sel81uWFy-YkKVNRnVf7gXrESI,3452
432
432
  pymodaq/utils/tcp_ip/serializer.py,sha256=HJziYyR_duhGBt8QikmqET8OH1uI5OAFgQu4w4jCQt4,25776
433
433
  pymodaq/utils/tcp_ip/tcp_server_client.py,sha256=xIMTNgVW_rKK0yTi4FDNFLf85-Akb27Jz2LdrvOrP68,30660
434
- pymodaq-4.2.2.dist-info/METADATA,sha256=vurUwZiW6_RAkMXFPkY9dmeDFpRm--NjRBCaXR_RedA,7665
435
- pymodaq-4.2.2.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
436
- pymodaq-4.2.2.dist-info/entry_points.txt,sha256=RAzdYNjvUT28I2eiCKki_g2NzXq0woWxhev6lwzwRv8,348
437
- pymodaq-4.2.2.dist-info/licenses/LICENSE,sha256=VKOejxexXAe3XwfhAhcFGqeXQ12irxVHdeAojZwFEI8,1108
438
- pymodaq-4.2.2.dist-info/RECORD,,
434
+ pymodaq-4.2.4.dist-info/METADATA,sha256=FgT-LiVkmVOGlG0KfWT9nadYsF9KF3mvip4t7ZYXzIM,7665
435
+ pymodaq-4.2.4.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
436
+ pymodaq-4.2.4.dist-info/entry_points.txt,sha256=RAzdYNjvUT28I2eiCKki_g2NzXq0woWxhev6lwzwRv8,348
437
+ pymodaq-4.2.4.dist-info/licenses/LICENSE,sha256=VKOejxexXAe3XwfhAhcFGqeXQ12irxVHdeAojZwFEI8,1108
438
+ pymodaq-4.2.4.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.24.2
2
+ Generator: hatchling 1.25.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any