pymodaq 4.2.4__py3-none-any.whl → 5.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (399) hide show
  1. pymodaq/__init__.py +30 -23
  2. pymodaq/control_modules/daq_move.py +27 -14
  3. pymodaq/control_modules/daq_move_ui.py +28 -12
  4. pymodaq/control_modules/daq_viewer.py +38 -28
  5. pymodaq/control_modules/daq_viewer_ui.py +6 -6
  6. pymodaq/control_modules/mocks.py +1 -1
  7. pymodaq/control_modules/move_utility_classes.py +19 -10
  8. pymodaq/control_modules/utils.py +18 -12
  9. pymodaq/control_modules/viewer_utility_classes.py +13 -4
  10. pymodaq/dashboard.py +164 -115
  11. pymodaq/examples/custom_app.py +13 -16
  12. pymodaq/examples/custom_viewer.py +6 -6
  13. pymodaq/examples/function_plotter.py +13 -12
  14. pymodaq/examples/parameter_ex.py +50 -25
  15. pymodaq/examples/tcp_client.py +1 -1
  16. pymodaq/extensions/__init__.py +1 -1
  17. pymodaq/extensions/bayesian/bayesian_optimisation.py +15 -12
  18. pymodaq/extensions/bayesian/utils.py +10 -10
  19. pymodaq/extensions/console.py +10 -13
  20. pymodaq/extensions/{daq_logger.py → daq_logger/daq_logger.py} +36 -56
  21. pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger.py +16 -15
  22. pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger_models.py +2 -0
  23. pymodaq/{utils/h5modules → extensions/daq_logger}/h5logging.py +7 -8
  24. pymodaq/extensions/daq_scan.py +153 -247
  25. pymodaq/extensions/daq_scan_ui.py +11 -9
  26. pymodaq/extensions/h5browser.py +8 -8
  27. pymodaq/extensions/pid/__init__.py +6 -3
  28. pymodaq/extensions/pid/daq_move_PID.py +4 -2
  29. pymodaq/extensions/pid/pid_controller.py +15 -12
  30. pymodaq/extensions/pid/utils.py +10 -5
  31. pymodaq/extensions/utils.py +5 -3
  32. pymodaq/post_treatment/load_and_plot.py +10 -7
  33. pymodaq/resources/preset_default.xml +1 -1
  34. pymodaq/utils/array_manipulation.py +4 -384
  35. pymodaq/utils/calibration_camera.py +12 -9
  36. pymodaq/utils/chrono_timer.py +7 -5
  37. pymodaq/utils/config.py +3 -450
  38. pymodaq/utils/daq_utils.py +6 -708
  39. pymodaq/utils/data.py +9 -2774
  40. pymodaq/utils/exceptions.py +0 -4
  41. pymodaq/utils/gui_utils/__init__.py +8 -8
  42. pymodaq/utils/gui_utils/loader_utils.py +38 -0
  43. pymodaq/utils/gui_utils/utils.py +6 -138
  44. pymodaq/utils/h5modules/__init__.py +0 -4
  45. pymodaq/utils/h5modules/module_saving.py +15 -8
  46. pymodaq/utils/leco/__init__.py +2 -2
  47. pymodaq/utils/leco/daq_move_LECODirector.py +2 -2
  48. pymodaq/utils/leco/daq_xDviewer_LECODirector.py +2 -2
  49. pymodaq/utils/leco/director_utils.py +2 -2
  50. pymodaq/utils/leco/leco_director.py +3 -3
  51. pymodaq/utils/leco/pymodaq_listener.py +2 -2
  52. pymodaq/utils/leco/utils.py +1 -1
  53. pymodaq/utils/logger.py +4 -76
  54. pymodaq/utils/managers/batchscan_manager.py +16 -19
  55. pymodaq/utils/managers/modules_manager.py +10 -7
  56. pymodaq/utils/managers/overshoot_manager.py +3 -5
  57. pymodaq/utils/managers/preset_manager.py +37 -15
  58. pymodaq/utils/managers/preset_manager_utils.py +11 -9
  59. pymodaq/utils/managers/remote_manager.py +12 -10
  60. pymodaq/utils/math_utils.py +4 -572
  61. pymodaq/utils/parameter/__init__.py +4 -11
  62. pymodaq/utils/parameter/utils.py +4 -299
  63. pymodaq/utils/scanner/scan_config.py +1 -1
  64. pymodaq/utils/scanner/scan_factory.py +16 -12
  65. pymodaq/utils/{plotting → scanner}/scan_selector.py +19 -20
  66. pymodaq/utils/scanner/scanner.py +10 -8
  67. pymodaq/utils/scanner/scanners/_1d_scanners.py +8 -5
  68. pymodaq/utils/scanner/scanners/_2d_scanners.py +5 -5
  69. pymodaq/utils/scanner/scanners/sequential.py +8 -8
  70. pymodaq/utils/scanner/scanners/tabular.py +9 -9
  71. pymodaq/utils/scanner/utils.py +6 -4
  72. pymodaq/utils/svg/svg_viewer2D.py +3 -4
  73. pymodaq/utils/tcp_ip/serializer.py +64 -16
  74. pymodaq/utils/tcp_ip/tcp_server_client.py +10 -8
  75. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/METADATA +5 -3
  76. pymodaq-5.0.0.dist-info/RECORD +123 -0
  77. pymodaq/post_treatment/process_to_scalar.py +0 -263
  78. pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
  79. pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
  80. pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
  81. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
  82. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
  83. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
  84. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
  85. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
  86. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
  87. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
  88. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
  89. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
  90. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
  91. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
  92. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
  93. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
  94. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
  95. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
  96. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
  97. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
  98. pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
  99. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
  100. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
  101. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
  102. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
  103. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
  104. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
  105. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
  106. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
  107. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
  108. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
  109. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
  110. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
  111. pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
  112. pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
  113. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
  114. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
  115. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
  116. pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
  117. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
  118. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
  119. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
  120. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
  121. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
  122. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
  123. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
  124. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
  125. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
  126. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
  127. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
  128. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
  129. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
  130. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
  131. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
  132. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
  133. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
  134. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
  135. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
  136. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
  137. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
  138. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
  139. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
  140. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
  141. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
  142. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
  143. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
  144. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
  145. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
  146. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
  147. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
  148. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
  149. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
  150. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
  151. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
  152. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
  153. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
  154. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
  155. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
  156. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
  157. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
  158. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
  159. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
  160. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
  161. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
  162. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
  163. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
  164. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
  165. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
  166. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
  167. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
  168. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
  169. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
  170. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
  171. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
  172. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
  173. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
  174. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
  175. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
  176. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
  177. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
  178. pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
  179. pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
  180. pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
  181. pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
  182. pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
  183. pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
  184. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
  185. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
  186. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
  187. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
  188. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
  189. pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
  190. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
  191. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
  192. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
  193. pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
  194. pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
  195. pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
  196. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
  197. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
  198. pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
  199. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
  200. pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
  201. pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
  202. pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
  203. pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
  204. pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
  205. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
  206. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
  207. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
  208. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
  209. pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
  210. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
  211. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
  212. pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
  213. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
  214. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
  215. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
  216. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
  217. pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
  218. pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
  219. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
  220. pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
  221. pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
  222. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
  223. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
  224. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
  225. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
  226. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
  227. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
  228. pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
  229. pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
  230. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
  231. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
  232. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
  233. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
  234. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
  235. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
  236. pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
  237. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
  238. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
  239. pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
  240. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
  241. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
  242. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
  243. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
  244. pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
  245. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
  246. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
  247. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
  248. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
  249. pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
  250. pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
  251. pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
  252. pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
  253. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
  254. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
  255. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
  256. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
  257. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
  258. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
  259. pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
  260. pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
  261. pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
  262. pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
  263. pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
  264. pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
  265. pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
  266. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
  267. pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
  268. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
  269. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
  270. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
  271. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
  272. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
  273. pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
  274. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
  275. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
  276. pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
  277. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
  278. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
  279. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
  280. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
  281. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
  282. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
  283. pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
  284. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
  285. pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
  286. pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
  287. pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
  288. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
  289. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
  290. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
  291. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
  292. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
  293. pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
  294. pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
  295. pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
  296. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
  297. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
  298. pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
  299. pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
  300. pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
  301. pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
  302. pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
  303. pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
  304. pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
  305. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
  306. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
  307. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
  308. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -2
  309. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -234
  310. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -127150
  311. pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -142
  312. pymodaq/resources/VERSION +0 -1
  313. pymodaq/resources/config_template.toml +0 -94
  314. pymodaq/resources/triangulation_data.npy +0 -0
  315. pymodaq/utils/abstract/__init__.py +0 -48
  316. pymodaq/utils/db/__init__.py +0 -0
  317. pymodaq/utils/db/db_logger/__init__.py +0 -0
  318. pymodaq/utils/enums.py +0 -76
  319. pymodaq/utils/factory.py +0 -82
  320. pymodaq/utils/gui_utils/custom_app.py +0 -133
  321. pymodaq/utils/gui_utils/dock.py +0 -107
  322. pymodaq/utils/gui_utils/file_io.py +0 -93
  323. pymodaq/utils/gui_utils/layout.py +0 -34
  324. pymodaq/utils/gui_utils/list_picker.py +0 -38
  325. pymodaq/utils/gui_utils/widgets/__init__.py +0 -5
  326. pymodaq/utils/gui_utils/widgets/label.py +0 -24
  327. pymodaq/utils/gui_utils/widgets/lcd.py +0 -111
  328. pymodaq/utils/gui_utils/widgets/push.py +0 -149
  329. pymodaq/utils/gui_utils/widgets/qled.py +0 -62
  330. pymodaq/utils/gui_utils/widgets/spinbox.py +0 -24
  331. pymodaq/utils/gui_utils/widgets/table.py +0 -263
  332. pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -188
  333. pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -102
  334. pymodaq/utils/h5modules/backends.py +0 -1022
  335. pymodaq/utils/h5modules/browsing.py +0 -625
  336. pymodaq/utils/h5modules/data_saving.py +0 -1105
  337. pymodaq/utils/h5modules/exporter.py +0 -119
  338. pymodaq/utils/h5modules/exporters/__init__.py +0 -0
  339. pymodaq/utils/h5modules/exporters/base.py +0 -111
  340. pymodaq/utils/h5modules/exporters/flimj.py +0 -63
  341. pymodaq/utils/h5modules/exporters/hyperspy.py +0 -143
  342. pymodaq/utils/h5modules/saving.py +0 -866
  343. pymodaq/utils/h5modules/utils.py +0 -115
  344. pymodaq/utils/managers/action_manager.py +0 -489
  345. pymodaq/utils/managers/parameter_manager.py +0 -282
  346. pymodaq/utils/managers/roi_manager.py +0 -726
  347. pymodaq/utils/messenger.py +0 -66
  348. pymodaq/utils/parameter/ioxml.py +0 -542
  349. pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -38
  350. pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -31
  351. pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -126
  352. pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -143
  353. pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -265
  354. pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -44
  355. pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -150
  356. pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -18
  357. pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -175
  358. pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -145
  359. pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -135
  360. pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -149
  361. pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -142
  362. pymodaq/utils/plotting/__init__.py +0 -0
  363. pymodaq/utils/plotting/data_viewers/__init__.py +0 -10
  364. pymodaq/utils/plotting/data_viewers/base.py +0 -286
  365. pymodaq/utils/plotting/data_viewers/viewer.py +0 -274
  366. pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -298
  367. pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -826
  368. pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -231
  369. pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -1118
  370. pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -146
  371. pymodaq/utils/plotting/data_viewers/viewerND.py +0 -800
  372. pymodaq/utils/plotting/gant_chart.py +0 -123
  373. pymodaq/utils/plotting/image_viewer.py +0 -97
  374. pymodaq/utils/plotting/items/__init__.py +0 -0
  375. pymodaq/utils/plotting/items/axis_scaled.py +0 -93
  376. pymodaq/utils/plotting/items/crosshair.py +0 -94
  377. pymodaq/utils/plotting/items/image.py +0 -388
  378. pymodaq/utils/plotting/navigator.py +0 -353
  379. pymodaq/utils/plotting/plotter/plotter.py +0 -94
  380. pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
  381. pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -134
  382. pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -78
  383. pymodaq/utils/plotting/utils/__init__.py +0 -0
  384. pymodaq/utils/plotting/utils/axes_viewer.py +0 -88
  385. pymodaq/utils/plotting/utils/filter.py +0 -585
  386. pymodaq/utils/plotting/utils/lineout.py +0 -226
  387. pymodaq/utils/plotting/utils/plot_utils.py +0 -579
  388. pymodaq/utils/plotting/utils/signalND.py +0 -1347
  389. pymodaq/utils/plotting/widgets.py +0 -76
  390. pymodaq/utils/qvariant.py +0 -12
  391. pymodaq/utils/slicing.py +0 -63
  392. pymodaq/utils/units.py +0 -216
  393. pymodaq-4.2.4.dist-info/RECORD +0 -438
  394. /pymodaq/{post_treatment/daq_analysis → extensions/daq_logger}/__init__.py +0 -0
  395. /pymodaq/{utils/abstract/logger.py → extensions/daq_logger/abstract.py} +0 -0
  396. /pymodaq/{resources/QtDesigner_Ressources → extensions/daq_logger/db}/__init__.py +0 -0
  397. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/WHEEL +0 -0
  398. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/entry_points.txt +0 -0
  399. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,142 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <svg
