tomwer 1.3.4__py3-none-any.whl → 1.3.26__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.
- orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +1 -0
- orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +184 -184
- tomwer/app/canvas_launcher/mainwindow.py +0 -1
- tomwer/app/zstitching.py +0 -1
- tomwer/core/cluster/cluster.py +0 -9
- tomwer/core/process/control/datalistener/datalistener.py +15 -12
- tomwer/core/process/control/datawatcher/edfdwprocess.py +0 -9
- tomwer/core/process/reconstruction/axis/axis.py +3 -3
- tomwer/core/process/reconstruction/axis/params.py +3 -3
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py +37 -8
- tomwer/core/process/reconstruction/nabu/nabucommon.py +3 -4
- tomwer/core/process/reconstruction/nabu/nabuscores.py +1 -0
- tomwer/core/process/reconstruction/nabu/nabuslices.py +6 -52
- tomwer/core/process/reconstruction/nabu/nabuvolume.py +2 -5
- tomwer/core/process/reconstruction/nabu/utils.py +10 -2
- tomwer/core/process/reconstruction/saaxis/saaxis.py +2 -0
- tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +2 -0
- tomwer/core/process/task.py +4 -2
- tomwer/core/process/test/test_data_transfer.py +4 -3
- tomwer/core/scan/blissscan.py +3 -3
- tomwer/core/scan/nxtomoscan.py +2 -2
- tomwer/core/scan/scanbase.py +5 -6
- tomwer/core/utils/scanutils.py +5 -1
- tomwer/gui/cluster/slurm.py +1 -21
- tomwer/gui/cluster/test/test_cluster.py +0 -1
- tomwer/gui/control/datawatcher/datawatcher.py +1 -24
- tomwer/gui/control/reducedarkflatselector.py +2 -2
- tomwer/gui/control/selectorwidgetbase.py +3 -1
- tomwer/gui/edit/dkrfpatch.py +4 -4
- tomwer/gui/edit/nxtomoeditor.py +28 -20
- tomwer/gui/edit/nxtomowarmer.py +3 -2
- tomwer/gui/edit/test/test_nx_editor.py +58 -1
- tomwer/gui/imagefromfile.py +2 -2
- tomwer/gui/qfolderdialog.py +4 -0
- tomwer/gui/reconstruction/axis/axis.py +16 -13
- tomwer/gui/reconstruction/axis/radioaxis.py +3 -1
- tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +11 -0
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +16 -14
- tomwer/gui/reconstruction/saaxis/saaxis.py +2 -2
- tomwer/gui/stitching/stitching.py +8 -3
- tomwer/gui/visualization/dataviewer.py +27 -15
- tomwer/gui/visualization/diffviewer/diffviewer.py +9 -8
- tomwer/gui/visualization/volumeviewer.py +10 -4
- tomwer/io/utils/h5pyutils.py +3 -7
- tomwer/io/utils/utils.py +3 -3
- tomwer/synctools/stacks/reconstruction/castvolume.py +20 -5
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +10 -0
- tomwer/tests/datasets.py +5 -1
- tomwer/utils.py +1 -4
- tomwer/version.py +1 -1
- tomwer-1.3.26-py3.11-nspkg.pth +1 -0
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/METADATA +34 -48
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/RECORD +58 -58
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/WHEEL +1 -1
- tomwer-1.3.4-py3.11-nspkg.pth +0 -1
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/LICENSE +0 -0
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/entry_points.txt +0 -0
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/namespace_packages.txt +0 -0
- {tomwer-1.3.4.dist-info → tomwer-1.3.26.dist-info}/top_level.txt +0 -0
@@ -15,7 +15,6 @@ from tomoscan.esrf.volume.hdf5volume import HDF5Volume
|
|
15
15
|
from tomoscan.factory import Factory
|
16
16
|
from tomoscan.identifier import VolumeIdentifier
|
17
17
|
from tomoscan.volumebase import VolumeBase
|
18
|
-
from tomoscan.io import HDF5File, get_swmr_mode
|
19
18
|
|
20
19
|
from tomwer.core.scan.scanbase import TomwerScanBase
|
21
20
|
from tomwer.gui.visualization.reconstructionparameters import ReconstructionParameters
|
@@ -298,9 +297,16 @@ class VolumeViewer(qt.QMainWindow):
|
|
298
297
|
|
299
298
|
self._close_h5_file()
|
300
299
|
if isinstance(volume, HDF5Volume):
|
301
|
-
|
302
|
-
|
303
|
-
|
300
|
+
try:
|
301
|
+
self._h5_file = h5py.File(volume.data_url.file_path(), mode="r")
|
302
|
+
except OSError:
|
303
|
+
self._h5_file = h5py.File(
|
304
|
+
volume.data_url.file_path(),
|
305
|
+
mode="r",
|
306
|
+
libver="latest",
|
307
|
+
swmr=True,
|
308
|
+
)
|
309
|
+
|
304
310
|
if volume.data_url.data_path() in self._h5_file:
|
305
311
|
data = self._h5_file[volume.data_url.data_path()]
|
306
312
|
state = "loaded"
|
tomwer/io/utils/h5pyutils.py
CHANGED
@@ -35,7 +35,7 @@ import contextlib
|
|
35
35
|
|
36
36
|
import h5py
|
37
37
|
from silx.io.url import DataUrl
|
38
|
-
from
|
38
|
+
from silx.io.utils import open as open_hdf5
|
39
39
|
|
40
40
|
|
41
41
|
class _BaseReader(contextlib.AbstractContextManager):
|
@@ -60,9 +60,7 @@ class EntryReader(_BaseReader):
|
|
60
60
|
"""Context manager used to read a bliss node"""
|
61
61
|
|
62
62
|
def __enter__(self):
|
63
|
-
self._file_handler =
|
64
|
-
filename=self._url.file_path(), mode="r", swmr=get_swmr_mode()
|
65
|
-
)
|
63
|
+
self._file_handler = open_hdf5(filename=self._url.file_path())
|
66
64
|
entry = self._file_handler[self._url.data_path()]
|
67
65
|
if not isinstance(entry, h5py.Group):
|
68
66
|
raise ValueError("Data path should point to a bliss node (h5py.Group)")
|
@@ -73,9 +71,7 @@ class DatasetReader(_BaseReader):
|
|
73
71
|
"""Context manager used to read a bliss node"""
|
74
72
|
|
75
73
|
def __enter__(self):
|
76
|
-
self._file_handler =
|
77
|
-
filename=self._url.file_path(), mode="r", swmr=get_swmr_mode()
|
78
|
-
)
|
74
|
+
self._file_handler = open_hdf5(filename=self._url.file_path())
|
79
75
|
entry = self._file_handler[self._url.data_path()]
|
80
76
|
if not isinstance(entry, h5py.Dataset):
|
81
77
|
raise ValueError("Data path should point to a dtaset (h5py.Dataset)")
|
tomwer/io/utils/utils.py
CHANGED
@@ -37,9 +37,9 @@ import os
|
|
37
37
|
import h5py
|
38
38
|
import numpy.lib.npyio
|
39
39
|
from PIL import Image
|
40
|
+
from silx.io.utils import open as open_hdf5
|
40
41
|
from tomoscan.esrf import has_glymur
|
41
42
|
from tomoscan.esrf.scan.utils import get_data as tomoscan_get_data
|
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
|
204
|
+
with open_hdf5(abs_file_path) 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
|
255
|
+
with open_hdf5(abs_file_path) as h5f:
|
256
256
|
dataset = h5f[dataset_path]
|
257
257
|
if dataset.is_virtual:
|
258
258
|
for vs_info in dataset.virtual_sources():
|
@@ -94,11 +94,26 @@ class CastVolumeProcessStack(FIFO, qt.QObject):
|
|
94
94
|
self.scan_ready(scan=data)
|
95
95
|
else:
|
96
96
|
self._data_currently_computed = data
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
97
|
+
try:
|
98
|
+
self._computationThread.init(data=data, configuration=configuration)
|
99
|
+
except ValueError as e:
|
100
|
+
# initialization can fail (for example for cast volume is there is no volume or be case this will raise an error)
|
101
|
+
# then we want to keep the thread active
|
102
|
+
self._data_currently_computed = None
|
103
|
+
ProcessManager().notify_dataset_state(
|
104
|
+
dataset=data, process=self._process_id, state=DatasetState.SKIPPED
|
105
|
+
)
|
106
|
+
_logger.processSkipped(f"thread initialization failed. Error is {e}")
|
107
|
+
if callback is not None:
|
108
|
+
callback()
|
109
|
+
self.scan_ready(scan=data)
|
110
|
+
else:
|
111
|
+
# need to manage connect before starting it because
|
112
|
+
fct_callback = functools.partial(
|
113
|
+
self._end_threaded_computation, callback
|
114
|
+
)
|
115
|
+
self._computationThread.finished.connect(fct_callback)
|
116
|
+
self._computationThread.start()
|
102
117
|
|
103
118
|
def _end_computation(self, data, future_tomo_obj, callback):
|
104
119
|
"""
|
@@ -30,6 +30,7 @@ import functools
|
|
30
30
|
import logging
|
31
31
|
import shutil
|
32
32
|
import tempfile
|
33
|
+
import os
|
33
34
|
|
34
35
|
from processview.core.manager import DatasetState, ProcessManager
|
35
36
|
from processview.core.superviseprocess import SuperviseProcess
|
@@ -132,6 +133,15 @@ class DarkRefCopyProcessStack(FIFO, qt.QObject):
|
|
132
133
|
def _create_processing_thread(self, process_id=None) -> qt.QThread:
|
133
134
|
return _ProcessingThread(process_id=process_id, save_dir=self._save_dir)
|
134
135
|
|
136
|
+
def clear_cache(self):
|
137
|
+
"""
|
138
|
+
remove the file used to cache the reduced darks / flats.
|
139
|
+
This can be used in the case it contain unrelevant data. Like frame with another shape...
|
140
|
+
"""
|
141
|
+
cache_file = DarkRefsCopy.get_save_file(self._save_dir)
|
142
|
+
if os.path.exists(cache_file):
|
143
|
+
os.remove(cache_file)
|
144
|
+
|
135
145
|
|
136
146
|
class _ProcessingThread(ProcessingThread, SuperviseProcess):
|
137
147
|
"""
|
tomwer/tests/datasets.py
CHANGED
tomwer/utils.py
CHANGED
@@ -81,10 +81,7 @@ class LauncherCommand(_LauncherCommand):
|
|
81
81
|
"""Description of a command"""
|
82
82
|
|
83
83
|
def get_module(self):
|
84
|
-
"""Returns the python module to execute. If any.
|
85
|
-
|
86
|
-
:rtype: module
|
87
|
-
"""
|
84
|
+
"""Returns the python module to execute. If any."""
|
88
85
|
try:
|
89
86
|
module = importlib.import_module(self.module_name)
|
90
87
|
return module
|
tomwer/version.py
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('orangecontrib',));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('orangecontrib', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('orangecontrib', [os.path.dirname(p)])));m = m or sys.modules.setdefault('orangecontrib', types.ModuleType('orangecontrib'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: tomwer
|
3
|
-
Version: 1.3.
|
3
|
+
Version: 1.3.26
|
4
4
|
Summary: "tomography workflow tools"
|
5
5
|
Home-page: https://gitlab.esrf.fr/tomotools/tomwer
|
6
6
|
Author: data analysis unit
|
@@ -18,49 +18,24 @@ Classifier: Operating System :: POSIX
|
|
18
18
|
Classifier: Natural Language :: English
|
19
19
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
20
20
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
21
|
-
Requires-Python: >=3.
|
22
|
-
Description-Content-Type: text/
|
21
|
+
Requires-Python: >=3.8
|
22
|
+
Description-Content-Type: text/x-rst
|
23
23
|
License-File: LICENSE
|
24
24
|
Requires-Dist: numpy
|
25
25
|
Requires-Dist: setuptools
|
26
26
|
Requires-Dist: psutil
|
27
27
|
Requires-Dist: silx[full] >=2.0
|
28
|
-
Requires-Dist: tomoscan
|
29
|
-
Requires-Dist: nxtomo
|
30
|
-
Requires-Dist: nxtomomill
|
28
|
+
Requires-Dist: tomoscan <2.1,>=2.0.0a11
|
29
|
+
Requires-Dist: nxtomo <1.3,>=1.2.3rc1
|
30
|
+
Requires-Dist: nxtomomill <1.1,>=1.0dev
|
31
31
|
Requires-Dist: processview >=1.3
|
32
32
|
Requires-Dist: ewoks >=0.1.1
|
33
|
-
Requires-Dist: ewoksorange
|
33
|
+
Requires-Dist: ewoksorange <0.7,>=0.6
|
34
34
|
Requires-Dist: sluurp >=0.3.3
|
35
35
|
Requires-Dist: packaging
|
36
36
|
Requires-Dist: flufl-lock
|
37
|
-
Requires-Dist: pyunitsystem
|
38
|
-
Provides-Extra: _dev_spec
|
39
|
-
Requires-Dist: black ; extra == '_dev_spec'
|
40
|
-
Requires-Dist: flake8 ; extra == '_dev_spec'
|
41
|
-
Requires-Dist: timeout-decorator ; extra == '_dev_spec'
|
42
|
-
Requires-Dist: pyopencl ; extra == '_dev_spec'
|
43
|
-
Provides-Extra: _full_base
|
44
|
-
Requires-Dist: orange-canvas-core ; extra == '_full_base'
|
45
|
-
Requires-Dist: orange-widget-base ; extra == '_full_base'
|
46
|
-
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == '_full_base'
|
47
|
-
Requires-Dist: rsyncmanager ; extra == '_full_base'
|
48
|
-
Requires-Dist: graypy ; extra == '_full_base'
|
49
|
-
Requires-Dist: fabio ; extra == '_full_base'
|
50
|
-
Requires-Dist: h5py >=3 ; extra == '_full_base'
|
51
|
-
Requires-Dist: lxml ; extra == '_full_base'
|
52
|
-
Requires-Dist: werkzeug ; extra == '_full_base'
|
53
|
-
Requires-Dist: json-rpc ; extra == '_full_base'
|
54
|
-
Requires-Dist: scipy ; extra == '_full_base'
|
55
|
-
Requires-Dist: Pillow ; extra == '_full_base'
|
56
|
-
Requires-Dist: glymur ; extra == '_full_base'
|
57
|
-
Requires-Dist: resource ; extra == '_full_base'
|
58
|
-
Requires-Dist: tifffile ; extra == '_full_base'
|
59
|
-
Requires-Dist: hdf5plugin ; extra == '_full_base'
|
60
|
-
Requires-Dist: pyicat-plus ; extra == '_full_base'
|
37
|
+
Requires-Dist: pyunitsystem <2.0,>=1.1.0
|
61
38
|
Provides-Extra: dev
|
62
|
-
Requires-Dist: orange-canvas-core ; extra == 'dev'
|
63
|
-
Requires-Dist: orange-widget-base ; extra == 'dev'
|
64
39
|
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'dev'
|
65
40
|
Requires-Dist: rsyncmanager ; extra == 'dev'
|
66
41
|
Requires-Dist: graypy ; extra == 'dev'
|
@@ -77,15 +52,13 @@ Requires-Dist: tifffile ; extra == 'dev'
|
|
77
52
|
Requires-Dist: hdf5plugin ; extra == 'dev'
|
78
53
|
Requires-Dist: pyicat-plus ; extra == 'dev'
|
79
54
|
Requires-Dist: nabu[full] >=2023.3.1dev ; extra == 'dev'
|
80
|
-
Requires-Dist: pycuda ; extra == 'dev'
|
55
|
+
Requires-Dist: pycuda <2024.1.1 ; extra == 'dev'
|
81
56
|
Requires-Dist: scikit-cuda ; extra == 'dev'
|
82
57
|
Requires-Dist: black ; extra == 'dev'
|
83
58
|
Requires-Dist: flake8 ; extra == 'dev'
|
84
59
|
Requires-Dist: timeout-decorator ; extra == 'dev'
|
85
60
|
Requires-Dist: pyopencl ; extra == 'dev'
|
86
61
|
Provides-Extra: dev_no_cuda
|
87
|
-
Requires-Dist: orange-canvas-core ; extra == 'dev_no_cuda'
|
88
|
-
Requires-Dist: orange-widget-base ; extra == 'dev_no_cuda'
|
89
62
|
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'dev_no_cuda'
|
90
63
|
Requires-Dist: rsyncmanager ; extra == 'dev_no_cuda'
|
91
64
|
Requires-Dist: graypy ; extra == 'dev_no_cuda'
|
@@ -101,14 +74,17 @@ Requires-Dist: resource ; extra == 'dev_no_cuda'
|
|
101
74
|
Requires-Dist: tifffile ; extra == 'dev_no_cuda'
|
102
75
|
Requires-Dist: hdf5plugin ; extra == 'dev_no_cuda'
|
103
76
|
Requires-Dist: pyicat-plus ; extra == 'dev_no_cuda'
|
104
|
-
Requires-Dist: nabu
|
77
|
+
Requires-Dist: nabu <2024.2,>=2023.3.1dev ; extra == 'dev_no_cuda'
|
105
78
|
Requires-Dist: black ; extra == 'dev_no_cuda'
|
106
79
|
Requires-Dist: flake8 ; extra == 'dev_no_cuda'
|
107
80
|
Requires-Dist: timeout-decorator ; extra == 'dev_no_cuda'
|
108
81
|
Requires-Dist: pyopencl ; extra == 'dev_no_cuda'
|
82
|
+
Provides-Extra: dev_spec
|
83
|
+
Requires-Dist: black ; extra == 'dev_spec'
|
84
|
+
Requires-Dist: flake8 ; extra == 'dev_spec'
|
85
|
+
Requires-Dist: timeout-decorator ; extra == 'dev_spec'
|
86
|
+
Requires-Dist: pyopencl ; extra == 'dev_spec'
|
109
87
|
Provides-Extra: doc
|
110
|
-
Requires-Dist: orange-canvas-core ; extra == 'doc'
|
111
|
-
Requires-Dist: orange-widget-base ; extra == 'doc'
|
112
88
|
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'doc'
|
113
89
|
Requires-Dist: rsyncmanager ; extra == 'doc'
|
114
90
|
Requires-Dist: graypy ; extra == 'doc'
|
@@ -124,7 +100,7 @@ Requires-Dist: resource ; extra == 'doc'
|
|
124
100
|
Requires-Dist: tifffile ; extra == 'doc'
|
125
101
|
Requires-Dist: hdf5plugin ; extra == 'doc'
|
126
102
|
Requires-Dist: pyicat-plus ; extra == 'doc'
|
127
|
-
Requires-Dist: nabu
|
103
|
+
Requires-Dist: nabu <2024.2,>=2023.3.1dev ; extra == 'doc'
|
128
104
|
Requires-Dist: Sphinx >=4.0.0 ; extra == 'doc'
|
129
105
|
Requires-Dist: nbsphinx ; extra == 'doc'
|
130
106
|
Requires-Dist: pandoc ; extra == 'doc'
|
@@ -133,8 +109,6 @@ Requires-Dist: pydata-sphinx-theme ; extra == 'doc'
|
|
133
109
|
Requires-Dist: sphinx-design ; extra == 'doc'
|
134
110
|
Requires-Dist: sphinx-autodoc-typehints ; extra == 'doc'
|
135
111
|
Provides-Extra: full
|
136
|
-
Requires-Dist: orange-canvas-core ; extra == 'full'
|
137
|
-
Requires-Dist: orange-widget-base ; extra == 'full'
|
138
112
|
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full'
|
139
113
|
Requires-Dist: rsyncmanager ; extra == 'full'
|
140
114
|
Requires-Dist: graypy ; extra == 'full'
|
@@ -151,11 +125,25 @@ Requires-Dist: tifffile ; extra == 'full'
|
|
151
125
|
Requires-Dist: hdf5plugin ; extra == 'full'
|
152
126
|
Requires-Dist: pyicat-plus ; extra == 'full'
|
153
127
|
Requires-Dist: nabu[full] >=2023.3.1dev ; extra == 'full'
|
154
|
-
Requires-Dist: pycuda ; extra == 'full'
|
128
|
+
Requires-Dist: pycuda <2024.1.1 ; extra == 'full'
|
155
129
|
Requires-Dist: scikit-cuda ; extra == 'full'
|
130
|
+
Provides-Extra: full_base
|
131
|
+
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full_base'
|
132
|
+
Requires-Dist: rsyncmanager ; extra == 'full_base'
|
133
|
+
Requires-Dist: graypy ; extra == 'full_base'
|
134
|
+
Requires-Dist: fabio ; extra == 'full_base'
|
135
|
+
Requires-Dist: h5py >=3 ; extra == 'full_base'
|
136
|
+
Requires-Dist: lxml ; extra == 'full_base'
|
137
|
+
Requires-Dist: werkzeug ; extra == 'full_base'
|
138
|
+
Requires-Dist: json-rpc ; extra == 'full_base'
|
139
|
+
Requires-Dist: scipy ; extra == 'full_base'
|
140
|
+
Requires-Dist: Pillow ; extra == 'full_base'
|
141
|
+
Requires-Dist: glymur ; extra == 'full_base'
|
142
|
+
Requires-Dist: resource ; extra == 'full_base'
|
143
|
+
Requires-Dist: tifffile ; extra == 'full_base'
|
144
|
+
Requires-Dist: hdf5plugin ; extra == 'full_base'
|
145
|
+
Requires-Dist: pyicat-plus ; extra == 'full_base'
|
156
146
|
Provides-Extra: full_no_cuda
|
157
|
-
Requires-Dist: orange-canvas-core ; extra == 'full_no_cuda'
|
158
|
-
Requires-Dist: orange-widget-base ; extra == 'full_no_cuda'
|
159
147
|
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full_no_cuda'
|
160
148
|
Requires-Dist: rsyncmanager ; extra == 'full_no_cuda'
|
161
149
|
Requires-Dist: graypy ; extra == 'full_no_cuda'
|
@@ -171,10 +159,8 @@ Requires-Dist: resource ; extra == 'full_no_cuda'
|
|
171
159
|
Requires-Dist: tifffile ; extra == 'full_no_cuda'
|
172
160
|
Requires-Dist: hdf5plugin ; extra == 'full_no_cuda'
|
173
161
|
Requires-Dist: pyicat-plus ; extra == 'full_no_cuda'
|
174
|
-
Requires-Dist: nabu
|
162
|
+
Requires-Dist: nabu <2024.2,>=2023.3.1dev ; extra == 'full_no_cuda'
|
175
163
|
Provides-Extra: full_no_nabu
|
176
|
-
Requires-Dist: orange-canvas-core ; extra == 'full_no_nabu'
|
177
|
-
Requires-Dist: orange-widget-base ; extra == 'full_no_nabu'
|
178
164
|
Requires-Dist: ewoks[orange] >=0.1.1 ; extra == 'full_no_nabu'
|
179
165
|
Requires-Dist: rsyncmanager ; extra == 'full_no_nabu'
|
180
166
|
Requires-Dist: graypy ; extra == 'full_no_nabu'
|