tomwer 1.1.1__py3-none-any.whl → 1.2.0a0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. orangecontrib/tomwer/__init__.py +1 -0
  2. orangecontrib/tomwer/orange/managedprocess.py +6 -4
  3. orangecontrib/tomwer/state_summary.py +3 -2
  4. orangecontrib/tomwer/widgets/__init__.py +2 -2
  5. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +9 -7
  6. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +6 -5
  7. orangecontrib/tomwer/widgets/control/AdvancementOW.py +2 -1
  8. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +235 -0
  9. orangecontrib/tomwer/widgets/control/DataListOW.py +7 -5
  10. orangecontrib/tomwer/widgets/control/DataListenerOW.py +13 -14
  11. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +8 -6
  12. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +9 -9
  13. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +7 -8
  14. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +25 -17
  15. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +8 -8
  16. orangecontrib/tomwer/widgets/control/FilterOW.py +9 -8
  17. orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -4
  18. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +13 -14
  19. orangecontrib/tomwer/widgets/control/NotifierOW.py +3 -4
  20. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +7 -5
  21. orangecontrib/tomwer/widgets/control/TimerOW.py +6 -5
  22. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +5 -3
  23. orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -6
  24. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +10 -9
  25. orangecontrib/tomwer/widgets/control/icons/datadiscover.png +0 -0
  26. orangecontrib/tomwer/widgets/control/icons/datadiscover.svg +137 -0
  27. orangecontrib/tomwer/widgets/control/icons/nxtomomill.png +0 -0
  28. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +5 -8
  29. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +13 -15
  30. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +3 -2
  31. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +10 -7
  32. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +8 -5
  33. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -2
  34. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +6 -3
  35. orangecontrib/tomwer/widgets/edit/test/test_dark_flat_patch.py +8 -6
  36. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py +3 -1
  37. orangecontrib/tomwer/widgets/edit/test/test_image_key_upgrader.py +3 -1
  38. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +3 -1
  39. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +11 -11
  40. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +22 -27
  41. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +13 -11
  42. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +11 -9
  43. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +16 -14
  44. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +27 -32
  45. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +27 -34
  46. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +23 -25
  47. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +16 -18
  48. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +9 -7
  49. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.png +0 -0
  50. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.svg +8 -11
  51. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +8 -8
  52. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +6 -4
  53. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +4 -3
  54. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +4 -3
  55. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +6 -4
  56. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +8 -6
  57. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +6 -3
  58. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +7 -5
  59. orangecontrib/tomwer/widgets/visualization/VolumeViewerOW.py +5 -4
  60. tomwer/__init__.py +1 -1
  61. tomwer/__main__.py +2 -1
  62. tomwer/app/axis.py +18 -14
  63. tomwer/app/canvas.py +7 -5
  64. tomwer/app/canvas_launcher/config.py +8 -6
  65. tomwer/app/canvas_launcher/environ.py +1 -2
  66. tomwer/app/canvas_launcher/mainwindow.py +23 -22
  67. tomwer/app/canvas_launcher/splash.py +1 -0
  68. tomwer/app/canvas_launcher/widgetsscheme.py +3 -3
  69. tomwer/app/darkref.py +7 -6
  70. tomwer/app/darkrefpatch.py +8 -6
  71. tomwer/app/diffframe.py +6 -4
  72. tomwer/app/imagekeyeditor.py +10 -10
  73. tomwer/app/imagekeyupgrader.py +8 -6
  74. tomwer/app/intensitynormalization.py +8 -8
  75. tomwer/app/lamino.py +5 -3
  76. tomwer/app/nabuapp.py +8 -6
  77. tomwer/app/nxtomoeditor.py +6 -5
  78. tomwer/app/radiostack.py +8 -6
  79. tomwer/app/rsync.py +3 -3
  80. tomwer/app/saaxis.py +22 -23
  81. tomwer/app/sadeltabeta.py +21 -21
  82. tomwer/app/samplemoved.py +8 -6
  83. tomwer/app/scanviewer.py +7 -6
  84. tomwer/app/sinogramviewer.py +8 -7
  85. tomwer/app/slicestack.py +8 -6
  86. tomwer/app/stopdatalistener.py +2 -1
  87. tomwer/core/futureobject.py +15 -6
  88. tomwer/core/log/logger.py +4 -3
  89. tomwer/core/log/processlog.py +0 -1
  90. tomwer/core/process/conditions/filters.py +3 -3
  91. tomwer/core/process/control/datadiscovery.py +7 -0
  92. tomwer/core/process/control/datalistener/datalistener.py +22 -21
  93. tomwer/core/process/control/datalistener/rpcserver.py +18 -28
  94. tomwer/core/process/control/datawatcher/datawatcher.py +15 -12
  95. tomwer/core/process/control/datawatcher/datawatcherobserver.py +11 -8
  96. tomwer/core/process/control/datawatcher/datawatcherprocess.py +7 -5
  97. tomwer/core/process/control/datawatcher/edfdwprocess.py +5 -15
  98. tomwer/core/process/control/datawatcher/hdf5dwprocess.py +3 -1
  99. tomwer/core/process/control/datawatcher/status.py +2 -0
  100. tomwer/core/process/control/nxtomomill.py +7 -6
  101. tomwer/core/process/control/scanlist.py +2 -1
  102. tomwer/core/process/control/scanselector.py +1 -0
  103. tomwer/core/process/control/scantransfer.py +12 -12
  104. tomwer/core/process/control/scanvalidator.py +7 -6
  105. tomwer/core/process/control/test/test_volume_link.py +5 -4
  106. tomwer/core/process/control/timer.py +4 -4
  107. tomwer/core/process/control/volumeselector.py +1 -0
  108. tomwer/core/process/control/volumesymlink.py +8 -9
  109. tomwer/core/process/edit/darkflatpatch.py +9 -12
  110. tomwer/core/process/edit/imagekeyeditor.py +11 -13
  111. tomwer/core/process/reconstruction/axis/axis.py +36 -38
  112. tomwer/core/process/reconstruction/axis/mode.py +2 -1
  113. tomwer/core/process/reconstruction/axis/params.py +23 -28
  114. tomwer/core/process/reconstruction/darkref/darkrefs.py +23 -27
  115. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +14 -18
  116. tomwer/core/process/reconstruction/darkref/params.py +3 -1
  117. tomwer/core/process/reconstruction/lamino/tofu.py +11 -15
  118. tomwer/core/process/reconstruction/nabu/castvolume.py +15 -18
  119. tomwer/core/process/reconstruction/nabu/nabucommon.py +19 -20
  120. tomwer/core/process/reconstruction/nabu/nabuscores.py +16 -14
  121. tomwer/core/process/reconstruction/nabu/nabuslices.py +27 -22
  122. tomwer/core/process/reconstruction/nabu/nabuvolume.py +20 -22
  123. tomwer/core/process/reconstruction/nabu/utils.py +17 -15
  124. tomwer/core/process/reconstruction/normalization/__init__.py +1 -3
  125. tomwer/core/process/reconstruction/normalization/normalization.py +16 -21
  126. tomwer/core/process/reconstruction/normalization/params.py +2 -2
  127. tomwer/core/process/reconstruction/saaxis/__init__.py +1 -1
  128. tomwer/core/process/reconstruction/saaxis/params.py +6 -7
  129. tomwer/core/process/reconstruction/saaxis/saaxis.py +44 -55
  130. tomwer/core/process/reconstruction/sadeltabeta/__init__.py +1 -1
  131. tomwer/core/process/reconstruction/sadeltabeta/params.py +9 -13
  132. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +40 -46
  133. tomwer/core/process/reconstruction/scores/__init__.py +2 -2
  134. tomwer/core/process/reconstruction/scores/params.py +6 -9
  135. tomwer/core/process/reconstruction/scores/scores.py +10 -13
  136. tomwer/core/process/reconstruction/test/test_axis_params.py +4 -2
  137. tomwer/core/process/reconstruction/test/test_darkref.py +1 -2
  138. tomwer/core/process/reconstruction/test/test_darkref_copy.py +3 -1
  139. tomwer/core/process/reconstruction/test/test_paramsbase.py +1 -1
  140. tomwer/core/process/reconstruction/test/test_saaxis.py +11 -7
  141. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +5 -4
  142. tomwer/core/process/reconstruction/test/test_utils.py +3 -2
  143. tomwer/core/process/script/python.py +6 -8
  144. tomwer/core/process/task.py +11 -12
  145. tomwer/core/process/test/test_axis.py +12 -9
  146. tomwer/core/process/test/test_conditions.py +8 -8
  147. tomwer/core/process/test/test_dark_and_flat.py +9 -8
  148. tomwer/core/process/test/test_data_listener.py +5 -3
  149. tomwer/core/process/test/test_data_transfer.py +14 -12
  150. tomwer/core/process/test/test_data_watcher.py +3 -1
  151. tomwer/core/process/test/test_lamino.py +3 -1
  152. tomwer/core/process/test/test_nabu.py +13 -12
  153. tomwer/core/process/test/test_normalization.py +7 -5
  154. tomwer/core/process/test/test_timer.py +2 -1
  155. tomwer/core/process/utils.py +9 -9
  156. tomwer/core/progress.py +3 -4
  157. tomwer/core/scan/blissscan.py +4 -2
  158. tomwer/core/scan/edfscan.py +26 -29
  159. tomwer/core/scan/futurescan.py +2 -1
  160. tomwer/core/scan/hdf5scan.py +21 -28
  161. tomwer/core/scan/scanbase.py +18 -18
  162. tomwer/core/scan/scanfactory.py +20 -21
  163. tomwer/core/scan/scantype.py +7 -0
  164. tomwer/core/scan/test/test_edf.py +2 -1
  165. tomwer/core/scan/test/test_future_scan.py +2 -1
  166. tomwer/core/scan/test/test_h5.py +5 -4
  167. tomwer/core/scan/test/test_process_registration.py +5 -3
  168. tomwer/core/scan/test/test_scan.py +11 -9
  169. tomwer/core/settings.py +1 -2
  170. tomwer/core/test/test_lamino.py +3 -2
  171. tomwer/core/test/test_scanutils.py +3 -2
  172. tomwer/core/test/test_utils.py +6 -4
  173. tomwer/core/utils/__init__.py +8 -6
  174. tomwer/core/utils/deprecation.py +2 -2
  175. tomwer/core/utils/image.py +4 -3
  176. tomwer/core/utils/locker.py +1 -1
  177. tomwer/core/utils/normalization.py +1 -0
  178. tomwer/core/utils/nxtomoutils.py +2 -1
  179. tomwer/core/utils/scanutils.py +9 -6
  180. tomwer/core/utils/slurm.py +2 -1
  181. tomwer/core/utils/time.py +2 -4
  182. tomwer/core/utils/volumeutils.py +2 -1
  183. tomwer/core/volume/__init__.py +1 -1
  184. tomwer/core/volume/edfvolume.py +4 -3
  185. tomwer/core/volume/hdf5volume.py +6 -8
  186. tomwer/core/volume/jp2kvolume.py +4 -3
  187. tomwer/core/volume/rawvolume.py +7 -7
  188. tomwer/core/volume/tiffvolume.py +8 -6
  189. tomwer/core/volume/volumebase.py +1 -0
  190. tomwer/core/volume/volumefactory.py +18 -18
  191. tomwer/gui/cluster/slurm.py +2 -0
  192. tomwer/gui/cluster/supervisor.py +4 -2
  193. tomwer/gui/cluster/test/test_cluster.py +5 -4
  194. tomwer/gui/cluster/test/test_supervisor.py +4 -2
  195. tomwer/gui/conditions/filter.py +7 -6
  196. tomwer/gui/control/actions.py +1 -0
  197. tomwer/gui/control/datadiscovery.py +168 -0
  198. tomwer/gui/control/datalist.py +29 -28
  199. tomwer/gui/control/datalistener.py +8 -4
  200. tomwer/gui/control/datareacheractions.py +2 -1
  201. tomwer/gui/control/datatransfert.py +3 -1
  202. tomwer/gui/control/datavalidator.py +11 -12
  203. tomwer/gui/control/datawatcher/configuration.py +12 -1
  204. tomwer/gui/control/datawatcher/controlwidget.py +116 -0
  205. tomwer/gui/control/datawatcher/datawatcher.py +63 -121
  206. tomwer/gui/control/datawatcher/datawatcherobserver.py +7 -9
  207. tomwer/gui/control/history.py +3 -1
  208. tomwer/gui/control/observations.py +7 -7
  209. tomwer/gui/control/scanselectorwidget.py +4 -2
  210. tomwer/gui/control/selectorwidgetbase.py +3 -1
  211. tomwer/gui/control/serie/seriecreator.py +11 -12
  212. tomwer/gui/control/singletomoobj.py +4 -4
  213. tomwer/gui/control/test/test_datadiscovery.py +27 -0
  214. tomwer/gui/control/test/test_datalist.py +7 -6
  215. tomwer/gui/control/test/test_datalistener.py +4 -4
  216. tomwer/gui/control/test/test_datavalidator.py +3 -1
  217. tomwer/gui/control/test/test_inputwidget.py +5 -4
  218. tomwer/gui/control/test/test_process_manager.py +3 -3
  219. tomwer/gui/control/test/test_scanselector.py +6 -4
  220. tomwer/gui/control/test/test_scanvalidator.py +6 -5
  221. tomwer/gui/control/test/test_single_tomo_obj.py +5 -3
  222. tomwer/gui/control/test/test_volume_dialog.py +7 -5
  223. tomwer/gui/control/test/test_volumeselector.py +8 -6
  224. tomwer/gui/control/volumeselectorwidget.py +2 -1
  225. tomwer/gui/debugtools/datasetgenerator.py +2 -1
  226. tomwer/gui/debugtools/objectinspector.py +6 -7
  227. tomwer/gui/edit/dkrfpatch.py +11 -10
  228. tomwer/gui/edit/imagekeyeditor.py +12 -12
  229. tomwer/gui/edit/nxtomoeditor.py +8 -7
  230. tomwer/gui/edit/test/test_dkrf_patch.py +10 -9
  231. tomwer/gui/edit/test/test_image_key_editor.py +8 -6
  232. tomwer/gui/edit/test/test_nx_editor.py +7 -5
  233. tomwer/gui/icons.py +3 -2
  234. tomwer/gui/illustrations.py +3 -2
  235. tomwer/gui/imagefromfile.py +3 -1
  236. tomwer/gui/qfolderdialog.py +14 -12
  237. tomwer/gui/reconstruction/axis/CompareImages.py +9 -8
  238. tomwer/gui/reconstruction/axis/__init__.py +1 -1
  239. tomwer/gui/reconstruction/axis/axis.py +9 -7
  240. tomwer/gui/reconstruction/axis/radioaxis.py +30 -32
  241. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +6 -5
  242. tomwer/gui/reconstruction/darkref/darkrefwidget.py +4 -2
  243. tomwer/gui/reconstruction/lamino/tofu/misc.py +3 -1
  244. tomwer/gui/reconstruction/lamino/tofu/projections.py +16 -8
  245. tomwer/gui/reconstruction/lamino/tofu/tofu.py +6 -3
  246. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +5 -2
  247. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +8 -5
  248. tomwer/gui/reconstruction/nabu/action.py +1 -0
  249. tomwer/gui/reconstruction/nabu/castvolume.py +6 -4
  250. tomwer/gui/reconstruction/nabu/check.py +3 -2
  251. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +5 -2
  252. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -3
  253. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +4 -3
  254. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +7 -5
  255. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +8 -6
  256. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +7 -7
  257. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +40 -33
  258. tomwer/gui/reconstruction/nabu/nabuflow.py +7 -4
  259. tomwer/gui/reconstruction/nabu/slices.py +14 -10
  260. tomwer/gui/reconstruction/nabu/slurm.py +1 -0
  261. tomwer/gui/reconstruction/nabu/volume.py +5 -3
  262. tomwer/gui/reconstruction/normalization/intensity.py +14 -13
  263. tomwer/gui/reconstruction/saaxis/corrangeselector.py +36 -35
  264. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +5 -4
  265. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -17
  266. tomwer/gui/reconstruction/saaxis/sliceselector.py +5 -5
  267. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +33 -36
  268. tomwer/gui/reconstruction/scores/scoreplot.py +19 -18
  269. tomwer/gui/reconstruction/test/test_axis.py +14 -13
  270. tomwer/gui/reconstruction/test/test_lamino.py +3 -2
  271. tomwer/gui/reconstruction/test/test_nabu.py +8 -6
  272. tomwer/gui/reconstruction/test/test_saaxis.py +17 -15
  273. tomwer/gui/reconstruction/test/test_sadeltabeta.py +15 -13
  274. tomwer/gui/samplemoved/__init__.py +8 -7
  275. tomwer/gui/samplemoved/selectiontable.py +4 -2
  276. tomwer/gui/stackplot.py +14 -13
  277. tomwer/gui/stacks.py +11 -9
  278. tomwer/gui/test/test_axis_gui.py +5 -4
  279. tomwer/gui/test/test_qfolder_dialog.py +2 -1
  280. tomwer/gui/utils/__init__.py +5 -5
  281. tomwer/gui/utils/buttons.py +1 -0
  282. tomwer/gui/utils/completer.py +1 -0
  283. tomwer/gui/utils/flow.py +4 -2
  284. tomwer/gui/utils/illustrations.py +1 -0
  285. tomwer/gui/utils/inputwidget.py +11 -17
  286. tomwer/gui/utils/lineselector/lineselector.py +6 -8
  287. tomwer/gui/utils/qt_utils.py +1 -0
  288. tomwer/gui/utils/scandescription.py +2 -0
  289. tomwer/gui/utils/splashscreen.py +1 -1
  290. tomwer/gui/utils/unitsystem.py +3 -1
  291. tomwer/gui/utils/vignettes.py +8 -8
  292. tomwer/gui/utils/waiterthread.py +2 -1
  293. tomwer/gui/visualization/dataviewer.py +20 -28
  294. tomwer/gui/visualization/diffviewer/diffviewer.py +17 -20
  295. tomwer/gui/visualization/diffviewer/shiftwidget.py +3 -1
  296. tomwer/gui/visualization/nxtomometadata.py +1 -0
  297. tomwer/gui/visualization/reconstructionparameters.py +13 -12
  298. tomwer/gui/visualization/scanoverview.py +5 -3
  299. tomwer/gui/visualization/sinogramviewer.py +3 -2
  300. tomwer/gui/visualization/test/test_dataviewer.py +3 -1
  301. tomwer/gui/visualization/test/test_diffviewer.py +8 -6
  302. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +5 -3
  303. tomwer/gui/visualization/test/test_reconstruction_parameters.py +5 -3
  304. tomwer/gui/visualization/test/test_sinogramviewer.py +10 -9
  305. tomwer/gui/visualization/test/test_stacks.py +8 -6
  306. tomwer/gui/visualization/test/test_volumeviewer.py +10 -8
  307. tomwer/gui/visualization/tomoobjoverview.py +7 -4
  308. tomwer/gui/visualization/volumeoverview.py +5 -3
  309. tomwer/gui/visualization/volumeviewer.py +15 -14
  310. tomwer/io/utils/__init__.py +3 -3
  311. tomwer/io/utils/h5pyutils.py +2 -1
  312. tomwer/io/utils/utils.py +17 -21
  313. tomwer/resources/__init__.py +1 -1
  314. tomwer/synctools/axis.py +3 -1
  315. tomwer/synctools/darkref.py +3 -2
  316. tomwer/synctools/datalistener.py +10 -6
  317. tomwer/synctools/datatransfert.py +2 -3
  318. tomwer/synctools/imageloaderthread.py +5 -3
  319. tomwer/synctools/rsyncmanager.py +3 -2
  320. tomwer/synctools/saaxis.py +3 -1
  321. tomwer/synctools/sadeltabeta.py +3 -1
  322. tomwer/synctools/stacks/control/datalistener.py +9 -12
  323. tomwer/synctools/stacks/edit/darkflatpatch.py +13 -12
  324. tomwer/synctools/stacks/edit/imagekeyeditor.py +12 -11
  325. tomwer/synctools/stacks/processingstack.py +3 -2
  326. tomwer/synctools/stacks/reconstruction/axis.py +12 -12
  327. tomwer/synctools/stacks/reconstruction/castvolume.py +8 -5
  328. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +10 -9
  329. tomwer/synctools/stacks/reconstruction/lamino.py +9 -7
  330. tomwer/synctools/stacks/reconstruction/nabu.py +18 -17
  331. tomwer/synctools/stacks/reconstruction/normalization.py +12 -16
  332. tomwer/synctools/stacks/reconstruction/saaxis.py +13 -11
  333. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +16 -14
  334. tomwer/synctools/test/test_darkRefs.py +4 -3
  335. tomwer/synctools/test/test_foldertransfer.py +14 -12
  336. tomwer/synctools/test/test_scanstages.py +8 -7
  337. tomwer/synctools/utils/scanstages.py +7 -5
  338. tomwer/tests/conftest.py +4 -4
  339. tomwer/tests/test_scripts.py +3 -2
  340. tomwer/tests/utils/__init__.py +5 -4
  341. tomwer/tests/utils/utilstest.py +5 -6
  342. tomwer/third_party/nabu/preproc/phase.py +7 -5
  343. tomwer/third_party/nabu/utils.py +3 -2
  344. tomwer/utils.py +12 -12
  345. tomwer/version.py +4 -4
  346. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/METADATA +2 -2
  347. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/RECORD +353 -345
  348. /tomwer-1.1.1-py3.8-nspkg.pth → /tomwer-1.2.0a0-py3.8-nspkg.pth +0 -0
  349. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/LICENSE +0 -0
  350. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/WHEEL +0 -0
  351. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/entry_points.txt +0 -0
  352. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/namespace_packages.txt +0 -0
  353. {tomwer-1.1.1.dist-info → tomwer-1.2.0a0.dist-info}/top_level.txt +0 -0
