tomwer 1.0.4__py3-none-any.whl → 1.1.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.
Files changed (256) hide show
  1. orangecontrib/tomwer/tutorials/EBS_tomo_listener.ows +39 -0
  2. orangecontrib/tomwer/tutorials/cast_volume.ows +34 -0
  3. orangecontrib/tomwer/tutorials/simple_slice_reconstruction.ows +39 -0
  4. orangecontrib/tomwer/tutorials/simple_volume_local_reconstruction.ows +49 -0
  5. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +59 -0
  6. orangecontrib/tomwer/tutorials/using_saaxis_to_find_cor.ows +44 -0
  7. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +1 -1
  8. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +14 -4
  9. orangecontrib/tomwer/widgets/cluster/__init__.py +1 -1
  10. orangecontrib/tomwer/widgets/control/DataListOW.py +12 -5
  11. orangecontrib/tomwer/widgets/control/DataListenerOW.py +18 -9
  12. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +13 -6
  13. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +4 -5
  14. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +8 -4
  15. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +4 -6
  16. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +49 -62
  17. orangecontrib/tomwer/widgets/control/FilterOW.py +2 -4
  18. orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +93 -0
  19. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +135 -128
  20. orangecontrib/tomwer/widgets/control/NotifierOW.py +31 -7
  21. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +3 -5
  22. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +85 -0
  23. orangecontrib/tomwer/widgets/control/VolumeSelector.py +12 -4
  24. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +11 -7
  25. orangecontrib/tomwer/widgets/control/icons/notification.svg +4 -4
  26. orangecontrib/tomwer/widgets/control/icons/nxtomomill.png +0 -0
  27. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +8 -5
  28. orangecontrib/tomwer/widgets/control/icons/tomoobjserie.png +0 -0
  29. orangecontrib/tomwer/widgets/control/icons/tomoobjserie.svg +138 -0
  30. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +16 -4
  31. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +100 -0
  32. orangecontrib/tomwer/widgets/edit/icons/image_key_editor.png +0 -0
  33. orangecontrib/tomwer/widgets/edit/icons/image_key_upgrader.png +0 -0
  34. orangecontrib/tomwer/widgets/edit/icons/nx_tomo_editor.png +0 -0
  35. orangecontrib/tomwer/widgets/edit/icons/nx_tomo_editor.svg +123 -0
  36. orangecontrib/tomwer/widgets/edit/test/test_dark_flat_patch.py +21 -1
  37. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py +1 -1
  38. orangecontrib/tomwer/widgets/edit/test/test_image_key_upgrader.py +1 -1
  39. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +25 -0
  40. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +19 -10
  41. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +20 -14
  42. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +24 -10
  43. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +26 -21
  44. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +29 -12
  45. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +44 -17
  46. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +28 -18
  47. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +24 -17
  48. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +6 -6
  49. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +4 -2
  50. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.png +0 -0
  51. orangecontrib/tomwer/widgets/reconstruction/icons/nabu_2d.svg +11 -8
  52. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +10 -4
  53. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
  54. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +69 -0
  55. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +2 -4
  56. orangecontrib/tomwer/widgets/visualization/icons/nx_tomo_metadata_viewer.png +0 -0
  57. orangecontrib/tomwer/widgets/visualization/icons/nx_tomo_metadata_viewer.svg +105 -0
  58. tomwer/__main__.py +10 -5
  59. tomwer/app/canvas_launcher/config.py +10 -10
  60. tomwer/app/canvas_launcher/mainwindow.py +68 -6
  61. tomwer/app/canvas_launcher/widgetsscheme.py +1 -3
  62. tomwer/app/darkref.py +16 -12
  63. tomwer/app/imagekeyeditor.py +2 -2
  64. tomwer/app/imagekeyupgrader.py +104 -0
  65. tomwer/app/nxtomoeditor.py +103 -0
  66. tomwer/app/rsync.py +1 -1
  67. tomwer/core/cluster/cluster.py +1 -1
  68. tomwer/core/futureobject.py +1 -0
  69. tomwer/core/process/control/datalistener/datalistener.py +7 -1
  70. tomwer/core/process/control/datalistener/rpcserver.py +3 -3
  71. tomwer/core/process/control/datawatcher/datawatcher.py +18 -18
  72. tomwer/core/process/control/datawatcher/datawatcherobserver.py +5 -8
  73. tomwer/core/process/control/datawatcher/datawatcherprocess.py +2 -3
  74. tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -2
  75. tomwer/core/process/control/nxtomomill.py +33 -58
  76. tomwer/core/process/control/scanlist.py +2 -1
  77. tomwer/core/process/control/scanselector.py +7 -0
  78. tomwer/core/process/control/scantransfer.py +9 -18
  79. tomwer/core/process/control/scanvalidator.py +6 -5
  80. tomwer/core/process/control/singletomoobj.py +2 -1
  81. tomwer/core/process/control/timer.py +2 -1
  82. tomwer/core/process/control/tomoobjserie.py +8 -0
  83. tomwer/core/process/control/volumeselector.py +2 -1
  84. tomwer/core/process/control/volumesymlink.py +2 -1
  85. tomwer/core/process/edit/darkflatpatch.py +2 -1
  86. tomwer/core/process/edit/imagekeyeditor.py +4 -3
  87. tomwer/core/process/reconstruction/axis/axis.py +29 -32
  88. tomwer/core/process/reconstruction/axis/mode.py +3 -2
  89. tomwer/core/process/reconstruction/axis/params.py +35 -16
  90. tomwer/core/process/reconstruction/darkref/darkrefs.py +90 -707
  91. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +44 -16
  92. tomwer/core/process/reconstruction/darkref/params.py +62 -67
  93. tomwer/core/process/reconstruction/lamino/tofu.py +1 -1
  94. tomwer/core/process/reconstruction/nabu/castvolume.py +21 -26
  95. tomwer/core/process/reconstruction/nabu/nabucommon.py +36 -38
  96. tomwer/core/process/reconstruction/nabu/nabuscores.py +28 -13
  97. tomwer/core/process/reconstruction/nabu/nabuslices.py +41 -14
  98. tomwer/core/process/reconstruction/nabu/nabuvolume.py +21 -12
  99. tomwer/core/process/reconstruction/nabu/utils.py +12 -1
  100. tomwer/core/process/reconstruction/normalization/normalization.py +9 -8
  101. tomwer/core/process/reconstruction/saaxis/saaxis.py +46 -20
  102. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +38 -12
  103. tomwer/core/process/reconstruction/test/__init__.py +0 -39
  104. tomwer/core/process/reconstruction/test/test_axis_params.py +25 -3
  105. tomwer/core/process/reconstruction/test/test_darkref_copy.py +117 -1
  106. tomwer/core/process/script/python.py +16 -12
  107. tomwer/core/process/task.py +3 -7
  108. tomwer/core/process/test/test_axis.py +1 -1
  109. tomwer/core/process/test/test_dark_and_flat.py +41 -111
  110. tomwer/core/process/test/test_data_listener.py +0 -29
  111. tomwer/core/process/test/test_data_transfer.py +10 -14
  112. tomwer/core/process/test/test_nabu.py +1 -1
  113. tomwer/core/process/test/test_normalization.py +1 -1
  114. tomwer/core/process/visualization/liveslice.py +6 -0
  115. tomwer/core/scan/blissscan.py +37 -2
  116. tomwer/core/scan/edfscan.py +14 -4
  117. tomwer/core/scan/hdf5scan.py +10 -4
  118. tomwer/core/scan/scanbase.py +35 -29
  119. tomwer/core/scan/scanfactory.py +3 -17
  120. tomwer/core/scan/test/test_h5.py +1 -1
  121. tomwer/core/scan/test/test_process_registration.py +0 -11
  122. tomwer/core/scan/test/test_scan.py +32 -30
  123. tomwer/core/settings.py +2 -2
  124. tomwer/core/test/test_utils.py +1 -1
  125. tomwer/core/tomwer_object.py +19 -0
  126. tomwer/core/utils/__init__.py +0 -45
  127. tomwer/core/utils/char.py +2 -0
  128. tomwer/core/utils/gpu.py +5 -5
  129. tomwer/core/utils/nxtomoutils.py +2 -2
  130. tomwer/core/utils/scanutils.py +50 -0
  131. tomwer/core/utils/volumeutils.py +13 -0
  132. tomwer/core/volume/edfvolume.py +4 -0
  133. tomwer/core/volume/hdf5volume.py +4 -0
  134. tomwer/core/volume/jp2kvolume.py +4 -0
  135. tomwer/core/volume/rawvolume.py +4 -0
  136. tomwer/core/volume/tiffvolume.py +4 -0
  137. tomwer/core/volume/volumebase.py +19 -12
  138. tomwer/core/volume/volumefactory.py +20 -1
  139. tomwer/gui/cluster/slurm.py +1 -1
  140. tomwer/gui/cluster/test/test_cluster.py +2 -2
  141. tomwer/gui/control/datalist.py +109 -34
  142. tomwer/gui/control/datatransfert.py +1 -1
  143. tomwer/gui/control/datawatcher/datawatcher.py +23 -13
  144. tomwer/gui/control/datawatcher/datawatcherobserver.py +1 -1
  145. tomwer/gui/control/observations.py +0 -3
  146. tomwer/gui/control/selectorwidgetbase.py +42 -11
  147. tomwer/gui/control/serie/seriecreator.py +967 -0
  148. tomwer/{web/__init__.py → gui/control/serie/seriewaiter.py} +5 -7
  149. tomwer/gui/control/singletomoobj.py +15 -3
  150. tomwer/gui/control/test/test_datalist.py +1 -1
  151. tomwer/gui/control/test/test_datalistener.py +1 -1
  152. tomwer/gui/control/test/test_inputwidget.py +1 -1
  153. tomwer/gui/control/test/test_process_manager.py +1 -13
  154. tomwer/gui/control/test/test_scanselector.py +1 -1
  155. tomwer/gui/control/test/test_scanvalidator.py +1 -1
  156. tomwer/gui/control/test/test_single_tomo_obj.py +1 -1
  157. tomwer/gui/control/test/test_volume_dialog.py +19 -7
  158. tomwer/gui/control/test/test_volumeselector.py +4 -4
  159. tomwer/gui/debugtools/datasetgenerator.py +1 -8
  160. tomwer/gui/edit/dkrfpatch.py +2 -2
  161. tomwer/gui/edit/imagekeyeditor.py +12 -9
  162. tomwer/gui/edit/nxtomoeditor.py +475 -0
  163. tomwer/gui/edit/test/test_dkrf_patch.py +2 -14
  164. tomwer/gui/edit/test/test_image_key_editor.py +2 -2
  165. tomwer/gui/edit/test/test_nx_editor.py +155 -0
  166. tomwer/gui/qfolderdialog.py +11 -0
  167. tomwer/gui/reconstruction/axis/CompareImages.py +27 -29
  168. tomwer/gui/reconstruction/axis/axis.py +2 -0
  169. tomwer/gui/reconstruction/axis/radioaxis.py +67 -11
  170. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +7 -9
  171. tomwer/gui/reconstruction/darkref/darkrefwidget.py +22 -24
  172. tomwer/gui/reconstruction/lamino/tofu/projections.py +1 -1
  173. tomwer/gui/reconstruction/lamino/tofu/tofu.py +3 -3
  174. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +4 -4
  175. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +10 -4
  176. tomwer/gui/reconstruction/nabu/castvolume.py +80 -11
  177. tomwer/gui/reconstruction/nabu/check.py +1 -1
  178. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +352 -0
  179. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +0 -9
  180. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +1 -1
  181. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +18 -19
  182. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +30 -7
  183. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +26 -13
  184. tomwer/gui/reconstruction/nabu/slices.py +10 -2
  185. tomwer/gui/reconstruction/nabu/slurm.py +1 -1
  186. tomwer/gui/reconstruction/nabu/volume.py +13 -7
  187. tomwer/gui/reconstruction/normalization/intensity.py +1 -1
  188. tomwer/gui/reconstruction/saaxis/corrangeselector.py +10 -34
  189. tomwer/gui/reconstruction/saaxis/saaxis.py +11 -6
  190. tomwer/gui/reconstruction/saaxis/sliceselector.py +11 -26
  191. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +13 -8
  192. tomwer/gui/reconstruction/scores/scoreplot.py +67 -61
  193. tomwer/gui/reconstruction/test/test_axis.py +2 -2
  194. tomwer/gui/reconstruction/test/test_lamino.py +2 -2
  195. tomwer/gui/reconstruction/test/test_nabu.py +14 -1
  196. tomwer/gui/reconstruction/test/test_saaxis.py +8 -17
  197. tomwer/gui/reconstruction/test/test_sadeltabeta.py +7 -13
  198. tomwer/gui/stackplot.py +11 -28
  199. tomwer/gui/test/test_axis_gui.py +4 -4
  200. tomwer/gui/test/test_qfolder_dialog.py +12 -0
  201. tomwer/gui/utils/inputwidget.py +42 -21
  202. tomwer/gui/utils/lineselector/lineselector.py +13 -21
  203. tomwer/gui/utils/scandescription.py +2 -4
  204. tomwer/gui/utils/slider.py +1 -102
  205. tomwer/gui/utils/unitsystem.py +48 -11
  206. tomwer/gui/visualization/dataviewer.py +24 -17
  207. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -11
  208. tomwer/gui/visualization/nxtomometadata.py +21 -0
  209. tomwer/gui/visualization/scanoverview.py +0 -1
  210. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +72 -0
  211. tomwer/gui/visualization/test/test_stacks.py +1 -1
  212. tomwer/gui/visualization/tomoobjoverview.py +49 -0
  213. tomwer/gui/visualization/volumeoverview.py +64 -0
  214. tomwer/gui/visualization/volumeviewer.py +1 -1
  215. tomwer/resources/gui/icons/multi-document-save.png +0 -0
  216. tomwer/resources/gui/icons/multi-document-save.svg +101 -0
  217. tomwer/resources/gui/illustrations/ctf_z1.png +0 -0
  218. tomwer/resources/gui/illustrations/ctf_z1.svg +471 -0
  219. tomwer/synctools/datalistener.py +5 -1
  220. tomwer/synctools/imageloaderthread.py +2 -2
  221. tomwer/synctools/stacks/edit/imagekeyeditor.py +1 -1
  222. tomwer/synctools/stacks/processingstack.py +2 -2
  223. tomwer/synctools/stacks/reconstruction/castvolume.py +1 -0
  224. tomwer/synctools/stacks/reconstruction/lamino.py +1 -3
  225. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +0 -2
  226. tomwer/synctools/test/test_darkRefs.py +32 -149
  227. tomwer/synctools/test/test_foldertransfer.py +1 -1
  228. tomwer/synctools/test/test_scanstages.py +2 -2
  229. tomwer/tests/__init__.py +0 -0
  230. tomwer/tests/conftest.py +51 -0
  231. tomwer/{test → tests}/test_scripts.py +1 -1
  232. tomwer/tests/test_utils.py +10 -0
  233. tomwer/{test → tests}/utils/utilstest.py +0 -11
  234. tomwer/version.py +3 -3
  235. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/METADATA +14 -16
  236. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/RECORD +245 -217
  237. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/WHEEL +1 -1
  238. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/entry_points.txt +6 -0
  239. orangecontrib/tomwer/setup.py +0 -45
  240. orangecontrib/tomwer/widgets/setup.py +0 -49
  241. tomwer/app/process.py +0 -153
  242. tomwer/core/process/reconstruction/nabu/slurm.py +0 -36
  243. tomwer/core/process/reconstruction/utils/nabu_slice_exec.py +0 -10
  244. tomwer/core/utils/laminoutils.py +0 -80
  245. tomwer/gui/utils/lineselector/lineselection.py +0 -76
  246. tomwer/setup.py +0 -52
  247. tomwer/web/client.py +0 -43
  248. tomwer/web/config.py +0 -36
  249. tomwer/web/test/test_graylog_connection.py +0 -59
  250. {tomwer/test → orangecontrib/tomwer/tutorials}/__init__.py +0 -0
  251. /tomwer/{web/test → gui/control/serie}/__init__.py +0 -0
  252. /tomwer/{test → tests}/utils/__init__.py +0 -0
  253. /tomwer-1.0.4-py3.8-nspkg.pth → /tomwer-1.1.0-py3.9-nspkg.pth +0 -0
  254. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/LICENSE +0 -0
  255. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/namespace_packages.txt +0 -0
  256. {tomwer-1.0.4.dist-info → tomwer-1.1.0.dist-info}/top_level.txt +0 -0
