pymodaq 4.2.3__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 +33 -16
  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 +166 -118
  11. pymodaq/examples/custom_app.py +13 -16
  12. pymodaq/examples/custom_viewer.py +7 -7
  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 -664
  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.3.dist-info → pymodaq-5.0.0.dist-info}/METADATA +5 -3
  76. pymodaq-5.0.0.dist-info/RECORD +123 -0
  77. {pymodaq-4.2.3.dist-info → pymodaq-5.0.0.dist-info}/WHEEL +1 -1
  78. pymodaq/post_treatment/process_to_scalar.py +0 -263
  79. pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
  80. pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
  81. pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
  82. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
  83. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
  84. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
  85. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
  86. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
  87. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
  88. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
  89. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
  90. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
  91. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
  92. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
  93. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
  94. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
  95. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
  96. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
  97. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
  98. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
  99. pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
  100. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
  101. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
  102. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
  103. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
  104. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
  105. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
  106. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
  107. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
  108. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
  109. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
  110. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
  111. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
  112. pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
  113. pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
  114. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
  115. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
  116. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
  117. pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
  118. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
  119. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
  120. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
  121. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
  122. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
  123. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
  124. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
  125. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
  126. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
  127. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
  128. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
  129. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
  130. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
  131. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
  132. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
  133. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
  134. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
  135. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
  136. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
  137. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
  138. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
  139. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
  140. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
  141. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
  142. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
  143. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
  144. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
  145. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
  146. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
  147. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
  148. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
  149. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
  150. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
  151. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
  152. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
  153. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
  154. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
  155. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
  156. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
  157. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
  158. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
  159. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
  160. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
  161. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
  162. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
  163. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
  164. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
  165. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
  166. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
  167. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
  168. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
  169. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
  170. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
  171. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
  172. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
  173. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
  174. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
  175. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
  176. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
  177. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
  178. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
  179. pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
  180. pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
  181. pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
  182. pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
  183. pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
  184. pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
  185. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
  186. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
  187. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
  188. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
  189. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
  190. pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
  191. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
  192. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
  193. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
  194. pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
  195. pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
  196. pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
  197. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
  198. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
  199. pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
  200. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
  201. pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
  202. pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
  203. pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
  204. pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
  205. pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
  206. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
  207. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
  208. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
  209. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
  210. pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
  211. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
  212. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
  213. pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
  214. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
  215. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
  216. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
  217. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
  218. pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
  219. pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
  220. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
  221. pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
  222. pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
  223. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
  224. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
  225. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
  226. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
  227. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
  228. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
  229. pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
  230. pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
  231. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
  232. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
  233. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
  234. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
  235. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
  236. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
  237. pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
  238. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
  239. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
  240. pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
  241. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
  242. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
  243. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
  244. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
  245. pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
  246. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
  247. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
  248. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
  249. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
  250. pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
  251. pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
  252. pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
  253. pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
  254. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
  255. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
  256. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
  257. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
  258. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
  259. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
  260. pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
  261. pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
  262. pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
  263. pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
  264. pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
  265. pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
  266. pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
  267. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
  268. pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
  269. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
  270. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
  271. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
  272. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
  273. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
  274. pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
  275. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
  276. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
  277. pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
  278. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
  279. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
  280. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
  281. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
  282. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
  283. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
  284. pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
  285. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
  286. pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
  287. pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
  288. pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
  289. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
  290. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
  291. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
  292. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
  293. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
  294. pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
  295. pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
  296. pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
  297. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
  298. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
  299. pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
  300. pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
  301. pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
  302. pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
  303. pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
  304. pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
  305. pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
  306. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
  307. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
  308. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
  309. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -2
  310. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -234
  311. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -127150
  312. pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -142
  313. pymodaq/resources/VERSION +0 -1
  314. pymodaq/resources/config_template.toml +0 -90
  315. pymodaq/resources/triangulation_data.npy +0 -0
  316. pymodaq/utils/abstract/__init__.py +0 -48
  317. pymodaq/utils/db/__init__.py +0 -0
  318. pymodaq/utils/db/db_logger/__init__.py +0 -0
  319. pymodaq/utils/enums.py +0 -76
  320. pymodaq/utils/factory.py +0 -82
  321. pymodaq/utils/gui_utils/custom_app.py +0 -133
  322. pymodaq/utils/gui_utils/dock.py +0 -107
  323. pymodaq/utils/gui_utils/file_io.py +0 -93
  324. pymodaq/utils/gui_utils/layout.py +0 -34
  325. pymodaq/utils/gui_utils/list_picker.py +0 -38
  326. pymodaq/utils/gui_utils/widgets/__init__.py +0 -5
  327. pymodaq/utils/gui_utils/widgets/label.py +0 -24
  328. pymodaq/utils/gui_utils/widgets/lcd.py +0 -111
  329. pymodaq/utils/gui_utils/widgets/push.py +0 -149
  330. pymodaq/utils/gui_utils/widgets/qled.py +0 -62
  331. pymodaq/utils/gui_utils/widgets/spinbox.py +0 -24
  332. pymodaq/utils/gui_utils/widgets/table.py +0 -263
  333. pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -188
  334. pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -102
  335. pymodaq/utils/h5modules/backends.py +0 -1022
  336. pymodaq/utils/h5modules/browsing.py +0 -625
  337. pymodaq/utils/h5modules/data_saving.py +0 -1101
  338. pymodaq/utils/h5modules/exporter.py +0 -119
  339. pymodaq/utils/h5modules/exporters/__init__.py +0 -0
  340. pymodaq/utils/h5modules/exporters/base.py +0 -111
  341. pymodaq/utils/h5modules/exporters/flimj.py +0 -63
  342. pymodaq/utils/h5modules/exporters/hyperspy.py +0 -143
  343. pymodaq/utils/h5modules/saving.py +0 -866
  344. pymodaq/utils/h5modules/utils.py +0 -115
  345. pymodaq/utils/managers/action_manager.py +0 -489
  346. pymodaq/utils/managers/parameter_manager.py +0 -282
  347. pymodaq/utils/managers/roi_manager.py +0 -726
  348. pymodaq/utils/messenger.py +0 -66
  349. pymodaq/utils/parameter/ioxml.py +0 -542
  350. pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -38
  351. pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -31
  352. pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -126
  353. pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -143
  354. pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -265
  355. pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -44
  356. pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -150
  357. pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -18
  358. pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -175
  359. pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -145
  360. pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -135
  361. pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -149
  362. pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -142
  363. pymodaq/utils/plotting/__init__.py +0 -0
  364. pymodaq/utils/plotting/data_viewers/__init__.py +0 -10
  365. pymodaq/utils/plotting/data_viewers/base.py +0 -286
  366. pymodaq/utils/plotting/data_viewers/viewer.py +0 -274
  367. pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -298
  368. pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -820
  369. pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -231
  370. pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -1118
  371. pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -146
  372. pymodaq/utils/plotting/data_viewers/viewerND.py +0 -800
  373. pymodaq/utils/plotting/gant_chart.py +0 -123
  374. pymodaq/utils/plotting/image_viewer.py +0 -97
  375. pymodaq/utils/plotting/items/__init__.py +0 -0
  376. pymodaq/utils/plotting/items/axis_scaled.py +0 -93
  377. pymodaq/utils/plotting/items/crosshair.py +0 -94
  378. pymodaq/utils/plotting/items/image.py +0 -388
  379. pymodaq/utils/plotting/navigator.py +0 -353
  380. pymodaq/utils/plotting/plotter/plotter.py +0 -94
  381. pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
  382. pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -134
  383. pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -78
  384. pymodaq/utils/plotting/utils/__init__.py +0 -0
  385. pymodaq/utils/plotting/utils/axes_viewer.py +0 -88
  386. pymodaq/utils/plotting/utils/filter.py +0 -585
  387. pymodaq/utils/plotting/utils/lineout.py +0 -226
  388. pymodaq/utils/plotting/utils/plot_utils.py +0 -579
  389. pymodaq/utils/plotting/utils/signalND.py +0 -1347
  390. pymodaq/utils/plotting/widgets.py +0 -76
  391. pymodaq/utils/qvariant.py +0 -12
  392. pymodaq/utils/slicing.py +0 -63
  393. pymodaq/utils/units.py +0 -216
  394. pymodaq-4.2.3.dist-info/RECORD +0 -438
  395. /pymodaq/{post_treatment/daq_analysis → extensions/daq_logger}/__init__.py +0 -0
  396. /pymodaq/{utils/abstract/logger.py → extensions/daq_logger/abstract.py} +0 -0
  397. /pymodaq/{resources/QtDesigner_Ressources → extensions/daq_logger/db}/__init__.py +0 -0
  398. {pymodaq-4.2.3.dist-info → pymodaq-5.0.0.dist-info}/entry_points.txt +0 -0
  399. {pymodaq-4.2.3.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.3'
@@ -1,90 +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
- [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
-
44
- [plotting]
45
- backend = 'matplotlib' # either 'matplotlib' or 'qt' or any other custom backend
46
-
47
- [network]
48
- [network.logging]
49
- [network.logging.user]
50
- username = "pymodaq_user"
51
- pwd = "pymodaq"
52
-
53
- [network.logging.sql] #location of the postgresql database server and options where the DAQ_Logger will log data
54
- ip = "10.47.3.22"
55
- port = 5432
56
-
57
- [network.tcp-server]
58
- ip = "10.47.0.39"
59
- port = 6341
60
-
61
- [network.leco-server]
62
- run_coordinator_at_startup = false
63
- host = "localhost"
64
- port = 12300 # pyleco default Coordinator port
65
-
66
- [presets]
67
- default_preset_for_scan = "preset_default"
68
- default_preset_for_logger = "preset_default"
69
- default_preset_for_pid = "beam_steering_mock"
70
-
71
- [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
77
-
78
- [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
85
-
86
- [scan.timeflow]
87
- wait_time = 0
88
- wait_time_between = 0
89
- timeout = 10000 # in millisecond
90
-
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
@@ -1,107 +0,0 @@
1
- import warnings
2
-
3
- from qtpy.QtCore import Signal, QObject
4
- from qtpy import QtGui, QtCore, QtWidgets
5
- from pyqtgraph.dockarea import Dock, DockArea, DockLabel
6
- from pyqtgraph.dockarea.DockArea import TempAreaWindow
7
- from pyqtgraph.widgets.VerticalLabel import VerticalLabel
8
-
9
-
10
- class Dock(Dock):
11
- dock_focused = Signal(str)
12
- def __init__(self, name, *args, fontSize='20px', **kwargs):
13
- kwargs['fontSize'] = fontSize
14
- super().__init__(name, *args, **kwargs)
15
-
16
- def removeWidgets(self):
17
- for widget in self.widgets:
18
- self.layout.removeWidget(widget)
19
- widget.close()
20
- self.widgets = []
21
-
22
- def setOrientation(self, o='auto', force=False):
23
- """
24
- Sets the orientation of the title bar for this Dock.
25
- Must be one of 'auto', 'horizontal', or 'vertical'.
26
- By default ('auto'), the orientation is determined
27
- based on the aspect ratio of the Dock.
28
- """
29
- if self.container() is not None: # patch here for when Dock is closed and when the QApplication
30
- # event loop is processed
31
- if o == 'auto' and self.autoOrient:
32
- if self.container().type() == 'tab':
33
- o = 'horizontal'
34
- elif self.width() > self.height() * 1.5:
35
- o = 'vertical'
36
- else:
37
- o = 'horizontal'
38
- if force or self.orientation != o:
39
- self.orientation = o
40
- self.label.setOrientation(o)
41
- self.updateStyle()
42
-
43
-
44
- class DockArea(DockArea, QObject):
45
- """
46
- Custom Dockarea class subclassing from the standard DockArea class and QObject so it can emit a signal when docks
47
- are moved around (one subclassed method: moveDock)
48
- See Also
49
- --------
50
- pyqtgraph.dockarea
51
- """
52
- dock_signal = Signal()
53
-
54
- def __init__(self, parent=None, temporary=False, home=None):
55
- super(DockArea, self).__init__(parent, temporary, home)
56
-
57
- def moveDock(self, dock, position, neighbor):
58
- """
59
- Move an existing Dock to a new location.
60
- """
61
- # Moving to the edge of a tabbed dock causes a drop outside the tab box
62
- if position in ['left', 'right', 'top',
63
- 'bottom'] and neighbor is not None and neighbor.container() is not None and neighbor.container().type() == 'tab':
64
- neighbor = neighbor.container()
65
- self.addDock(dock, position, neighbor)
66
- self.dock_signal.emit()
67
-
68
- def addTempArea(self):
69
- if self.home is None:
70
- area = DockArea(temporary=True, home=self)
71
- self.tempAreas.append(area)
72
- win = TempAreaWindow(area)
73
- area.win = win
74
- win.show()
75
- else:
76
- area = self.home.addTempArea()
77
- # print "added temp area", area, area.window()
78
- return area
79
-
80
-
81
- if __name__ == '__main__':
82
- import sys
83
- from pymodaq.utils.parameter import ParameterTree
84
- app = QtWidgets.QApplication(sys.argv)
85
- import qdarkstyle
86
- app.setStyleSheet(qdarkstyle.load_stylesheet(qdarkstyle.DarkPalette))
87
-
88
- labelv = DockLabel('mysuperlabel', fontSize='25px')
89
- docky = Dock('MysuperDockLogger', fontSize='30px')
90
- dockx = Dock('MysuperDockLoggerx', fontSize='30px')
91
- area = DockArea()
92
- area.addDock(docky)
93
- area.addDock(dockx)
94
- dockx.addWidget(ParameterTree())
95
- labelv.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop | QtCore.Qt.AlignmentFlag.AlignHCenter)
96
- f = labelv.font()
97
- f.setPixelSize(25)
98
- labelv.setFont(f)
99
- docky.label.setFont(f)
100
- labelv.show()
101
- area.show()
102
- QtWidgets.QApplication.processEvents()
103
- print(f'labelv size hint: {labelv.sizeHint()}')
104
- print(f'labelv size: {labelv.size()}')
105
- print(f'labelv margins: {labelv.contentsMargins().top()}, {labelv.contentsMargins().bottom()}')
106
-
107
- sys.exit(app.exec())