@@ -28,22 +28,25 @@ __license__ = "MIT"
28
28
  __date__ = "18/02/2018"
29
29
 
30
30
 
31
- import os
32
31
  import logging
32
+ import os
33
33
  from typing import Optional
34
- from silx.gui import qt, icons as silxicons
35
- from tomwer.core.scan.blissscan import BlissScan
36
- from tomwer.gui.qlefilesystem import QLFileSystem
37
- from tomwer.io.utils import get_default_directory
34
+
35
+ from silx.gui import icons as silxicons
36
+ from silx.gui import qt
37
+
38
38
  from tomwer.core.process.control.datawatcher.datawatcher import _DataWatcher
39
- from tomwer.gui.utils.waiterthread import QWaiterThread
40
- from tomwer.gui.control import observations, history, datareacheractions
41
- from tomwer.gui.control.datawatcher import configuration
42
- from .datawatcherobserver import _QOngoingObservation
43
- from .datawatcherobserver import _QDataWatcherObserver
39
+ from tomwer.core.scan.blissscan import BlissScan
40
+ from tomwer.core.scan.scanbase import TomwerScanBase
44
41
  from tomwer.core.scan.scanfactory import ScanFactory
45
42
  from tomwer.core.utils import logconfig
46
- from tomwer.core.scan.scanbase import TomwerScanBase
43
+ from tomwer.gui.control import datareacheractions, history, observations
44
+ from tomwer.gui.control.datawatcher import configuration
45
+ from tomwer.gui.control.datawatcher.controlwidget import ControlWidget
46
+ from tomwer.gui.utils.waiterthread import QWaiterThread
47
+ from tomwer.io.utils import get_default_directory
48
+
49
+ from .datawatcherobserver import _QDataWatcherObserver, _QOngoingObservation
47
50
 
