tomwer 1.3.0.dev2__py3-none-any.whl → 1.3.0rc10__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 (156) hide show
  1. orangecontrib/tomwer/widgets/__init__.py +11 -12
  2. orangecontrib/tomwer/widgets/control/DataListenerOW.py +6 -6
  3. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +6 -6
  4. orangecontrib/tomwer/widgets/control/NXTomomillMixIn.py +3 -3
  5. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +10 -8
  6. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +6 -6
  7. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +1 -1
  8. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +98 -98
  9. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +129 -129
  10. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +13 -12
  11. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +11 -9
  12. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +11 -9
  13. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +12 -15
  14. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +9 -9
  15. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -1
  16. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +0 -1
  17. tomwer/__main__.py +0 -10
  18. tomwer/app/canvas_launcher/config.py +3 -3
  19. tomwer/app/canvas_launcher/environ.py +1 -0
  20. tomwer/app/intensitynormalization.py +12 -11
  21. tomwer/app/nabuapp.py +0 -11
  22. tomwer/app/zstitching.py +11 -1
  23. tomwer/core/process/control/datalistener/datalistener.py +15 -10
  24. tomwer/core/process/control/nxtomomill.py +1 -1
  25. tomwer/core/process/control/scantransfer.py +8 -32
  26. tomwer/core/process/edit/darkflatpatch.py +8 -9
  27. tomwer/core/process/edit/imagekeyeditor.py +20 -22
  28. tomwer/core/process/icat/screenshots.py +1 -0
  29. tomwer/core/process/reconstruction/axis/axis.py +263 -59
  30. tomwer/core/process/reconstruction/axis/mode.py +161 -50
  31. tomwer/core/process/reconstruction/axis/params.py +23 -20
  32. tomwer/core/process/reconstruction/darkref/darkrefs.py +12 -13
  33. tomwer/core/process/reconstruction/nabu/castvolume.py +3 -3
  34. tomwer/core/process/reconstruction/nabu/nabucommon.py +43 -19
  35. tomwer/core/process/reconstruction/nabu/nabuscores.py +34 -7
  36. tomwer/core/process/reconstruction/nabu/nabuslices.py +81 -26
  37. tomwer/core/process/reconstruction/nabu/nabuvolume.py +31 -26
  38. tomwer/core/process/reconstruction/nabu/plane.py +9 -0
  39. tomwer/core/process/reconstruction/nabu/utils.py +32 -9
  40. tomwer/core/process/reconstruction/saaxis/saaxis.py +4 -1
  41. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +9 -1
  42. tomwer/core/process/reconstruction/scores/params.py +3 -3
  43. tomwer/core/process/reconstruction/test/test_darkref_copy.py +4 -4
  44. tomwer/core/process/stitching/nabustitcher.py +11 -10
  45. tomwer/core/process/task.py +33 -27
  46. tomwer/core/process/test/test_axis.py +7 -6
  47. tomwer/core/process/test/test_data_transfer.py +3 -3
  48. tomwer/core/process/test/test_nabu.py +10 -2
  49. tomwer/core/process/test/test_normalization.py +2 -2
  50. tomwer/core/scan/blissscan.py +3 -3
  51. tomwer/core/scan/edfscan.py +9 -9
  52. tomwer/core/scan/nxtomoscan.py +11 -11
  53. tomwer/core/scan/scanbase.py +31 -24
  54. tomwer/core/scan/test/test_future_scan.py +1 -1
  55. tomwer/core/scan/test/test_h5.py +4 -4
  56. tomwer/core/scan/test/test_process_registration.py +2 -2
  57. tomwer/core/scan/test/test_scan.py +1 -75
  58. tomwer/core/settings.py +3 -3
  59. tomwer/core/test/test_utils.py +2 -2
  60. tomwer/core/volume/edfvolume.py +6 -6
  61. tomwer/core/volume/hdf5volume.py +6 -6
  62. tomwer/core/volume/jp2kvolume.py +6 -6
  63. tomwer/core/volume/rawvolume.py +6 -6
  64. tomwer/core/volume/tiffvolume.py +12 -12
  65. tomwer/gui/cluster/slurm.py +14 -9
  66. tomwer/gui/cluster/supervisor.py +12 -0
  67. tomwer/gui/cluster/test/test_cluster.py +1 -2
  68. tomwer/gui/cluster/test/test_supervisor.py +1 -1
  69. tomwer/gui/control/datalist.py +5 -0
  70. tomwer/gui/control/datawatcher/controlwidget.py +2 -4
  71. tomwer/gui/control/reducedarkflatselector.py +8 -8
  72. tomwer/gui/control/test/test_single_tomo_obj.py +1 -1
  73. tomwer/gui/edit/dkrfpatch.py +4 -4
  74. tomwer/gui/edit/nxtomowarmer.py +2 -2
  75. tomwer/gui/edit/test/test_dkrf_patch.py +6 -6
  76. tomwer/gui/imagefromfile.py +2 -2
  77. tomwer/gui/qfolderdialog.py +5 -0
  78. tomwer/gui/reconstruction/axis/CompareImages.py +94 -168
  79. tomwer/gui/reconstruction/axis/radioaxis.py +58 -182
  80. tomwer/gui/reconstruction/darkref/darkrefwidget.py +2 -1
  81. tomwer/gui/reconstruction/nabu/castvolume.py +8 -1
  82. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +54 -21
  83. tomwer/gui/reconstruction/normalization/intensity.py +3 -25
  84. tomwer/gui/reconstruction/saaxis/corrangeselector.py +1 -1
  85. tomwer/gui/reconstruction/saaxis/saaxis.py +1 -11
  86. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +0 -10
  87. tomwer/gui/reconstruction/scores/scoreplot.py +1 -6
  88. tomwer/gui/reconstruction/test/test_axis.py +18 -4
  89. tomwer/gui/reconstruction/test/test_nabu.py +3 -0
  90. tomwer/gui/stitching/stitching.py +2 -2
  91. tomwer/gui/stitching/stitching_preview.py +7 -53
  92. tomwer/gui/stitching/stitching_raw.py +3 -3
  93. tomwer/gui/utils/inputwidget.py +12 -2
  94. tomwer/gui/utils/lineselector/lineselector.py +1 -1
  95. tomwer/gui/visualization/dataviewer.py +47 -17
  96. tomwer/gui/visualization/sinogramviewer.py +19 -26
  97. tomwer/gui/visualization/test/test_volumeviewer.py +64 -66
  98. tomwer/gui/visualization/volumeviewer.py +105 -105
  99. tomwer/io/utils/h5pyutils.py +7 -3
  100. tomwer/io/utils/utils.py +3 -3
  101. tomwer/resources/gui/icons/parameters.svg +1 -1
  102. tomwer/resources/gui/illustrations/no_rot.svg +1 -1
  103. tomwer/synctools/stacks/edit/darkflatpatch.py +17 -12
  104. tomwer/tests/test_scripts.py +0 -3
  105. tomwer/third_part/WaitingOverlay.py +110 -0
  106. tomwer/third_part/__init__.py +0 -0
  107. tomwer/version.py +2 -2
  108. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/METADATA +32 -31
  109. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/RECORD +115 -153
  110. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/WHEEL +1 -1
  111. orangecontrib/tomwer/widgets/reconstruction/TofuOW.py +0 -197
  112. orangecontrib/tomwer/widgets/reconstruction/icons/XY_lamino.svg +0 -168
  113. orangecontrib/tomwer/widgets/reconstruction/icons/XZ_lamino.svg +0 -275
  114. orangecontrib/tomwer/widgets/reconstruction/icons/YZ_lamino.svg +0 -182
  115. tomwer/app/lamino.py +0 -143
  116. tomwer/core/process/reconstruction/lamino/__init__.py +0 -1
  117. tomwer/core/process/reconstruction/lamino/tofu.py +0 -1000
  118. tomwer/core/process/test/test_lamino.py +0 -76
  119. tomwer/core/test/test_lamino.py +0 -92
  120. tomwer/gui/reconstruction/lamino/__init__.py +0 -31
  121. tomwer/gui/reconstruction/lamino/tofu/TofuOptionLoader.py +0 -107
  122. tomwer/gui/reconstruction/lamino/tofu/__init__.py +0 -1
  123. tomwer/gui/reconstruction/lamino/tofu/misc.py +0 -148
  124. tomwer/gui/reconstruction/lamino/tofu/projections.py +0 -896
  125. tomwer/gui/reconstruction/lamino/tofu/settings.py +0 -75
  126. tomwer/gui/reconstruction/lamino/tofu/tofu.py +0 -432
  127. tomwer/gui/reconstruction/lamino/tofu/tofuexpert.py +0 -567
  128. tomwer/gui/reconstruction/lamino/tofu/tofuoutput.py +0 -757
  129. tomwer/gui/reconstruction/test/test_lamino.py +0 -194
  130. tomwer/resources/gui/icons/lamino_parameters.svg +0 -70
  131. tomwer/resources/gui/illustrations/lamino_angle.png +0 -0
  132. tomwer/resources/gui/illustrations/lamino_angle.svg +0 -509
  133. tomwer/resources/gui/illustrations/lamino_beta_angle.png +0 -0
  134. tomwer/resources/gui/illustrations/lamino_beta_angle.svg +0 -97
  135. tomwer/resources/gui/illustrations/lamino_theta_angle.png +0 -0
  136. tomwer/resources/gui/illustrations/lamino_theta_angle.svg +0 -368
  137. tomwer/resources/gui/illustrations/manual_slice.png +0 -0
  138. tomwer/resources/gui/illustrations/manual_slice.svg +0 -221
  139. tomwer/resources/gui/illustrations/psi_angle.png +0 -0
  140. tomwer/resources/gui/illustrations/psi_angle.svg +0 -479
  141. tomwer/resources/gui/illustrations/rotation_center.png +0 -0
  142. tomwer/resources/gui/illustrations/rotation_center.svg +0 -276
  143. tomwer/resources/gui/illustrations/slice_stack.png +0 -0
  144. tomwer/resources/gui/illustrations/slice_stack.svg +0 -266
  145. tomwer/resources/gui/illustrations/xy_slice.png +0 -0
  146. tomwer/resources/gui/illustrations/xy_slice.svg +0 -269
  147. tomwer/resources/gui/illustrations/xz_slice.png +0 -0
  148. tomwer/resources/gui/illustrations/xz_slice.svg +0 -270
  149. tomwer/resources/gui/illustrations/yz_slice.png +0 -0
  150. tomwer/resources/gui/illustrations/yz_slice.svg +0 -270
  151. tomwer/synctools/stacks/reconstruction/lamino.py +0 -233
  152. /tomwer-1.3.0.dev2-py3.11-nspkg.pth → /tomwer-1.3.0rc10-py3.11-nspkg.pth +0 -0
  153. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/LICENSE +0 -0
  154. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/entry_points.txt +0 -0
  155. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/namespace_packages.txt +0 -0
  156. {tomwer-1.3.0.dev2.dist-info → tomwer-1.3.0rc10.dist-info}/top_level.txt +0 -0