3
- xmlns:dc="http://purl.org/dc/elements/1.1/"
4
- xmlns:cc="http://creativecommons.org/ns#"
5
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
- xmlns:svg="http://www.w3.org/2000/svg"
7
- xmlns="http://www.w3.org/2000/svg"
8
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
- sodipodi:docname="icons.svg"
11
- inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
12
- id="svg8"
13
- version="1.1"
14
- viewBox="0 0 210 297"
15
- height="297mm"
16
- width="210mm">
17
- <defs
18
- id="defs2" />
19
- <sodipodi:namedview
20
- inkscape:window-maximized="1"
21
- inkscape:window-y="-8"
22
- inkscape:window-x="1912"
23
- inkscape:window-height="1017"
24
- inkscape:window-width="1920"
25
- showgrid="false"
26
- inkscape:document-rotation="0"
27
- inkscape:current-layer="layer1"
28
- inkscape:document-units="mm"
29
- inkscape:cy="251.2671"
30
- inkscape:cx="161.985"
31
- inkscape:zoom="2.8"
32
- inkscape:pageshadow="2"
33
- inkscape:pageopacity="0.0"
34
- borderopacity="1.0"
35
- bordercolor="#666666"
36
- pagecolor="#ffffff"
37
- id="base" />
38
- <metadata
39
- id="metadata5">
40
- <rdf:RDF>
41
- <cc:Work
42
- rdf:about="">
43
- <dc:format>image/svg+xml</dc:format>
44
- <dc:type
45
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
46
- <dc:title></dc:title>
47
- </cc:Work>
48
- </rdf:RDF>
49
- </metadata>
50
- <g
51
- id="layer1"
52
- inkscape:groupmode="layer"
53
- inkscape:label="Calque 1">
54
- <rect
55
- inkscape:export-ydpi="300"
56
- inkscape:export-xdpi="300"
57
- y="18.174328"
58
- x="18.174328"
59
- height="10.958051"
60
- width="10.958051"
61
- id="rect833"
62
- style="fill:#ff1c00;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;paint-order:fill markers stroke;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" />
63
- <rect
64
- inkscape:export-ydpi="300"
65
- inkscape:export-xdpi="300"
66
- style="fill:#ff1c00;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
67
- id="rect833-2"
68
- width="10.958051"
69
- height="10.958051"
70
- x="22.851545"
71
- y="20.446119" />
72
- <rect
73
- inkscape:export-ydpi="300"
74
- inkscape:export-xdpi="300"
75
- style="fill:#ff1c00;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
76
- id="rect833-1"
77
- width="10.958051"
78
- height="10.958051"
79
- x="28.464205"
80
- y="22.317005" />
81
- <path
82
- inkscape:export-ydpi="300"
83
- inkscape:export-xdpi="300"
84
- inkscape:export-filename="C:\Users\weber\Labo\Programmes Python\PyMoDAQ_Git\pymodaq\src\pymodaq\resources\QtDesigner_Ressources\Icon_Library\run_all.png"
85
- transform="matrix(1.3430998,0,0,1,-6.6389431,1.2737737e-6)"
86
- inkscape:transform-center-x="-2.441257"
87
- d="m 19.34992,58.681279 0,-12.592905 10.905775,6.296453 z"
88
- inkscape:randomized="0"
89
- inkscape:rounded="0"
90
- inkscape:flatsided="true"
91
- sodipodi:arg2="3.1415927"
92
- sodipodi:arg1="2.0943951"
93
- sodipodi:r2="3.6352587"
94
- sodipodi:r1="7.2705169"
95
- sodipodi:cy="52.384827"
96
- sodipodi:cx="22.985178"
97
- sodipodi:sides="3"
98
- id="path856"
99
- style="fill:#16ff00;fill-opacity:1;stroke:#000000;stroke-width:0.862871;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
100
- sodipodi:type="star" />
101
- <path
102
- inkscape:export-ydpi="300"
103
- inkscape:export-xdpi="300"
104
- inkscape:export-filename="C:\Users\weber\Labo\Programmes Python\PyMoDAQ_Git\pymodaq\src\pymodaq\resources\QtDesigner_Ressources\Icon_Library\run_all.png"
105
- sodipodi:type="star"
106
- style="fill:#16ff00;fill-opacity:1;stroke:#000000;stroke-width:0.862871;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
107
- id="path856-6"
108
- sodipodi:sides="3"
109
- sodipodi:cx="22.985178"
110
- sodipodi:cy="52.384827"
111
- sodipodi:r1="7.2705169"
112
- sodipodi:r2="3.6352587"
113
- sodipodi:arg1="2.0943951"
114
- sodipodi:arg2="3.1415927"
115
- inkscape:flatsided="true"
116
- inkscape:rounded="0"
117
- inkscape:randomized="0"
118
- d="m 19.34992,58.681279 0,-12.592905 10.905775,6.296453 z"
119
- inkscape:transform-center-x="-2.441257"
120
- transform="matrix(1.3430998,0,0,1,-3.817297,2.8172591)" />
121
- <path
122
- inkscape:export-ydpi="300"
123
- inkscape:export-xdpi="300"
124
- inkscape:export-filename="C:\Users\weber\Labo\Programmes Python\PyMoDAQ_Git\pymodaq\src\pymodaq\resources\QtDesigner_Ressources\Icon_Library\run_all.png"
125
- sodipodi:type="star"
126
- style="fill:#16ff00;fill-opacity:1;stroke:#000000;stroke-width:0.862871;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
127
- id="path856-4"
128
- sodipodi:sides="3"
129
- sodipodi:cx="22.985178"
130
- sodipodi:cy="52.384827"
131
- sodipodi:r1="7.2705169"
132
- sodipodi:r2="3.6352587"
133
- sodipodi:arg1="2.0943951"
134
- sodipodi:arg2="3.1415927"
135
- inkscape:flatsided="true"
136
- inkscape:rounded="0"
137
- inkscape:randomized="0"
138
- d="m 19.34992,58.681279 0,-12.592905 10.905775,6.296453 z"
139
- inkscape:transform-center-x="-2.441257"
140
- transform="matrix(1.3430998,0,0,1,-0.99565079,5.6345168)" />
141
- </g>
142
- </svg>
pymodaq/resources/VERSION DELETED
@@ -1 +0,0 @@
1
- version = '4.2.4'
@@ -1,94 +0,0 @@
1
- #this is the configuration file of PyMoDAQ
2
- [style]
3
- darkstyle = true
4
- syntax_highlighting = 'github-dark'
5
- language = "English"
6
- country = "UnitedStates"
7
-
8
- [qtbackend]
9
- backends = [ "pyqt5", "pyqt6", "pyside2", "pyside6",]
10
- backend = "pyqt5"
11
-
12
-
13
- [data_saving]
14
- [data_saving.h5file]
15
- save_path = "C:\\Data" #base path where data are automatically saved
16
- compression_level = 5 # for hdf5 files between 0(min) and 9 (max)
17
-
18
- [data_saving.hsds] #hsds connection option (https://www.hdfgroup.org/solutions/highly-scalable-data-service-hsds/)
19
- #to save data in pymodaq using hpyd backend towards distant server or cloud (mimicking hdf5 files)
20
- root_url = "http://hsds.sebastienweber.fr"
21
- username = "pymodaq_user"
22
- pwd = "pymodaq"
23
-
24
- [data_saving.data_type]
25
- dynamic = 'float64' # choose from below. This will force the datatype to be saved to
26
- dynamics = ['uint8', 'int8', 'uint16', 'int16', 'uint32', 'int32', 'uint64', 'int64', 'float64']
27
-
28
-
29
- [general]
30
- debug_level = "INFO" #either "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
31
- debug_levels = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
32
- check_version = true # automatically check version at startup (or not if False)
33
- message_status_persistence = 1000 # ms
34
-
35
- [user]
36
- name = "User name" # default name used as author in the hdf5 saving files
37
-
38
-
39
- [plotting]
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]]
42
-
43
- [network]
44
- [network.logging]
45
- [network.logging.user]
46
- username = "pymodaq_user"
47
- pwd = "pymodaq"
48
-
49
- [network.logging.sql] #location of the postgresql database server and options where the DAQ_Logger will log data
50
- ip = "10.47.3.22"
51
- port = 5432
52
-
53
- [network.tcp-server]
54
- ip = "10.47.0.39"
55
- port = 6341
56
-
57
- [network.leco-server]
58
- run_coordinator_at_startup = false
59
- host = "localhost"
60
- port = 12300 # pyleco default Coordinator port
61
-
62
- [presets]
63
- default_preset_for_scan = "preset_default"
64
- default_preset_for_logger = "preset_default"
65
- default_preset_for_pid = "beam_steering_mock"
66
-
67
- [actuator]
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
81
-
82
- [scan]
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
89
-
90
- [scan.timeflow]
91
- wait_time = 0
92
- wait_time_between = 0
93
- timeout = 10000 # in millisecond
94
-
Binary file
@@ -1,48 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Created the 21/11/2022
4
-
5
- @author: Sebastien Weber
6
-
7
- Introduce some nice ABCMeta class allowing that a particular attribute has been declared when instantiating
8
- See https://stackoverflow.com/a/50381071/8090831
9
- """
10
-
11
- from abc import ABCMeta as NativeABCMeta
12
- from abc import abstractmethod
13
- from typing import cast, Any, Callable, TypeVar
14
-
15
-
16
- R = TypeVar('R')
17
-
18
-
19
- class DummyAttribute:
20
- pass
21
-
22
-
23
- def abstract_attribute(obj: Callable[[Any], R] = None) -> R:
24
- _obj = cast(Any, obj)
25
- if obj is None:
26
- _obj = DummyAttribute()
27
- _obj.__is_abstract_attribute__ = True
28
- return cast(R, _obj)
29
-
30
-
31
- class ABCMeta(NativeABCMeta):
32
-
33
- def __call__(cls, *args, **kwargs):
34
- instance = NativeABCMeta.__call__(cls, *args, **kwargs)
35
- abstract_attributes = {
36
- name
37
- for name in dir(instance)
38
- if getattr(getattr(instance, name), '__is_abstract_attribute__', False)
39
- }
40
- if abstract_attributes:
41
- raise NotImplementedError(
42
- "Can't instantiate abstract class {} with"
43
- " abstract attributes: {}".format(
44
- cls.__name__,
45
- ', '.join(abstract_attributes)
46
- )
47
- )
48
- return instance
File without changes
File without changes
pymodaq/utils/enums.py DELETED
@@ -1,76 +0,0 @@
1
- from enum import Enum
2
- from pymodaq.utils.math_utils import find_index
3
- from pymodaq.utils.math_utils import my_moment
4
- import numpy as np
5
- from scipy.optimize import curve_fit
6
- from typing import List, Union
7
-
8
-
9
- class BaseEnum(Enum):
10
- """Enum to be used within pymodaq with some utility methods"""
11
-
12
- @classmethod
13
- def names(cls) -> List[str]:
14
- """Returns all the names of the enum"""
15
- return list(cls.__members__.keys())
16
-
17
- @classmethod
18
- def values(cls) -> List[str]:
19
- """Returns all the names of the enum"""
20
- return [cls[name].value for name in cls.names()]
21
-
22
- @classmethod
23
- def to_dict(cls):
24
- """ Returns the enum in form of a dict with names os keys
25
-
26
- New in 4.0.2
27
- """
28
- return {name: cls[name].value for name in cls.names()}
29
-
30
- @classmethod
31
- def to_dict_value(cls):
32
- """ Returns the enum in form of a dict with values os keys
33
-
34
- New in 4.0.2
35
- """
36
- return {cls[name].value: name for name in cls.names()}
37
-
38
- def __eq__(self, other: Union[str, Enum]):
39
- """testing for equality using the enum name"""
40
- if isinstance(other, str):
41
- if other == self.name:
42
- return True
43
- return super().__eq__(other)
44
-
45
-
46
- def enum_checker(enum: BaseEnum, item: Union[BaseEnum, str]):
47
- """Check if the item parameter is a valid enum or at least one valid string name of the enum
48
-
49
- If a string, transforms it to a valid enum (case not important)
50
-
51
- Parameters
52
- ----------
53
- enum: BaseEnum class or one of its derivated class
54
-
55
- item: str or BaseEnum instance
56
-
57
- Returns
58
- -------
59
- BaseEnum class or one of its derivated class
60
- """
61
-
62
- if not isinstance(item, enum):
63
- if not isinstance(item, str):
64
- raise ValueError(f'{item} is an invalid {enum}. Should be a {enum} enum or '
65
- f'a string in {enum.names()}')
66
- for ind, name in enumerate(enum.names()):
67
- if item.lower() == name.lower():
68
- item = enum[name]
69
- break
70
- else:
71
- raise ValueError(f'{item} is an invalid {enum}. Should be a {enum} enum or '
72
- f'a string in {enum.names()}')
73
- return item
74
-
75
-
76
-
pymodaq/utils/factory.py DELETED
@@ -1,82 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Created the 04/11/2022
4
-
5
- @author: Sebastien Weber
6
- """
7
- from typing import Callable, Union
8
- from abc import ABCMeta, abstractmethod
9
-
10
- from pymodaq.utils.logger import set_logger, get_module_name
11
-
12
- logger = set_logger(get_module_name(__file__))
13
-
14
-
15
- class BuilderBase(ABCMeta):
16
- """Abstract class defining an object/service builder with a callable interface accepting some arguments
17
-
18
- See https://realpython.com/factory-method-python/ for some details
19
-
20
- See Also
21
- --------
22
- pymodaq.post_treatment.process_1d_to_scalar
23
- """
24
- @abstractmethod
25
- def __call__(self, *args, **kwargs):
26
- pass
27
-
28
-
29
- class ObjectFactory(metaclass=ABCMeta):
30
- """Generic ObjectFactory with a decorator register to add object builders to the factory with a
31
- unique key identifier
32
-
33
- See https://realpython.com/factory-method-python/ for some details
34
-
35
- Examples
36
- --------
37
- @ObjectFactory.register('custom')
38
- def my_custom_builder():
39
- pass
40
-
41
- See Also
42
- --------
43
- pymodaq.post_treatment.process_1d_to_scalar.Data1DProcessorFactory
44
- """
45
- _builders = {}
46
-
47
- @classmethod
48
- def register(cls, key: str) -> Callable:
49
- def inner_wrapper(wrapped_class: Union[BuilderBase, Callable]) -> Callable:
50
- if cls.__name__ not in cls._builders:
51
- cls._builders[cls.__name__] = {}
52
- if key not in cls._builders[cls.__name__]:
53
- cls._builders[cls.__name__][key] = wrapped_class
54
- else:
55
- logger.warning(f'The {cls.__name__}/{key} builder is already registered. Replacing it')
56
- return wrapped_class
57
- return inner_wrapper
58
-
59
- @property
60
- def builders(self):
61
- return self._builders
62
-
63
- def keys_function(self, do_sort=True):
64
- if do_sort:
65
- return self.keys
66
- else:
67
- return list(self.builders[self.__class__.__name__].keys())
68
-
69
- @property
70
- def keys(self):
71
- return sorted(list(self.builders[self.__class__.__name__].keys()))
72
-
73
- @classmethod
74
- def create(cls, key, **kwargs):
75
- builder = cls._builders[cls.__name__].get(key)
76
- if not builder:
77
- raise ValueError(key)
78
- return builder(**kwargs)
79
-
80
- @classmethod
81
- def get_class(cls, key):
82
- return cls._builders[cls.__name__].get(key)
@@ -1,133 +0,0 @@
1
- from qtpy.QtCore import QObject, QLocale
2
- from pymodaq.utils.gui_utils.dock import DockArea
3
- from pymodaq.utils.managers.action_manager import ActionManager
4
- from pymodaq.utils.managers.parameter_manager import ParameterManager
5
- from pyqtgraph.dockarea import DockArea
6
- from qtpy import QtCore, QtWidgets
7
- from typing import Union, TYPE_CHECKING
8
- from pymodaq.utils.managers.modules_manager import ModulesManager
9
-
10
- if TYPE_CHECKING:
11
- from pymodaq.dashboard import DashBoard
12
-
13
-
14
- class CustomApp(QObject, ActionManager, ParameterManager):
15
- """Base Class to ease the implementation of User Interfaces
16
-
17
- Inherits the MixIns ActionManager and ParameterManager classes. You have to subclass some methods and make
18
- concrete implementation of a given number of methods:
19
-
20
- * setup_actions: mandatory, see :class:`pymodaq.utils.managers.action_manager.ActionManager`
21
- * value_changed: non mandatory, see :class:`pymodaq.utils.managers.parameter_manager.ParameterManager`
22
- * child_added: non mandatory, see :class:`pymodaq.utils.managers.parameter_manager.ParameterManager`
23
- * param_deleted: non mandatory, see :class:`pymodaq.utils.managers.parameter_manager.ParameterManager`
24
- * setup_docks: mandatory
25
- * setup_menu: non mandatory
26
- * connect_things: mandatory
27
-
28
- Parameters
29
- ----------
30
- parent: DockArea or QtWidget
31
- dashboard: DashBoard, optional
32
-
33
- See Also
34
- --------
35
- :class:`pymodaq.utils.managers.action_manager.ActionManager`,
36
- :class:`pymodaq.utils.managers.parameter_manager.ParameterManager`,
37
- :class:`pymodaq.utils.managers.modules_manager.ModulesManager`,
38
- :class:`pymodaq.dashboard.DashBoard`
39
- """
40
-
41
- log_signal = QtCore.Signal(str)
42
- params = []
43
-
44
- def __init__(self, parent: Union[DockArea, QtWidgets.QWidget], dashboard: 'DashBoard'=None):
45
- QObject.__init__(self)
46
- ActionManager.__init__(self)
47
- ParameterManager.__init__(self)
48
- QLocale.setDefault(QLocale(QLocale.English, QLocale.UnitedStates))
49
-
50
- if not isinstance(parent, DockArea):
51
- if not isinstance(parent, QtWidgets.QWidget):
52
- raise Exception('no valid parent container, expected a DockArea or a least a QWidget')
53
-
54
- self.parent = parent
55
- if isinstance(parent, DockArea):
56
- self.dockarea: DockArea = parent
57
- self.mainwindow: QtWidgets.QMainWindow = parent.parent()
58
- else:
59
- self.dockarea: DockArea = None
60
- self.mainwindow: QtWidgets.QMainWindow = None
61
- self.dashboard = dashboard
62
-
63
- self.docks = dict([])
64
- self.statusbar = None
65
- self._toolbar = QtWidgets.QToolBar()
66
-
67
- if self.mainwindow is not None:
68
- self.mainwindow.addToolBar(self._toolbar)
69
- self.statusbar = self.mainwindow.statusBar()
70
-
71
- self.set_toolbar(self._toolbar)
72
-
73
- def setup_ui(self):
74
- self.setup_docks()
75
-
76
- self.setup_actions() # see ActionManager MixIn class
77
-
78
- self.setup_menu()
79
-
80
- self.connect_things()
81
-
82
- def setup_docks(self):
83
- """Mandatory method to be subclassed to setup the docks layout
84
-
85
- Examples
86
- --------
87
- >>>self.docks['ADock'] = gutils.Dock('ADock name')
88
- >>>self.dockarea.addDock(self.docks['ADock'])
89
- >>>self.docks['AnotherDock'] = gutils.Dock('AnotherDock name')
90
- >>>self.dockarea.addDock(self.docks['AnotherDock'''], 'bottom', self.docks['ADock'])
91
-
92
- See Also
93
- --------
94
- pyqtgraph.dockarea.Dock
95
- """
96
- raise NotImplementedError
97
-
98
- def setup_menu(self):
99
- """Non mandatory method to be subclassed in order to create a menubar
100
-
101
- create menu for actions contained into the self._actions, for instance:
102
-
103
- Examples
104
- --------
105
- >>>file_menu = self._menubar.addMenu('File')
106
- >>>self.affect_to('load', file_menu)
107
- >>>self.affect_to('save', file_menu)
108
-
109
- >>>file_menu.addSeparator()
110
- >>>self.affect_to('quit', file_menu)
111
-
112
- See Also
113
- --------
114
- pymodaq.utils.managers.action_manager.ActionManager
115
- """
116
- pass
117
-
118
- def connect_things(self):
119
- """Connect actions and/or other widgets signal to methods"""
120
- raise NotImplementedError
121
-
122
- @property
123
- def modules_manager(self) -> ModulesManager:
124
- """useful tool to interact with DAQ_Moves and DAQ_Viewers
125
-
126
- Will be available if a DashBoard has been set
127
-
128
- Returns
129
- -------
130
- ModulesManager
131
- """
132
- if self.dashboard is not None:
133
- return self.dashboard.modules_manager