48
51
  logger = logging.getLogger(__name__)
49
52
 
@@ -55,9 +58,6 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
55
58
  :param parent: the parent widget
56
59
  """
57
60
 
58
- _textStopObservation = "Stop observation"
59
- _textStartObservation = "Start observation"
60
-
61
61
  obsStatusToWidgetStatus = {
62
62
  "not processing": "Not processed",
63
63
  "none found": "Running",
@@ -79,7 +79,6 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
79
79
 
80
80
  DEFAULT_DIRECTORY = "/lbsram/data/visitor"
81
81
 
82
- # TODO: status should also pass a TomoBase instance
83
82
  sigTMStatusChanged = qt.Signal(str)
84
83
  """Signal emitted when the state changed"""
85
84
  sigScanReady = qt.Signal(object)
@@ -108,6 +107,15 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
108
107
  status ..."""
109
108
  _DataWatcher.__init__(self)
110
109
  self.setFolderObserved(self.folderObserved)
110
+ self._setStateIcon(silxicons.getQIcon("remove"))
111
+
112
+ # connect signal / slot
113
+ self._qteFolderSelected.textChanged.connect(self._updateFolderObserved)
114
+ self._qteFolderSelected.editingFinished.connect(self._restartObservation)
115
+ self._filterQLE.editingFinished.connect(self._restartObservation)
116
+ self._filterQLE.editingFinished.connect(self._filterChanged)
117
+ self._qpbstartstop.released.connect(self._switchObservation)
118
+
111
119
  # expose api