@@ -35,7 +35,7 @@ import contextlib
35
35
 
36
36
  import h5py
37
37
  from silx.io.url import DataUrl
38
- from tomoscan.io import HDF5File
38
+ from tomoscan.io import HDF5File, get_swmr_mode
39
39
 
40
40
 
41
41
  class _BaseReader(contextlib.AbstractContextManager):
@@ -60,7 +60,9 @@ class EntryReader(_BaseReader):
60
60
  """Context manager used to read a bliss node"""
61
61
 
62
62
  def __enter__(self):
63
- self._file_handler = HDF5File(filename=self._url.file_path(), mode="r")
63
+ self._file_handler = HDF5File(
64
+ filename=self._url.file_path(), mode="r", swmr=get_swmr_mode()
65
+ )
64
66
  entry = self._file_handler[self._url.data_path()]
65
67
  if not isinstance(entry, h5py.Group):
66
68
  raise ValueError("Data path should point to a bliss node (h5py.Group)")
@@ -71,7 +73,9 @@ class DatasetReader(_BaseReader):
71
73
  """Context manager used to read a bliss node"""
72
74
 
73
75
  def __enter__(self):
74
- self._file_handler = HDF5File(filename=self._url.file_path(), mode="r")
76
+ self._file_handler = HDF5File(
77
+ filename=self._url.file_path(), mode="r", swmr=get_swmr_mode()
78
+ )
75
79
  entry = self._file_handler[self._url.data_path()]