@@ -37,9 +37,9 @@ from silx.gui.utils.testutils import TestCaseQt
37
37
  from tomwer.core.utils.scanutils import MockEDF
38
38
  from tomwer.core.process.reconstruction.darkref.darkrefs import DarkRefs
39
39
  from tomwer.core.process.reconstruction.darkref.params import DKRFRP
40
- from tomwer.core.process.reconstruction.darkref.params import Method
40
+ from tomwer.core.process.reconstruction.darkref.params import ReduceMethod
41
41
  from tomwer.core.scan.scanfactory import ScanFactory
42
- from tomwer.test.utils import UtilsTest
42
+ from tomwer.tests.utils import UtilsTest
43
43
 
44
44
 
45
45
  class TestDarkRefsBehavior(TestCaseQt):
@@ -74,8 +74,8 @@ class TestDarkRefsBehavior(TestCaseQt):
74
74
 
75
75
  def testDarkCreation(self):
76
76
  """Test that the dark is correctly computed"""
77
- self.recons_params.ref_calc_method = Method.none
78
- self.recons_params.dark_calc_method = Method.median
77
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
78
+ self.recons_params.dark_calc_method = ReduceMethod.MEDIAN
79
79
 
80
80
  dar_ref_process = DarkRefs(
81
81
  inputs={
@@ -101,7 +101,7 @@ class TestDarkRefsBehavior(TestCaseQt):
101
101
  self.assertEqual(
102
102
  len(
103
103
  dar_ref_process.getRefHSTFiles(
104
- self.dataset_folder, prefix=self.recons_params.ref_prefix
104
+ self.dataset_folder, prefix=self.recons_params.flat_prefix
105
105
  )
106
106
  ),
107
107
  0,
@@ -109,8 +109,8 @@ class TestDarkRefsBehavior(TestCaseQt):
109
109
 
110
110
  def testRefCreation(self):
111
111
  """Test that the dark is correctly computed"""
112
- self.recons_params.ref_calc_method = Method.median
113
- self.recons_params.dark_calc_method = Method.none
112
+ self.recons_params.flat_calc_method = ReduceMethod.MEDIAN
113
+ self.recons_params.dark_calc_method = ReduceMethod.NONE
114
114
 
115
115
  dar_ref_process = DarkRefs(
116
116
  inputs={
@@ -132,66 +132,6 @@ class TestDarkRefsBehavior(TestCaseQt):
132
132
  self.assertTrue("ref0001_0000.edf" in os.listdir(self.dataset_folder))
133
133
  self.assertTrue("ref0001_0020.edf" in os.listdir(self.dataset_folder))
134
134
 
135
- def testRemoveOption(self):
136
- """Test that the remove option is working"""
137
- self.recons_params.ref_calc_method = Method.none
138
- self.recons_params.dark_calc_method = Method.none
139
- self.recons_params._set_remove_opt(True)
140
- dar_ref_process = DarkRefs(
141
- inputs={
142
- "dark_ref_params": self.recons_params,
143
- "force_sync": True,
144
- "darkhst_prefix": "darkHST",
145
- "data": self.dataset_folder,
146
- }
147
- )
148
- dar_ref_process.run()
149
- self.qapp.processEvents()
150
- self.assertFalse("darkend0000.edf" in os.listdir(self.dataset_folder))
151
- self.assertFalse("dark0000.edf" in os.listdir(self.dataset_folder))
152
- self.assertFalse("refHST0000.edf" in os.listdir(self.dataset_folder))
153
- self.assertFalse("refHST0020.edf" in os.listdir(self.dataset_folder))
154
- self.assertFalse("ref0000_0000.edf" in os.listdir(self.dataset_folder))
155
- self.assertFalse("ref0000_0020.edf" in os.listdir(self.dataset_folder))
156
- self.assertFalse("ref0001_0000.edf" in os.listdir(self.dataset_folder))
157
- self.assertFalse("ref0001_0020.edf" in os.listdir(self.dataset_folder))
158
-
159
- def testSkipOption(self):
160
- """Test that the overwrite option is working"""
161
- self.recons_params.ref_calc_method = Method.none
162
- self.recons_params.dark_calc_method = Method.none
163
- self.recons_params._set_skip_if_exist(True)
164
-
165
- iniRefNFile = len(
166
- DarkRefs.getRefHSTFiles(
167
- self.dataset_folder, prefix=self.recons_params.ref_prefix
168
- )
169
- )
170
- iniDarkNFile = len(
171
- DarkRefs.getDarkHSTFiles(
172
- self.dataset_folder, prefix=self.recons_params.dark_prefix
173
- )
174
- )
175
-
176
- dar_ref_process = DarkRefs(
177
- inputs={
178
- "dark_ref_params": self.recons_params,
179
- "force_sync": True,
180
- "darkhst_prefix": "darkHST",
181
- "data": self.dataset_folder,
182
- }
183
- )
184
- dar_ref_process.run()
185
- self.qapp.processEvents()
186
- refs = DarkRefs.getRefHSTFiles(
187
- self.dataset_folder, prefix=self.recons_params.ref_prefix
188
- )
189
- darks = DarkRefs.getDarkHSTFiles(
190
- self.dataset_folder, prefix=self.recons_params.dark_prefix
191
- )
192
- self.assertTrue(len(refs) == iniRefNFile)
193
- self.assertTrue(len(darks) == iniDarkNFile)
194
-
195
135
 
196
136
  class TestRefCalculationOneSerie(TestCaseQt):
197
137
  """
@@ -228,15 +168,15 @@ class TestRefCalculationOneSerie(TestCaseQt):
228
168
  }
229
169
  )
230
170
  self.darkRef.setForceSync(True)
231
- self.recons_params.ref_pattern = "ref*.*[0-9]{3,4}_[0-9]{3,4}"
171
+ self.recons_params.flat_pattern = "ref*.*[0-9]{3,4}_[0-9]{3,4}"
232
172
 
233
173
  def tearDown(self):
234
174
  shutil.rmtree(self.tmp_dir)
235
175
  super().tearDown()
236
176
 
237
177
  def testRefMedianCalculation(self):
238
- self.recons_params.ref_calc_method = Method.median
239
- self.recons_params.dark_calc_method = Method.none
178
+ self.recons_params.flat_calc_method = ReduceMethod.MEDIAN
179
+ self.recons_params.dark_calc_method = ReduceMethod.NONE
240
180
  self.darkRef.run()
241
181
  refHST = os.path.join(self.tmp_dir, "refHST0000.edf")
242
182
  self.assertTrue(os.path.isfile(refHST))
@@ -245,8 +185,8 @@ class TestRefCalculationOneSerie(TestCaseQt):
245
185
  )
246
186
 
247
187
  def testRefMeanCalculation(self):
248
- self.recons_params.ref_calc_method = Method.average
249
- self.recons_params.dark_calc_method = Method.none
188
+ self.recons_params.flat_calc_method = ReduceMethod.MEAN
189
+ self.recons_params.dark_calc_method = ReduceMethod.NONE
250
190
  self.darkRef.run()
251
191
  refHST = os.path.join(self.tmp_dir, "refHST0000.edf")
252
192
  self.assertTrue(os.path.isfile(refHST))
@@ -286,15 +226,15 @@ class TestRefCalculationThreeSerie(TestCaseQt):
286
226
  "force_sync": True,
287
227
  }
288
228
  )
289
- self.recons_params.ref_pattern = "ref*.*[0-9]{3,4}_[0-9]{3,4}"
229
+ self.recons_params.flat_pattern = "ref*.*[0-9]{3,4}_[0-9]{3,4}"
290
230
 
291
231
  def tearDown(self):
292
232
  shutil.rmtree(self.tmp_dir)
293
233
  super().tearDown()
294
234
 
295
235
  def testRefMedianCalculation(self):
296
- self.recons_params.ref_calc_method = Method.median
297
- self.recons_params.dark_calc_method = Method.none
236
+ self.recons_params.flat_calc_method = ReduceMethod.MEDIAN
237
+ self.recons_params.dark_calc_method = ReduceMethod.NONE
298
238
  self.darkRef.run()
299
239
  for serie in self.series:
300
240
  refHST = os.path.join(self.tmp_dir, "refHST" + str(serie).zfill(4) + ".edf")
@@ -306,8 +246,8 @@ class TestRefCalculationThreeSerie(TestCaseQt):
306
246
  )
307
247
 
308
248
  def testRefMeanCalculation(self):
309
- self.recons_params.ref_calc_method = Method.average
310
- self.recons_params.dark_calc_method = Method.none
249
+ self.recons_params.flat_calc_method = ReduceMethod.MEAN
250
+ self.recons_params.dark_calc_method = ReduceMethod.NONE
311
251
  self.darkRef.run()
312
252
  for serie in self.series:
313
253
  refHST = os.path.join(self.tmp_dir, "refHST" + str(serie).zfill(4) + ".edf")
@@ -347,8 +287,8 @@ class TestDarkCalculationOneFrame(TestCaseQt):
347
287
  super().tearDown()
348
288
 
349
289
  def testDarkMeanCalculation(self):
350
- self.recons_params.ref_calc_method = Method.none
351
- self.recons_params.dark_calc_method = Method.average
290
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
291
+ self.recons_params.dark_calc_method = ReduceMethod.MEAN
352
292
 
353
293
  self.darkRef.run()
354
294
  refHST = os.path.join(self.tmp_dir, "dark.edf")
@@ -358,8 +298,8 @@ class TestDarkCalculationOneFrame(TestCaseQt):
358
298
  )
359
299
 
360
300
  def testDarkMedianCalculation(self):
361
- self.recons_params.ref_calc_method = Method.none
362
- self.recons_params.dark_calc_method = Method.median
301
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
302
+ self.recons_params.dark_calc_method = ReduceMethod.MEDIAN
363
303
 
364
304
  self.darkRef.run()
365
305
  refHST = os.path.join(self.tmp_dir, "dark.edf")
@@ -402,8 +342,8 @@ class TestDarkCalculation(TestCaseQt):
402
342
  super().tearDown()
403
343
 
404
344
  def testDarkMeanCalculation(self):
405
- self.recons_params.ref_calc_method = Method.none
406
- self.recons_params.dark_calc_method = Method.average
345
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
346
+ self.recons_params.dark_calc_method = ReduceMethod.MEAN
407
347
 
408
348
  self.darkRef.run()
409
349
  refHST = os.path.join(self.tmp_dir, "dark.edf")
@@ -413,8 +353,8 @@ class TestDarkCalculation(TestCaseQt):
413
353
  )
414
354
 
415
355
  def testDarkMedianCalculation(self):
416
- self.recons_params.ref_calc_method = Method.none
417
- self.recons_params.dark_calc_method = Method.median
356
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
357
+ self.recons_params.dark_calc_method = ReduceMethod.MEDIAN
418
358
 
419
359
  self.darkRef.run()
420
360
  refHST = os.path.join(self.tmp_dir, "dark.edf")
@@ -446,8 +386,8 @@ class TestDarkAccumulation(TestCaseQt):
446
386
  os.remove(self.darkFile)
447
387
 
448
388
  self.recons_params = DKRFRP()
449
- self.recons_params.ref_calc_method = Method.none
450
- self.recons_params.dark_calc_method = Method.median
389
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
390
+ self.recons_params.dark_calc_method = ReduceMethod.MEDIAN
451
391
  self.recons_params.dark_pattern = "darkend*"
452
392
  self.recons_params.dark_prefix = "dark.edf"
453
393
 
@@ -481,10 +421,10 @@ class TestPCOTomo(TestCaseQt):
481
421
  MockEDF.fastMockAcquisition(self.tmp_dir)
482
422
 
483
423
  self.recons_params = DKRFRP()
484
- self.recons_params.ref_calc_method = Method.none
485
- self.recons_params.dark_calc_method = Method.none
424
+ self.recons_params.flat_calc_method = ReduceMethod.NONE
425
+ self.recons_params.dark_calc_method = ReduceMethod.NONE
486
426
  self.recons_params.dark_pattern = ".*_dark_.*"
487
- self.recons_params.ref_pattern = ".*_ref_.*"
427
+ self.recons_params.flat_pattern = ".*_ref_.*"
488
428
  self.recons_params._set_remove_opt(True)
489
429
 
490
430
  def copyDataset(self, dataset):
@@ -495,67 +435,10 @@ class TestPCOTomo(TestCaseQt):
495
435
  def tearDown(self):
496
436
  shutil.rmtree(self.tmp_dir)
497
437
 
498
- def testDark3Scan(self):
499
- """
500
- Make sure the processing dark field for
501
- pcotomo_3scan_refdarkbeg_end_download are correct
502
- """
503
- self.dataset = "pcotomo_3scan_refdarkbeg_end_download"
504
- self.copyDataset(self.dataset)
505
- _file = os.path.join(
506
- self.tmp_dir, "pcotomo_3scan_refdarkbeg_end_download", "dark.edf"
507
- )
508
- if os.path.isfile(_file):
509
- os.remove(_file)
510
- self.recons_params.dark_calc_method = Method.median
511
- dar_ref_process = DarkRefs(
512
- inputs={
513
- "dark_ref_params": self.recons_params,
514
- "data": self.scan,
515
- "darkhst_prefix": "darkHST",
516
- "force_sync": True,
517
- }
518
- )
519
- dar_ref_process.run()
520
- darkHSTFiles = DarkRefs.getDarkHSTFiles(
521
- self.scan.path, prefix=self.recons_params.dark_prefix
522
- )
523
- self.assertEqual(len(darkHSTFiles), 2)
524
- dark0000 = os.path.join(self.scan.path, "dark0000.edf")
525
- dark1000 = os.path.join(self.scan.path, "dark1000.edf")
526
- self.assertTrue(dark0000 in darkHSTFiles)
527
- self.assertTrue(dark1000 in darkHSTFiles)
528
-
529
- def testRef3Scan(self):
530
- """
531
- Make sure the processing flat field for
532
- pcotomo_3scan_refdarkbeg_end_download are correct
533
- """
534
- self.dataset = "pcotomo_3scan_refdarkbeg_end_download"
535
- self.copyDataset(self.dataset)
536
- self.recons_params.ref_calc_method = Method.median
537
- dar_ref_process = DarkRefs(
538
- inputs={
539
- "dark_ref_params": self.recons_params,
540
- "data": self.scan,
541
- "darkhst_prefix": "darkHST",
542
- "force_sync": True,
543
- }
544
- )
545
- dar_ref_process.run()
546
- refHSTFiles = DarkRefs.getRefHSTFiles(
547
- self.scan.path, prefix=self.recons_params.ref_prefix
548
- )
549
- self.assertEqual(len(refHSTFiles), 2)
550
- f0000 = os.path.join(self.scan.path, "refHST0000.edf")
551
- self.assertTrue(f0000 in refHSTFiles)
552
- f1000 = os.path.join(self.scan.path, "refHST1000.edf")
553
- self.assertTrue(f1000 in refHSTFiles)
554
-
555
438
  def testDark2x2Scan(self):
556
439
  self.dataset = "pcotomo_2x2scan_refdarkbeg_end_conti"
557
440
  self.copyDataset(self.dataset)
558
- self.recons_params.dark_calc_method = Method.median
441
+ self.recons_params.dark_calc_method = ReduceMethod.MEDIAN
559
442
  dar_ref_process = DarkRefs(
560
443
  inputs={
561
444
  "dark_ref_params": self.recons_params,
@@ -569,7 +452,7 @@ class TestPCOTomo(TestCaseQt):
569
452
  def testRef2x2Scan(self):
570
453
  self.dataset = "pcotomo_2x2scan_refdarkbeg_end_conti"
571
454
  self.copyDataset(self.dataset)
572
- self.recons_params.ref_calc_method = Method.median
455
+ self.recons_params.flat_calc_method = ReduceMethod.MEDIAN
573
456
  dar_ref_process = DarkRefs(
574
457
  inputs={
575
458
  "dark_ref_params": self.recons_params,
@@ -32,7 +32,7 @@ from tomwer.synctools.datatransfert import ScanTransfer
32
32
  from tomwer.core.scan.scanfactory import ScanFactory
33
33
  from tomwer.core.utils import rebaseParFile
34
34
  from tomwer.core.utils.scanutils import MockEDF
35
- from tomwer.test.utils import UtilsTest
35
+ from tomwer.tests.utils import UtilsTest
36
36
  from tomwer.core.scan.hdf5scan import HDF5TomoScan
37
37
  from nxtomomill.converter import from_h5_to_nx
38
38
  from nxtomomill.io.config.hdf5config import TomoHDF5Config
@@ -34,10 +34,10 @@ import os
34
34
  import shutil
35
35
  import glob
36
36
  from collections import namedtuple
37
- from tomwer.test.utils import UtilsTest
37
+ from tomwer.tests.utils import UtilsTest
38
38
  from tomwer.synctools.utils.scanstages import ScanStages
39
39
  from tomwer.core.scan.scanfactory import ScanFactory
40
- from tomwer.test.utils import skip_gui_test
40
+ from tomwer.tests.utils import skip_gui_test
41
41
  import pytest
42
42
 
43
43
  if skip_gui_test() is False:
File without changes
@@ -0,0 +1,51 @@
1
+ import pytest
2
+ from ewoksorange.bindings.qtapp import qtapp_context
3
+ from ewoksorange.bindings.qtapp import get_all_qtwidgets
4
+ import logging
5
+ import gc
6
+
7
+ _logger = logging.getLogger(__name__)
8
+
9
+
10
+ def global_cleanup_orange():
11
+ from orangecanvas.document.suggestions import Suggestions
12
+
13
+ Suggestions.instance = None
14
+
15
+
16
+ def global_cleanup_pytest():
17
+ for obj in gc.get_objects():
18
+ if isinstance(obj, logging.LogRecord):
19
+ obj.exc_info = None # traceback keeps frames which keep locals
20
+
21
+
22
+ def collect_garbage(app):
23
+ if app is None:
24
+ return
25
+ app.processEvents()
26
+ while gc.collect():
27
+ app.processEvents()
28
+
29
+
30
+ @pytest.fixture(scope="session")
31
+ def qtapp():
32
+ """
33
+ create a Qt application if doesn't exists
34
+ """
35
+ with qtapp_context() as app:
36
+ yield app
37
+ collect_garbage(app)
38
+ global_cleanup_orange()
39
+ global_cleanup_pytest()
40
+ collect_garbage(app)
41
+ warn_qtwidgets_alive()
42
+
43
+
44
+ def warn_qtwidgets_alive():
45
+ widgets = get_all_qtwidgets()
46
+ if widgets:
47
+ _logger.warning(
48
+ "%d remaining widgets after tests:\n %s",
49
+ len(widgets),
50
+ "\n ".join(map(str, widgets)),
51
+ )
@@ -37,7 +37,7 @@ import sys
37
37
  import unittest
38
38
  import logging
39
39
  import subprocess
40
- from tomwer.test.utils.utilstest import UtilsTest
40
+ from tomwer.tests.utils.utilstest import UtilsTest
41
41
 
42
42
  _logger = logging.getLogger(__name__)
43
43
 
@@ -0,0 +1,10 @@
1
+ from tomwer.utils import Launcher
2
+
3
+
4
+ def test_launcher():
5
+ launcher = Launcher(prog="tomwer", version="1.0")
6
+ launcher.add_command(
7
+ "canvas", module_name="tomwer.app.canvas", description="open the orange-canvas"
8
+ )
9
+ launcher.print_help()
10
+ launcher.execute_help(["tomwer", "canvas"])
@@ -67,7 +67,6 @@ class TestContext(object):
67
67
  def __init__(self):
68
68
  self.options = None
69
69
  self.timeout = 60 # timeout in seconds for downloading images
70
- # url_base = "http://forge.epn-campus.eu/attachments/download"
71
70
  self.url_base = "http://ftp.edna-site.org/pyFAI/testimages"
72
71
  self.resources = ExternalResources(
73
72
  PACKAGE, timeout=self.timeout, env_key=DATA_KEY, url_base=self.url_base
@@ -86,16 +85,6 @@ class TestContext(object):
86
85
 
87
86
  self._tempdir = None
88
87
 
89
- def deep_reload(self):
90
- self.pyFAI = __import__(self.name)
91
- logger.info("%s loaded from %s", self.name, self.pyFAI.__file__)
92
- sys.modules[self.name] = self.pyFAI
93
- self.reloaded = True
94
- import pyFAI.utils.decorators
95
-
96
- pyFAI.utils.decorators.depreclog.setLevel(logging.ERROR)
97
- return self.pyFAI
98
-
99
88
  def forceBuild(self, remove_first=True):
100
89
  """
101
90
  Force the recompilation of pyFAI
tomwer/version.py CHANGED
@@ -76,10 +76,10 @@ RELEASE_LEVEL_VALUE = {
76
76
  }
77
77
 
78
78
  MAJOR = 1
79
- MINOR = 0
80
- MICRO = 4
79
+ MINOR = 1
80
+ MICRO = 0
81
81
  RELEV = "final" # <16
82
- SERIAL = 0 # <16
82
+ SERIAL = 7 # <16
83
83
 
84
84
  date = __date__
85
85
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tomwer
3
- Version: 1.0.4
3
+ Version: 1.1.0
4
4
  Summary: "tomography workflow tools"
5
5
  Home-page: https://gitlab.esrf.fr/tomotools/tomwer
6
6
  Author: data analysis unit
@@ -25,10 +25,11 @@ Requires-Dist: setuptools
25
25
  Requires-Dist: psutil
26
26
  Requires-Dist: silx (>=1.0)
27
27
  Requires-Dist: tomoscan (>=1.1.2)
28
- Requires-Dist: nxtomomill (>=0.10.0)
29
- Requires-Dist: processview (>=1.0a)
30
- Requires-Dist: ewokscore (>=0.1.0rc11)
28
+ Requires-Dist: nxtomomill (>=0.12.2)
29
+ Requires-Dist: processview (>=1.1)
30
+ Requires-Dist: ewoks (>=0.1.1)
31
31
  Requires-Dist: sluurp (>=0.1)
32
+ Requires-Dist: packaging
32
33
  Provides-Extra: _dev_spec
33
34
  Requires-Dist: black ; extra == '_dev_spec'
34
35
  Requires-Dist: flake8 ; extra == '_dev_spec'
@@ -39,10 +40,9 @@ Requires-Dist: Sphinx (>=4.0.0) ; extra == '_full_base'
39
40
  Requires-Dist: nbsphinx ; extra == '_full_base'
40
41
  Requires-Dist: pandoc ; extra == '_full_base'
41
42
  Requires-Dist: jupyterlab ; extra == '_full_base'
42
- Requires-Dist: nabu (<2023,>=2022.2.0rc5) ; extra == '_full_base'
43
43
  Requires-Dist: orange-canvas-core ; extra == '_full_base'
44
44
  Requires-Dist: orange-widget-base ; extra == '_full_base'
45
- Requires-Dist: ewoksorange (>=0.1.0rc10) ; extra == '_full_base'
45
+ Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == '_full_base'
46
46
  Requires-Dist: rsyncmanager ; extra == '_full_base'
47
47
  Requires-Dist: graypy ; extra == '_full_base'
48
48
  Requires-Dist: fabio ; extra == '_full_base'
@@ -64,10 +64,9 @@ Requires-Dist: Sphinx (>=4.0.0) ; extra == 'dev'
64
64
  Requires-Dist: nbsphinx ; extra == 'dev'
65
65
  Requires-Dist: pandoc ; extra == 'dev'
66
66
  Requires-Dist: jupyterlab ; extra == 'dev'
67
- Requires-Dist: nabu (<2023,>=2022.2.0rc5) ; extra == 'dev'
68
67
  Requires-Dist: orange-canvas-core ; extra == 'dev'
69
68
  Requires-Dist: orange-widget-base ; extra == 'dev'
70
- Requires-Dist: ewoksorange (>=0.1.0rc10) ; extra == 'dev'
69
+ Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'dev'
71
70
  Requires-Dist: rsyncmanager ; extra == 'dev'
72
71
  Requires-Dist: graypy ; extra == 'dev'
73
72
  Requires-Dist: fabio ; extra == 'dev'
@@ -84,7 +83,7 @@ Requires-Dist: resource ; extra == 'dev'
84
83
  Requires-Dist: tifffile ; extra == 'dev'
85
84
  Requires-Dist: opencv-python ; extra == 'dev'
86
85
  Requires-Dist: hdf5plugin ; extra == 'dev'
87
- Requires-Dist: nabu[full] (<2023,>=2022.2.0rc5) ; extra == 'dev'
86
+ Requires-Dist: nabu[full] (>=2023) ; extra == 'dev'
88
87
  Requires-Dist: pycuda ; extra == 'dev'
89
88
  Requires-Dist: scikit-cuda ; extra == 'dev'
90
89
  Requires-Dist: black ; extra == 'dev'
@@ -96,10 +95,9 @@ Requires-Dist: Sphinx (>=4.0.0) ; extra == 'dev_no_cuda'
96
95
  Requires-Dist: nbsphinx ; extra == 'dev_no_cuda'
97
96
  Requires-Dist: pandoc ; extra == 'dev_no_cuda'
98
97
  Requires-Dist: jupyterlab ; extra == 'dev_no_cuda'
99
- Requires-Dist: nabu (<2023,>=2022.2.0rc5) ; extra == 'dev_no_cuda'
100
98
  Requires-Dist: orange-canvas-core ; extra == 'dev_no_cuda'
101
99
  Requires-Dist: orange-widget-base ; extra == 'dev_no_cuda'
102
- Requires-Dist: ewoksorange (>=0.1.0rc10) ; extra == 'dev_no_cuda'
100
+ Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'dev_no_cuda'
103
101
  Requires-Dist: rsyncmanager ; extra == 'dev_no_cuda'
104
102
  Requires-Dist: graypy ; extra == 'dev_no_cuda'
105
103
  Requires-Dist: fabio ; extra == 'dev_no_cuda'
@@ -116,6 +114,7 @@ Requires-Dist: resource ; extra == 'dev_no_cuda'
116
114
  Requires-Dist: tifffile ; extra == 'dev_no_cuda'
117
115
  Requires-Dist: opencv-python ; extra == 'dev_no_cuda'
118
116
  Requires-Dist: hdf5plugin ; extra == 'dev_no_cuda'
117
+ Requires-Dist: nabu (>=2023) ; extra == 'dev_no_cuda'
119
118
  Requires-Dist: black ; extra == 'dev_no_cuda'
120
119
  Requires-Dist: flake8 ; extra == 'dev_no_cuda'
121
120
  Requires-Dist: timeout-decorator ; extra == 'dev_no_cuda'
@@ -130,10 +129,9 @@ Requires-Dist: Sphinx (>=4.0.0) ; extra == 'full'
130
129
  Requires-Dist: nbsphinx ; extra == 'full'
131
130
  Requires-Dist: pandoc ; extra == 'full'
132
131
  Requires-Dist: jupyterlab ; extra == 'full'
133
- Requires-Dist: nabu (<2023,>=2022.2.0rc5) ; extra == 'full'
134
132
  Requires-Dist: orange-canvas-core ; extra == 'full'
135
133
  Requires-Dist: orange-widget-base ; extra == 'full'
136
- Requires-Dist: ewoksorange (>=0.1.0rc10) ; extra == 'full'
134
+ Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'full'
137
135
  Requires-Dist: rsyncmanager ; extra == 'full'
138
136
  Requires-Dist: graypy ; extra == 'full'
139
137
  Requires-Dist: fabio ; extra == 'full'
@@ -150,7 +148,7 @@ Requires-Dist: resource ; extra == 'full'
150
148
  Requires-Dist: tifffile ; extra == 'full'
151
149
  Requires-Dist: opencv-python ; extra == 'full'
152
150
  Requires-Dist: hdf5plugin ; extra == 'full'
153
- Requires-Dist: nabu[full] (<2023,>=2022.2.0rc5) ; extra == 'full'
151
+ Requires-Dist: nabu[full] (>=2023) ; extra == 'full'
154
152
  Requires-Dist: pycuda ; extra == 'full'
155
153
  Requires-Dist: scikit-cuda ; extra == 'full'
156
154
  Provides-Extra: full_no_cuda
@@ -158,10 +156,9 @@ Requires-Dist: Sphinx (>=4.0.0) ; extra == 'full_no_cuda'
158
156
  Requires-Dist: nbsphinx ; extra == 'full_no_cuda'
159
157
  Requires-Dist: pandoc ; extra == 'full_no_cuda'
160
158
  Requires-Dist: jupyterlab ; extra == 'full_no_cuda'
161
- Requires-Dist: nabu (<2023,>=2022.2.0rc5) ; extra == 'full_no_cuda'
162
159
  Requires-Dist: orange-canvas-core ; extra == 'full_no_cuda'
163
160
  Requires-Dist: orange-widget-base ; extra == 'full_no_cuda'
164
- Requires-Dist: ewoksorange (>=0.1.0rc10) ; extra == 'full_no_cuda'
161
+ Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'full_no_cuda'
165
162
  Requires-Dist: rsyncmanager ; extra == 'full_no_cuda'
166
163
  Requires-Dist: graypy ; extra == 'full_no_cuda'
167
164
  Requires-Dist: fabio ; extra == 'full_no_cuda'
@@ -178,6 +175,7 @@ Requires-Dist: resource ; extra == 'full_no_cuda'
178
175
  Requires-Dist: tifffile ; extra == 'full_no_cuda'
179
176
  Requires-Dist: opencv-python ; extra == 'full_no_cuda'
180
177
  Requires-Dist: hdf5plugin ; extra == 'full_no_cuda'
178
+ Requires-Dist: nabu (>=2023) ; extra == 'full_no_cuda'
181
179
  Provides-Extra: setup_requires
182
180
  Requires-Dist: setuptools ; extra == 'setup_requires'
183
181
  Requires-Dist: numpy (>=1.12) ; extra == 'setup_requires'