112
120
  self.sigObservationModeChanged = (
113
121
  self.getConfigWindow()._observationMethod.sigSelectionChanged
@@ -231,22 +239,7 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
231
239
 
232
240
  def getControlWindow(self):
233
241
  if self.controlWidget is None:
234
- self.controlWidget = qt.QWidget(parent=self)
235
- self.controlWidget.setLayout(qt.QVBoxLayout())
236
- layout = self.controlWidget.layout()
237
-
238
- self.statusBar = qt.QStatusBar(parent=self.controlWidget)
239
- self._qlInfo = qt.QLabel(parent=self.controlWidget)
240
-
241
- layout.addWidget(self._getFolderSelection())
242
- layout.addWidget(self._qlInfo)
243
- layout.addWidget(self._buildFilterWidget())
244
- layout.addWidget(self._buildStartStopButton())
245
- layout.addWidget(self.statusBar)
246
-
247
- spacer = qt.QWidget(self)
248
- spacer.setSizePolicy(qt.QSizePolicy.Minimum, qt.QSizePolicy.Expanding)
249
- layout.addWidget(spacer)
242
+ self.controlWidget = ControlWidget(parent=self)
250
243
 
251
244
  return self.controlWidget
252
245
 
@@ -260,22 +253,6 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
260
253
  self._mainWidget.layout().addWidget(self.getHistoryWindow())
261
254
  self.setCentralWidget(self._mainWidget)
262
255
 
263
- def _buildFilterWidget(self):
264
- widget = qt.QWidget(self.controlWidget)
265
- layout = qt.QHBoxLayout()
266
- widget.setLayout(layout)
267
- widget.layout().addWidget(qt.QLabel("filter"))
268
- self._filterQLE = qt.QLineEdit("", self)
269
- self._filterQLE.setToolTip(
270
- "You can provide a Linux Regular Expression that will insure only file fitting the expression will be discovered"
271
- )
272
- self._filterQLE.setPlaceholderText("*file_pattern*")
273
- widget.layout().addWidget(self._filterQLE)
274
- self._filterQLE.editingFinished.connect(self._restartObservation)
275
- self._filterQLE.editingFinished.connect(self._filterChanged)
276
-
277
- return widget
278
-
279
256
  def _filterChanged(self, *args, **kwargs):
280
257
  self.sigFilterFileNamePatternChanged.emit(self._filterQLE.text())
281
258
 
@@ -286,33 +263,6 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
286
263
  else:
287
264
  return value
288
265
 
289
- def _buildStartStopButton(self):
290
- """
291
- Build the start/stop button in a QHLayout with one spacer on the left
292
- and one on the right
293
- """
294
- widget = qt.QWidget(self.controlWidget)
295
- layout = qt.QHBoxLayout()
296
- widget.setLayout(layout)
297
-
298
- # left spacer
299
- spacerL = qt.QWidget(widget)
300
- spacerL.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Minimum)
301
- layout.addWidget(spacerL)
302
-
303
- # button
304
- self._qpbstartstop = qt.QPushButton(self._textStartObservation)
305
- self._qpbstartstop.setAutoDefault(True)
306
- self._qpbstartstop.pressed.connect(self._switchObservation)
307
- layout.addWidget(self._qpbstartstop)
308
-
309
- # right spacer
310
- spacerR = qt.QWidget(widget)
311
- spacerR.setSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Minimum)
312
- layout.addWidget(spacerR)
313
-
314
- return widget
315
-
316
266
  def _buildLoopTimeBreak(self):