76
80
  if not isinstance(entry, h5py.Dataset):
77
81
  raise ValueError("Data path should point to a dtaset (h5py.Dataset)")
tomwer/io/utils/utils.py CHANGED
@@ -39,7 +39,7 @@ import numpy.lib.npyio
39
39
  from PIL import Image
40
40
  from tomoscan.esrf import has_glymur
41
41
  from tomoscan.esrf.scan.utils import get_data as tomoscan_get_data
42
- from tomoscan.io import HDF5File
42
+ from tomoscan.io import HDF5File, get_swmr_mode
43
43
  from typing import Union
44
44
 
45
45
  from tomwer.core.utils import ftseriesutils
@@ -201,7 +201,7 @@ def get_linked_files_with_entry(hdf5_file: str, entry: str) -> set:
201
201
  if item in treated_items:
202
202
  continue
203
203
  dirname = os.path.dirname(abs_file_path)
204
- with HDF5File(abs_file_path, mode="r") as h5f:
204
+ with HDF5File(abs_file_path, mode="r", swmr=get_swmr_mode()) as h5f:
205
205
  node = h5f.get(data_path, getlink=True)
206
206
  if isinstance(node, h5py.ExternalLink):
207
207
  ext_file_path = node.filename
@@ -252,7 +252,7 @@ def get_linked_files_with_vds(hdf5_file: str, dataset_path: str) -> set:
252
252
  if item in treated_items:
253
253
  continue
254
254
  dirname = os.path.dirname(abs_file_path)
255
- with HDF5File(abs_file_path, mode="r") as h5f:
255
+ with HDF5File(abs_file_path, mode="r", swmr=get_swmr_mode()) as h5f:
256
256
  dataset = h5f[dataset_path]
257
257
  if dataset.is_virtual:
258
258
  for vs_info in dataset.virtual_sources():
@@ -14,7 +14,7 @@
14
14
  id="svg2985"
15
15
  version="1.1"
16
16
  inkscape:version="0.48.5 r10040"
17
- sodipodi:docname="lamino_parameters.svg"
17
+ sodipodi:docname="parameters.svg"
18
18
  inkscape:export-filename="/nobackup/linazimov/payno/dev/esrf/ID06/id06workflow/resources/gui/icons/input.png"
19
19
  inkscape:export-xdpi="200"
20
20
  inkscape:export-ydpi="200">
@@ -14,7 +14,7 @@
14
14
  height="160"
15
15
  version="1.1"
16
16
  inkscape:version="0.48.5 r10040"
17
- sodipodi:docname="lamino_beta_angle.svg">
17
+ sodipodi:docname="no_rot.svg">
18
18
  <sodipodi:namedview
19
19
  pagecolor="#ffffff"
20
20
  bordercolor="#666666"
@@ -142,18 +142,23 @@ class _DarkFlatPatchProcessingThread(ProcessingThread, SuperviseProcess):
142
142
  for key in keys:
143
143
  if isinstance(configuration_to_dump[key], DataUrl):
144
144
  configuration_to_dump[key] = configuration_to_dump[key].path()
145
- try:
146
- darkflatpatch.DarkFlatPatchTask._register_process(
147
- process_file=self._scan.process_file,
148
- entry=entry,
149
- configuration=configuration_to_dump,
150
- results={},
151
- process=darkflatpatch.DarkFlatPatchTask,
152
- process_index=index,
153
- overwrite=True,
154
- )
155
- except Exception as e:
156
- _logger.warning(f"Fail to register DarkFlatPatch process. Reason is {e}")
145
+
146
+ with self._scan.acquire_process_file_lock():
147
+
148
+ try:
149
+ darkflatpatch.DarkFlatPatchTask._register_process(
150
+ process_file=self._scan.process_file,
151
+ entry=entry,
152
+ configuration=configuration_to_dump,
153
+ results={},
154
+ process=darkflatpatch.DarkFlatPatchTask,
155
+ process_index=index,
156
+ overwrite=True,
157
+ )
158
+ except Exception as e:
159
+ _logger.warning(
160
+ f"Fail to register DarkFlatPatch process. Reason is {e}"
161
+ )
157
162
  info = f"Dark-flat patched for {self._scan}."
158
163
  _logger.processSucceed(info)
159
164
  ProcessManager().notify_dataset_state(
@@ -79,9 +79,6 @@ class TestScriptsHelp(unittest.TestCase):
79
79
  "intensity-normalization", "tomwer.app.intensitynormalization"
80
80
  )
81
81
 
82
- def testLamino(self):
83
- self.executeAppHelp("lamino", "tomwer.app.lamino")
84
-
85
82
  def testMulticor(self):
86
83
  self.executeAppHelp("multicor", "tomwer.app.multicor")
87
84
 