317
267
  """
318
268
  Build the spin box to define the break we want to make between two
@@ -332,11 +282,35 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
332
282
 
333
283
  return widget
334
284
 
285
+ @property
286
+ def _qlInfo(self):
287
+ return self.getControlWindow()._qlInfo
288
+
289
+ @property
290
+ def _qteFolderSelected(self):
291
+ return self.getControlWindow()._qteFolderSelected
292
+
293
+ @property
294
+ def _filterQLE(self):
295
+ return self.getControlWindow()._filterQLE
296
+
297
+ @property
298
+ def _qpbstartstop(self):
299
+ return self.getControlWindow()._qpbstartstop
300
+
301
+ @property
302
+ def _stateLabel(self):
303
+ return self.getControlWindow()._stateLabel
304
+
305
+ @property
306
+ def mystatusBar(self):
307
+ return self.getControlWindow().mystatusBar
308
+
335
309
  def _getInitPath(self):
336
310
  initPath = ""
337
311
  if "DATADIR" in os.environ:
338
312
  initPath = os.environ["DATADIR"]
339
- self._qlInfo.setText(
313
+ self.getControlWindow()._qlInfo.setText(
340
314
  "note : environment variable DATADIR found, "
341
315
  "$DATADIR setted has the root of the observe folder"
342
316
  )
@@ -391,7 +365,7 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
391
365
  message = "observation stopped"
392
366
  self.sigObservationEnd.emit()
393
367
  logger.inform(message)
394
- self.statusBar.showMessage(message)
368
+ self.mystatusBar.showMessage(message)
395
369
  self._setCurrentStatus("not processing")
396
370
  return True
397
371
 
@@ -405,7 +379,7 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
405
379
  if _DataWatcher.start(self):
406
380
  mess = f"start observation on {self.folderObserved}"
407
381
  logger.inform(mess)
408
- self.statusBar.showMessage(mess)
382
+ self.mystatusBar.showMessage(mess)
409
383
  self._setCurrentStatus("started")
410
384
  self.sigObservationStart.emit()
411
385
  return True
@@ -415,41 +389,9 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
415
389
  def _setIsObserving(self, b):
416
390
  _DataWatcher._setIsObserving(self, b)
417
391
  if self.isObserving is True: # pylint: disable=E1101
418
- self._qpbstartstop.setText(self._textStopObservation)
392
+ self._qpbstartstop.setText(self.getControlWindow()._TXT_STOP_OBS)
419
393
  else:
420
- self._qpbstartstop.setText(self._textStartObservation)
421
-
422
- def _getFolderSelection(self):
423
- """
424
- Return the widget used for the folder selection
425
- """
426
- widget = qt.QWidget(self)
427
- layout = qt.QHBoxLayout()
428
-
429
- self._qtbSelectFolder = qt.QPushButton("Select folder", parent=widget)
430
- self._qtbSelectFolder.setAutoDefault(True)
431
- self._qtbSelectFolder.clicked.connect(self._setFolderPath)
432
-
433
- self._qteFolderSelected = QLFileSystem("", parent=widget)
434
- self._qteFolderSelected.textChanged.connect(self._updateFolderObserved)
435
- self._qteFolderSelected.editingFinished.connect(self._restartObservation)
436
-
437
- layout.setContentsMargins(0, 0, 0, 0)
438
- layout.setSpacing(0)
439
-
440
- layout.addWidget(self._qteFolderSelected)
441
- layout.addWidget(self._qtbSelectFolder)
442
-
443
- self.animated_icon = silxicons.getWaitIcon()
444
- self.__stateLabel = qt.QLabel(parent=widget)
445
- self.animated_icon.register(self.__stateLabel)
446
- self._setStateIcon(silxicons.getQIcon("remove"))
447
-
448
- self.__stateLabel.setFixedWidth(30)
449
- layout.addWidget(self.__stateLabel)
450
-
451
- widget.setLayout(layout)
452
- return widget
394
+ self._qpbstartstop.setText(self.getControlWindow()._TXT_START_OBS)
453
395
 
454
396
  def _setFolderPath(self): # pragma: no cover
455
397
  """
@@ -505,17 +447,17 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
505
447
  else:
506
448
  return False
507
449
 
508
- def _messageNotDir(self, dir):
509
- super()._messageNotDir(dir=dir)
510
- message = "Given path (%s) isn't a directory." % dir
511
- self.statusBar.showMessage("!!! " + message + "!!!")
450
+ def _messageNotDir(self, dir_):
451
+ super()._messageNotDir(dir_=dir_)
452
+ message = f"Given path ({dir_}) isn't a directory."
453
+ self.mystatusBar.showMessage("!!! " + message + "!!!")
512
454
 
513
455
  def informationReceived(self, info):
514
- self.statusBar.showMessage(info)
456
+ self.mystatusBar.showMessage(info)
515
457
 
516
458
  def _scanStatusChanged(self, scan, status):
517
- mess = "scan %s is observed. Status: %s" % (os.path.basename(scan), status)
518
- self.statusBar.showMessage(mess)
459
+ mess = f"scan {os.path.basename(scan)} is observed. Status: {status}"
460
+ self.mystatusBar.showMessage(mess)
519
461
 
520
462
  def _connectObserverThread(self):
521
463
  if self.observationThread is not None and self.obsThIsConnected is False:
@@ -560,9 +502,9 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
560
502
  :param icon:the icon to set"""
561
503
  # needed for heritage from DataWatcher
562
504
  if icon is None:
563
- self.__stateLabel.setPixmap(qt.QIcon().pixmap(30, state=qt.QIcon.On))
505
+ self._stateLabel.setPixmap(qt.QIcon().pixmap(30, state=qt.QIcon.On))
564
506
  else:
565
- self.__stateLabel.setPixmap(icon.pixmap(30, state=qt.QIcon.On))
507
+ self._stateLabel.setPixmap(icon.pixmap(30, state=qt.QIcon.On))
566
508
 
567
509
  def _updateAnimatedIcon(self):
568
510
  """Simple function which manage the waiting icon"""
@@ -619,7 +561,7 @@ class DataWatcherWidget(_DataWatcher, qt.QMainWindow):
619
561
 
620
562
  def waitForObservationFinished(self):
621
563
  if self.observationThread.observations is not None:
622
- for dir, thread in self.observationThread.observations.dict.items():
564
+ for _, thread in self.observationThread.observations.dict.items():
623
565
  thread.wait(10)
624
566
 
625
567
  def _launchObservation(self):
@@ -28,24 +28,22 @@ __license__ = "MIT"
28
28
  __date__ = "10/01/2019"
29
29
 
30
30
 
31
- from fnmatch import fnmatch
31
+ import logging
32
32
  import os
33
+ from fnmatch import fnmatch
34
+
35
+ import h5py
33
36
  from silx.gui import qt
34
- from tomwer.core.process.control.datawatcher.datawatcherobserver import (
35
- _OngoingObservation,
36
- )
37
+
38
+ from tomwer.core.process.control.datawatcher import status as datawatcherstatus
37
39
  from tomwer.core.process.control.datawatcher.datawatcherobserver import (
38
40
  _DataWatcherObserver_MixIn,
39
- )
40
- from tomwer.core.process.control.datawatcher.datawatcherobserver import (
41
41
  _DataWatcherStaticObserverMixIn,
42
+ _OngoingObservation,
42
43
  )
43
44
  from tomwer.core.scan.blissscan import BlissScan
44
45
  from tomwer.core.scan.scanbase import TomwerScanBase
45
- from tomwer.core.process.control.datawatcher import status as datawatcherstatus
46
- import logging
47
46
  from tomwer.core.scan.scanfactory import ScanFactory
48
- import h5py
49
47
 
50
48
  logger = logging.getLogger(__name__)
51
49
 
@@ -28,8 +28,10 @@ __license__ = "MIT"
28
28
  __date__ = "18/02/2018"
29
29
 
30
30
 
31
- from silx.gui import qt
32
31
  from operator import itemgetter
32
+
33
+ from silx.gui import qt
34
+
33
35
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
34
36
  from tomwer.core.scan.scanbase import TomwerScanBase
35
37
 
@@ -28,13 +28,15 @@ __license__ = "MIT"
28
28
  __date__ = "31/05/2018"
29
29
 
30
30
 
31
- from silx.gui import qt
31
+ import os
32
+ import weakref
32
33
  from collections import OrderedDict
34
+
35
+ from silx.gui import qt
36
+
37
+ from tomwer.core.scan.blissscan import BlissScan
33
38
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
34
39
  from tomwer.core.scan.scanbase import TomwerScanBase
35
- from tomwer.core.scan.blissscan import BlissScan
36
- import weakref
37
- import os
38
40
 
39
41
 
40
42
  class ScanObservation(qt.QWidget):
@@ -194,9 +196,7 @@ class _ObservedScanModel(qt.QAbstractTableModel):
194
196
  if isinstance(obs, TomwerScanBase):
195
197
  return obs.tomo_n or 0
196
198
  elif isinstance(obs, BlissScan):
197
- return "(at least) {} over {}".format(
198
- obs.n_acquired or "?", obs.tomo_n or "?"
199
- )
199
+ return f"(at least) {obs.n_acquired or '?'} over {obs.tomo_n or '?'}"
200
200
  elif os.path.exists(obs) and os.path.isdir(obs):
201
201
  return str(len(os.listdir(obs)))
202
202
  else:
@@ -28,11 +28,13 @@ __license__ = "MIT"
28
28
  __date__ = "25/05/2018"
29
29
 
30
30
 
31
- from tomwer.gui.qfolderdialog import QDataDialog
31
+ import logging
32
+
32
33
  from tomwer.core.scan.scanbase import TomwerScanBase
33
34
  from tomwer.gui.control.datalist import GenericScanList
35
+ from tomwer.gui.qfolderdialog import QDataDialog
36
+
34
37
  from .selectorwidgetbase import _SelectorWidget
35
- import logging
36
38
 
37
39
  logger = logging.getLogger(__name__)
38
40
 
@@ -1,5 +1,7 @@
1
- from silx.gui import qt
2
1
  import logging
2
+
3
+ from silx.gui import qt
4
+
3
5
  from tomwer.gui.utils.qt_utils import block_signals
4
6
 
5
7
  _logger = logging.getLogger(__name__)
@@ -28,21 +28,22 @@ __license__ = "MIT"
28
28
  __date__ = "12/01/2022"
29
29
 
30
30
 
31
+ import logging
31
32
  from contextlib import AbstractContextManager
32
- from typing import Optional, Iterable
33
- from tomwer.core.scan.scanfactory import ScanFactory
34
- from tomwer.core.scan.scanbase import TomwerScanBase
35
- from tomwer.core.volume.volumefactory import VolumeFactory
36
- from tomwer.gui.control.datalist import TomoObjList
37
- from tomwer.gui.visualization.tomoobjoverview import TomoObjOverview
38
- from tomwer.core.tomwer_object import TomwerObject
33
+ from typing import Iterable, Optional
34
+
39
35
  from silx.gui import qt
40
36
  from silx.gui.utils import blockSignals
41
- from tomoscan.serie import Serie
42
37
  from silx.utils.enum import Enum as _Enum
43
- import logging
38
+ from tomoscan.serie import Serie
44
39
 
40
+ from tomwer.core.scan.scanbase import TomwerScanBase
41
+ from tomwer.core.scan.scanfactory import ScanFactory
42
+ from tomwer.core.tomwer_object import TomwerObject
43
+ from tomwer.core.volume.volumefactory import VolumeFactory
44
+ from tomwer.gui.control.datalist import TomoObjList
45
45
  from tomwer.gui.qfolderdialog import QDataDialog
46
+ from tomwer.gui.visualization.tomoobjoverview import TomoObjOverview
46
47
 
47
48
  _logger = logging.getLogger(__name__)
48
49
 
@@ -421,9 +422,7 @@ class _SerieDefinitionTree(qt.QWidget):
421
422
  else:
422
423
  scans = [ScanFactory.create_scan_object(scan_path=file_, entry=entry)]
423
424
  except Exception as e:
424
- _logger.error(
425
- "cannot create scan instances from {}. Error is {}".format(file_, e)
426
- )
425
+ _logger.error(f"cannot create scan instances from {file_}. Error is {e}")
427
426
  else:
428
427
  changed = False
429
428
  with self.SignalBlocker(self):
@@ -1,22 +1,22 @@
1
+ import logging
1
2
  import os
3
+
2
4
  from silx.gui import qt
5
+ from tomoscan.esrf.volume.utils import guess_volumes
3
6
 
4
7
  from tomwer.core.scan.scanfactory import ScanFactory
5
8
  from tomwer.core.tomwer_object import TomwerObject
6
9
  from tomwer.core.volume.edfvolume import EDFVolume, EDFVolumeIdentifier
7
10
  from tomwer.core.volume.hdf5volume import HDF5Volume, HDF5VolumeIdentifier
8
11
  from tomwer.core.volume.jp2kvolume import JP2KVolume, JP2KVolumeIdentifier
12
+ from tomwer.core.volume.rawvolume import RawVolume, RawVolumeIdentifier
9
13
  from tomwer.core.volume.tiffvolume import (
10
14
  MultiTIFFVolume,
11
15
  MultiTiffVolumeIdentifier,
12
16
  TIFFVolume,
13
17
  TIFFVolumeIdentifier,
14
18
  )
15
- from tomwer.core.volume.rawvolume import RawVolume, RawVolumeIdentifier
16
- from tomoscan.esrf.volume.utils import guess_volumes
17
19
  from tomwer.gui.qfolderdialog import QDataDialog
18
- import logging
19
-
20
20
  from tomwer.gui.qlefilesystem import QLFileSystem
21
21
 
22
22
  _logger = logging.getLogger(__name__)
@@ -0,0 +1,27 @@
1
+ from tomwer.tests.conftest import qtapp # noqa F401
2
+ from tomwer.gui.control.datadiscovery import DataDiscoveryWidget
3
+ from tomwer.core.scan.scantype import ScanType
4
+
5
+
6
+ def test_data_discovery_widget(qtapp): # noqa F811
7
+ widget = DataDiscoveryWidget()
8
+ pass
9
+ widget.show()
10
+ configuration = widget.getConfiguration()
11
+
12
+ assert isinstance(configuration, dict)
13
+ assert configuration == {
14
+ "start_folder": "",
15
+ "file_filter": None,
16
+ "scan_type_searched": ScanType.NX_TOMO.value,
17
+ }
18
+
19
+ new_config = {
20
+ "start_folder": "/my/folder",
21
+ "file_filter": "*.nx",
22
+ "scan_type_searched": ScanType.BLISS.value,
23
+ }
24
+
25
+ widget.setConfiguration(new_config)
26
+ assert widget.getConfiguration() == new_config
27
+ widget = None
@@ -27,14 +27,15 @@ __license__ = "MIT"
27
27
  __date__ = "05/11/2018"
28
28
 
29
29
 
30
- from tomwer.gui.control.datalist import GenericScanListDialog
31
- from tomwer.gui.control.datalist import VolumeList
32
- from tomwer.tests.utils import skip_gui_test
30
+ import tempfile
31
+
32
+ import pytest
33
+ from silx.gui import qt
33
34
  from silx.gui.utils.testutils import TestCaseQt
35
+
34
36
  from tomwer.core.utils.scanutils import MockEDF
35
- from silx.gui import qt
36
- import pytest
37
- import tempfile
37
+ from tomwer.gui.control.datalist import GenericScanListDialog, VolumeList
38
+ from tomwer.tests.utils import skip_gui_test
38
39
 
39
40
 
40
41
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -28,12 +28,12 @@ __license__ = "MIT"
28
28
  __date__ = "18/03/2020"
29
29
 
30
30
 
31
+ import pytest
31
32
  from silx.gui import qt
32
- from silx.gui.utils.testutils import TestCaseQt
33
- from tomwer.tests.utils import skip_gui_test
33
+ from silx.gui.utils.testutils import SignalListener, TestCaseQt
34
+
34
35
  from tomwer.gui.control.datalistener import ConfigurationWidget
35
- from silx.gui.utils.testutils import SignalListener
36
- import pytest
36
+ from tomwer.tests.utils import skip_gui_test
37
37
 
38
38
 
39
39
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -29,8 +29,10 @@ __date__ = "30/07/2020"
29
29
 
30
30
 
31
31
  import unittest
32
- from silx.gui.utils.testutils import TestCaseQt
32
+
33
33
  from silx.gui import qt
34
+ from silx.gui.utils.testutils import TestCaseQt
35
+
34
36
  from tomwer.gui.control.datavalidator import DataValidator
35
37
 
36
38
 
@@ -27,12 +27,13 @@ __license__ = "MIT"
27
27
  __date__ = "16/06/2021"
28
28
 
29
29
 
30
- from tomwer.gui.utils import inputwidget
31
- from tomwer.tests.utils import skip_gui_test
32
- from silx.gui.utils.testutils import TestCaseQt
33
- from silx.gui import qt
34
30
  import numpy
35
31
  import pytest
32
+ from silx.gui import qt
33
+ from silx.gui.utils.testutils import TestCaseQt
34
+
35
+ from tomwer.gui.utils import inputwidget
36
+ from tomwer.tests.utils import skip_gui_test
36
37
 
37
38
 
38
39
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -30,10 +30,10 @@ __date__ = "09/11/2020"
30
30
 
31
31
  import pytest
32
32
  from silx.gui import qt
33
- from silx.gui.utils.testutils import TestCaseQt
34
- from tomwer.tests.utils import skip_gui_test
33
+ from silx.gui.utils.testutils import SignalListener, TestCaseQt
34
+
35
35
  from tomwer.gui.control.datalistener import ConfigurationWidget
36
- from silx.gui.utils.testutils import SignalListener
36
+ from tomwer.tests.utils import skip_gui_test
37
37
 
38
38
 
39
39
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -27,13 +27,15 @@ __license__ = "MIT"
27
27
  __date__ = "22/01/2017"
28
28
 
29
29
 
30
- from tomwer.tests.utils import skip_gui_test
31
- from silx.gui.utils.testutils import TestCaseQt
32
- from tomwer.gui.control.scanselectorwidget import ScanSelectorWidget
33
- from tomwer.core.utils.scanutils import MockEDF
34
30
  import shutil
35
31
  import tempfile
32
+
36
33
  import pytest
34
+ from silx.gui.utils.testutils import TestCaseQt
35
+
36
+ from tomwer.core.utils.scanutils import MockEDF
37
+ from tomwer.gui.control.scanselectorwidget import ScanSelectorWidget
38
+ from tomwer.tests.utils import skip_gui_test
37
39
 
38
40
 
39
41
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
@@ -33,14 +33,15 @@ import os
33
33
  import shutil
34
34
  import tempfile
35
35
  import time
36
- from silx.gui.utils.testutils import TestCaseQt
36
+
37
37
  import pytest
38
- from tomwer.core import settings
39
- from tomwer.core import utils
40
- from tomwer.core.utils.scanutils import MockEDF
38
+ from silx.gui.utils.testutils import TestCaseQt
39
+
40
+ from tomwer.core import settings, utils
41
41
  from tomwer.core.process.control.scanvalidator import ScanValidatorP
42
- from tomwer.gui.utils.waiterthread import QWaiterThread
43
42
  from tomwer.core.scan.edfscan import EDFTomoScan
43
+ from tomwer.core.utils.scanutils import MockEDF
44
+ from tomwer.gui.utils.waiterthread import QWaiterThread
44
45
  from tomwer.tests.utils import skip_gui_test
45
46
 
46
47
  logging.disable(logging.INFO)
@@ -1,11 +1,13 @@
1
1
  import os
2
2
  import tempfile
3
+
3
4
  import numpy
4
- from silx.gui.utils.testutils import TestCaseQt
5
5
  from silx.gui import qt
6
- from tomwer.gui.control.singletomoobj import SingleTomoObj
7
- from tomwer.core.volume.hdf5volume import HDF5Volume
6
+ from silx.gui.utils.testutils import TestCaseQt
7
+
8
8
  from tomwer.core.utils.scanutils import MockHDF5
9
+ from tomwer.core.volume.hdf5volume import HDF5Volume
10
+ from tomwer.gui.control.singletomoobj import SingleTomoObj
9
11
 
10
12
 
11
13
  class TestSingletomoObj(TestCaseQt):
@@ -32,14 +32,16 @@ __date__ = "11/07/2022"
32
32
  import os
33
33
  import shutil
34
34
  import tempfile
35
- from silx.gui.utils.testutils import TestCaseQt
35
+
36
+ import numpy
37
+ import pytest
36
38
  from silx.gui import qt
37
- from tomwer.tests.utils import skip_gui_test
38
- from tomwer.gui.qfolderdialog import QVolumeDialog
39
+ from silx.gui.utils.testutils import TestCaseQt
39
40
  from tomoscan.esrf.volume.edfvolume import EDFVolume
40
41
  from tomoscan.esrf.volume.hdf5volume import HDF5Volume
41
- import numpy
42
- import pytest
42
+
43
+ from tomwer.gui.qfolderdialog import QVolumeDialog
44
+ from tomwer.tests.utils import skip_gui_test
43
45
 
44
46
 
45
47
  @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")