@@ -0,0 +1,110 @@
1
+ from typing import Optional
2
+ from silx.gui.widgets.WaitingPushButton import WaitingPushButton
3
+ from silx.gui import qt
4
+ from silx.gui.qt import inspect as qt_inspect
5
+ from silx.gui.plot import PlotWidget
6
+
7
+
8
+ class WaitingOverlay(qt.QWidget):
9
+ """Widget overlaying another widget with a processing wheel icon.
10
+
11
+ :param parent: widget on top of which to display the "processing/waiting wheel"
12
+ """
13
+
14
+ def __init__(self, parent: qt.QWidget) -> None:
15
+ super().__init__(parent)
16
+ self.setContentsMargins(0, 0, 0, 0)
17
+
18
+ self._waitingButton = WaitingPushButton(self)
19
+ self._waitingButton.setDown(True)
20
+ self._waitingButton.setWaiting(True)
21
+ self._waitingButton.setStyleSheet(
22
+ "QPushButton { background-color: rgba(150, 150, 150, 40); border: 0px; border-radius: 10px; }"
23
+ )
24
+ self._registerParent(parent)
25
+
26
+ def text(self) -> str:
27
+ """Returns displayed text"""
28
+ return self._waitingButton.text()
29
+
30
+ def setText(self, text: str):
31
+ """Set displayed text"""
32
+ self._waitingButton.setText(text)
33
+ self._resize()
34
+
35
+ def _listenedWidget(self, parent: qt.QWidget) -> qt.QWidget:
36
+ """Returns widget to register event filter to according to parent"""
37
+ if isinstance(parent, PlotWidget):
38
+ return parent.getWidgetHandle()
39
+ return parent
40
+
41
+ def _backendChanged(self):
42
+ self._listenedWidget(self.parent()).installEventFilter(self)
43
+ self._resizeLater()
44
+
45
+ def _registerParent(self, parent: Optional[qt.QWidget]):
46
+ if parent is None:
47
+ return
48
+ self._listenedWidget(parent).installEventFilter(self)
49
+ if isinstance(parent, PlotWidget):
50
+ parent.sigBackendChanged.connect(self._backendChanged)
51
+ self._resize()
52
+
53
+ def _unregisterParent(self, parent: Optional[qt.QWidget]):
54
+ if parent is None:
55
+ return
56
+ if isinstance(parent, PlotWidget):
57
+ parent.sigBackendChanged.disconnect(self._backendChanged)
58
+ self._listenedWidget(parent).removeEventFilter(self)
59
+
60
+ def setParent(self, parent: qt.QWidget):
61
+ self._unregisterParent(self.parent())
62
+ super().setParent(parent)
63
+ self._registerParent(parent)
64
+
65
+ def showEvent(self, event: qt.QShowEvent):
66
+ super().showEvent(event)
67
+ self._waitingButton.setVisible(True)
68
+
69
+ def hideEvent(self, event: qt.QHideEvent):
70
+ super().hideEvent(event)
71
+ self._waitingButton.setVisible(False)
72
+
73
+ def _resize(self):
74
+ if not qt_inspect.isValid(self):
75
+ return # For _resizeLater in case the widget has been deleted
76
+
77
+ parent = self.parent()
78
+ if parent is None:
79
+ return
80
+
81
+ size = self._waitingButton.sizeHint()
82
+ if isinstance(parent, PlotWidget):
83
+ offset = parent.getWidgetHandle().mapTo(parent, qt.QPoint(0, 0))
84
+ left, top, width, height = parent.getPlotBoundsInPixels()
85
+ rect = qt.QRect(
86
+ qt.QPoint(
87
+ int(offset.x() + left + width / 2 - size.width() / 2),
88
+ int(offset.y() + top + height / 2 - size.height() / 2),
89
+ ),
90
+ size,
91
+ )
92
+ else:
93
+ position = parent.size()
94
+ position = (position - size) / 2
95
+ rect = qt.QRect(qt.QPoint(position.width(), position.height()), size)
96
+ self.setGeometry(rect)
97
+ self.raise_()
98
+
99
+ def _resizeLater(self):
100
+ qt.QTimer.singleShot(0, self._resize)
101
+
102
+ def eventFilter(self, watched: qt.QWidget, event: qt.QEvent):
103
+ if event.type() == qt.QEvent.Resize:
104
+ self._resize()
105
+ self._resizeLater() # Defer resize for the receiver to have handled it
106
+ return super().eventFilter(watched, event)
107
+
108
+ # expose Waiting push button API
109
+ def setIconSize(self, size):
110
+ self._waitingButton.setIconSize(size)
File without changes
tomwer/version.py CHANGED
@@ -78,8 +78,8 @@ RELEASE_LEVEL_VALUE = {
78
78
  MAJOR = 1
79
79
  MINOR = 3
80
80
  MICRO = 0
81
- RELEV = "dev" # <16
82
- SERIAL = 2 # <16
81
+ RELEV = "rc" # <16
82
+ SERIAL = 10 # <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.3.0.dev2
3
+ Version: 1.3.0rc10
4
4
  Summary: "tomography workflow tools"
5
5
  Home-page: https://gitlab.esrf.fr/tomotools/tomwer
6
6
  Author: data analysis unit
@@ -24,16 +24,16 @@ License-File: LICENSE
24
24
  Requires-Dist: numpy
25
25
  Requires-Dist: setuptools
26
26
  Requires-Dist: psutil
27
- Requires-Dist: silx (<2.0,>=1.0)
28
- Requires-Dist: tomoscan (>=2.0.0a11)
29
- Requires-Dist: nxtomo (>=1.0.4)
30
- Requires-Dist: nxtomomill (>=1.0dev)
31
- Requires-Dist: processview (>=1.3)
32
- Requires-Dist: ewoks (>=0.1.1)
33
- Requires-Dist: sluurp (>=0.3.3)
27
+ Requires-Dist: silx[full] >=2.0
28
+ Requires-Dist: tomoscan >=2.0.0a11
29
+ Requires-Dist: nxtomo >=1.2.3rc1
30
+ Requires-Dist: nxtomomill >=1.0dev
31
+ Requires-Dist: processview >=1.3
32
+ Requires-Dist: ewoks >=0.1.1
33
+ Requires-Dist: sluurp >=0.3.3
34
34
  Requires-Dist: packaging
35
35
  Requires-Dist: flufl-lock
36
- Requires-Dist: pyunitsystem (>=1.1.0)
36
+ Requires-Dist: pyunitsystem >=1.1.0
37
37
  Provides-Extra: _dev_spec
38
38
  Requires-Dist: black ; extra == '_dev_spec'
39
39
  Requires-Dist: flake8 ; extra == '_dev_spec'
@@ -42,11 +42,11 @@ Requires-Dist: pyopencl ; extra == '_dev_spec'
42
42
  Provides-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: ewoks[orange] (>=0.1.1) ; 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'
49
- Requires-Dist: h5py (>=3) ; extra == '_full_base'
49
+ Requires-Dist: h5py >=3 ; extra == '_full_base'
50
50
  Requires-Dist: lxml ; extra == '_full_base'
51
51
  Requires-Dist: werkzeug ; extra == '_full_base'
52
52
  Requires-Dist: json-rpc ; extra == '_full_base'
@@ -60,11 +60,11 @@ Requires-Dist: pyicat-plus ; extra == '_full_base'
60
60
  Provides-Extra: dev
61
61
  Requires-Dist: orange-canvas-core ; extra == 'dev'
62
62
  Requires-Dist: orange-widget-base ; extra == 'dev'
63
- Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'dev'
63
+ Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'dev'
64
64
  Requires-Dist: rsyncmanager ; extra == 'dev'
65
65
  Requires-Dist: graypy ; extra == 'dev'
66
66
  Requires-Dist: fabio ; extra == 'dev'
67
- Requires-Dist: h5py (>=3) ; extra == 'dev'
67
+ Requires-Dist: h5py >=3 ; extra == 'dev'
68
68
  Requires-Dist: lxml ; extra == 'dev'
69
69
  Requires-Dist: werkzeug ; extra == 'dev'
70
70
  Requires-Dist: json-rpc ; extra == 'dev'
@@ -75,7 +75,7 @@ Requires-Dist: resource ; extra == 'dev'
75
75
  Requires-Dist: tifffile ; extra == 'dev'
76
76
  Requires-Dist: hdf5plugin ; extra == 'dev'
77
77
  Requires-Dist: pyicat-plus ; extra == 'dev'
78
- Requires-Dist: nabu[full] (>=2023.3.0dev) ; extra == 'dev'
78
+ Requires-Dist: nabu[full] >=2023.3.1dev ; extra == 'dev'
79
79
  Requires-Dist: pycuda ; extra == 'dev'
80
80
  Requires-Dist: scikit-cuda ; extra == 'dev'
81
81
  Requires-Dist: black ; extra == 'dev'
@@ -85,11 +85,11 @@ Requires-Dist: pyopencl ; extra == 'dev'
85
85
  Provides-Extra: dev_no_cuda
86
86
  Requires-Dist: orange-canvas-core ; extra == 'dev_no_cuda'
87
87
  Requires-Dist: orange-widget-base ; extra == 'dev_no_cuda'
88
- Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'dev_no_cuda'
88
+ Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'dev_no_cuda'
89
89
  Requires-Dist: rsyncmanager ; extra == 'dev_no_cuda'
90
90
  Requires-Dist: graypy ; extra == 'dev_no_cuda'
91
91
  Requires-Dist: fabio ; extra == 'dev_no_cuda'
92
- Requires-Dist: h5py (>=3) ; extra == 'dev_no_cuda'
92
+ Requires-Dist: h5py >=3 ; extra == 'dev_no_cuda'
93
93
  Requires-Dist: lxml ; extra == 'dev_no_cuda'
94
94
  Requires-Dist: werkzeug ; extra == 'dev_no_cuda'
95
95
  Requires-Dist: json-rpc ; extra == 'dev_no_cuda'
@@ -100,7 +100,7 @@ Requires-Dist: resource ; extra == 'dev_no_cuda'
100
100
  Requires-Dist: tifffile ; extra == 'dev_no_cuda'
101
101
  Requires-Dist: hdf5plugin ; extra == 'dev_no_cuda'
102
102
  Requires-Dist: pyicat-plus ; extra == 'dev_no_cuda'
103
- Requires-Dist: nabu (>=2023.3.0dev) ; extra == 'dev_no_cuda'
103
+ Requires-Dist: nabu >=2023.3.1dev ; extra == 'dev_no_cuda'
104
104
  Requires-Dist: black ; extra == 'dev_no_cuda'
105
105
  Requires-Dist: flake8 ; extra == 'dev_no_cuda'
106
106
  Requires-Dist: timeout-decorator ; extra == 'dev_no_cuda'
@@ -108,11 +108,11 @@ Requires-Dist: pyopencl ; extra == 'dev_no_cuda'
108
108
  Provides-Extra: doc
109
109
  Requires-Dist: orange-canvas-core ; extra == 'doc'
110
110
  Requires-Dist: orange-widget-base ; extra == 'doc'
111
- Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'doc'
111
+ Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'doc'
112
112
  Requires-Dist: rsyncmanager ; extra == 'doc'
113
113
  Requires-Dist: graypy ; extra == 'doc'
114
114
  Requires-Dist: fabio ; extra == 'doc'
115
- Requires-Dist: h5py (>=3) ; extra == 'doc'
115
+ Requires-Dist: h5py >=3 ; extra == 'doc'
116
116
  Requires-Dist: lxml ; extra == 'doc'
117
117
  Requires-Dist: werkzeug ; extra == 'doc'
118
118
  Requires-Dist: json-rpc ; extra == 'doc'
@@ -123,21 +123,22 @@ Requires-Dist: resource ; extra == 'doc'
123
123
  Requires-Dist: tifffile ; extra == 'doc'
124
124
  Requires-Dist: hdf5plugin ; extra == 'doc'
125
125
  Requires-Dist: pyicat-plus ; extra == 'doc'
126
- Requires-Dist: nabu (>=2023.3.0dev) ; extra == 'doc'
127
- Requires-Dist: Sphinx (>=4.0.0) ; extra == 'doc'
126
+ Requires-Dist: nabu >=2023.3.1dev ; extra == 'doc'
127
+ Requires-Dist: Sphinx >=4.0.0 ; extra == 'doc'
128
128
  Requires-Dist: nbsphinx ; extra == 'doc'
129
129
  Requires-Dist: pandoc ; extra == 'doc'
130
130
  Requires-Dist: jupyterlab ; extra == 'doc'
131
131
  Requires-Dist: pydata-sphinx-theme ; extra == 'doc'
132
132
  Requires-Dist: sphinx-design ; extra == 'doc'
133
+ Requires-Dist: sphinx-autodoc-typehints ; extra == 'doc'
133
134
  Provides-Extra: full
134
135
  Requires-Dist: orange-canvas-core ; extra == 'full'
135
136
  Requires-Dist: orange-widget-base ; extra == 'full'
136
- Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'full'
137
+ Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full'
137
138
  Requires-Dist: rsyncmanager ; extra == 'full'
138
139
  Requires-Dist: graypy ; extra == 'full'
139
140
  Requires-Dist: fabio ; extra == 'full'
140
- Requires-Dist: h5py (>=3) ; extra == 'full'
141
+ Requires-Dist: h5py >=3 ; extra == 'full'
141
142
  Requires-Dist: lxml ; extra == 'full'
142
143
  Requires-Dist: werkzeug ; extra == 'full'
143
144
  Requires-Dist: json-rpc ; extra == 'full'
@@ -148,17 +149,17 @@ Requires-Dist: resource ; extra == 'full'
148
149
  Requires-Dist: tifffile ; extra == 'full'
149
150
  Requires-Dist: hdf5plugin ; extra == 'full'
150
151
  Requires-Dist: pyicat-plus ; extra == 'full'
151
- Requires-Dist: nabu[full] (>=2023.3.0dev) ; extra == 'full'
152
+ Requires-Dist: nabu[full] >=2023.3.1dev ; extra == 'full'
152
153
  Requires-Dist: pycuda ; extra == 'full'
153
154
  Requires-Dist: scikit-cuda ; extra == 'full'
154
155
  Provides-Extra: full_no_cuda
155
156
  Requires-Dist: orange-canvas-core ; extra == 'full_no_cuda'
156
157
  Requires-Dist: orange-widget-base ; extra == 'full_no_cuda'
157
- Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'full_no_cuda'
158
+ Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full_no_cuda'
158
159
  Requires-Dist: rsyncmanager ; extra == 'full_no_cuda'
159
160
  Requires-Dist: graypy ; extra == 'full_no_cuda'
160
161
  Requires-Dist: fabio ; extra == 'full_no_cuda'
161
- Requires-Dist: h5py (>=3) ; extra == 'full_no_cuda'
162
+ Requires-Dist: h5py >=3 ; extra == 'full_no_cuda'
162
163
  Requires-Dist: lxml ; extra == 'full_no_cuda'
163
164
  Requires-Dist: werkzeug ; extra == 'full_no_cuda'
164
165
  Requires-Dist: json-rpc ; extra == 'full_no_cuda'
@@ -169,15 +170,15 @@ Requires-Dist: resource ; extra == 'full_no_cuda'
169
170
  Requires-Dist: tifffile ; extra == 'full_no_cuda'
170
171
  Requires-Dist: hdf5plugin ; extra == 'full_no_cuda'
171
172
  Requires-Dist: pyicat-plus ; extra == 'full_no_cuda'
172
- Requires-Dist: nabu (>=2023.3.0dev) ; extra == 'full_no_cuda'
173
+ Requires-Dist: nabu >=2023.3.1dev ; extra == 'full_no_cuda'
173
174
  Provides-Extra: full_no_nabu
174
175
  Requires-Dist: orange-canvas-core ; extra == 'full_no_nabu'
175
176
  Requires-Dist: orange-widget-base ; extra == 'full_no_nabu'
176
- Requires-Dist: ewoks[orange] (>=0.1.1) ; extra == 'full_no_nabu'
177
+ Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full_no_nabu'
177
178
  Requires-Dist: rsyncmanager ; extra == 'full_no_nabu'
178
179
  Requires-Dist: graypy ; extra == 'full_no_nabu'
179
180
  Requires-Dist: fabio ; extra == 'full_no_nabu'
180
- Requires-Dist: h5py (>=3) ; extra == 'full_no_nabu'
181
+ Requires-Dist: h5py >=3 ; extra == 'full_no_nabu'
181
182
  Requires-Dist: lxml ; extra == 'full_no_nabu'
182
183
  Requires-Dist: werkzeug ; extra == 'full_no_nabu'
183
184
  Requires-Dist: json-rpc ; extra == 'full_no_nabu'
@@ -190,10 +191,10 @@ Requires-Dist: hdf5plugin ; extra == 'full_no_nabu'
190
191
  Requires-Dist: pyicat-plus ; extra == 'full_no_nabu'
191
192
  Provides-Extra: setup_requires
192
193
  Requires-Dist: setuptools ; extra == 'setup_requires'
193
- Requires-Dist: numpy (>=1.12) ; extra == 'setup_requires'
194
+ Requires-Dist: numpy >=1.12 ; extra == 'setup_requires'
194
195
  Provides-Extra: test
195
196
  Requires-Dist: pytest-asyncio ; extra == 'test'
196
- Requires-Dist: tomoscan[test] (>=2.0.0a11) ; extra == 'test'
197
+ Requires-Dist: tomoscan[test] >=2.0.2rc17 ; extra == 'test'
197
198
 
198
199
  tomwer
199
200
  ======