tomwer 1.4.8__py3-none-any.whl → 1.4.10__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.
@@ -1,30 +1,54 @@
1
- from __future__ import annotations
1
+ # coding: utf-8
2
+ # /*##########################################################################
3
+ #
4
+ # Copyright (c) 2016-2017 European Synchrotron Radiation Facility
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ # THE SOFTWARE.
23
+ #
24
+ # ###########################################################################*/
25
+
26
+ __authors__ = ["H. Payno"]
27
+ __license__ = "MIT"
28
+ __date__ = "14/10/2021"
29
+
2
30
 
3
31
  import time
4
32
 
5
33
  from orangewidget import gui
6
-
7
- # from orangewidget.widget import Input, Output, OWBaseWidget
8
- from orangecontrib.tomwer.orange.managedprocess import TomwerWithStackStack
9
- from ewokscore.missing_data import MISSING_DATA
10
- from ewoksorange.gui.orange_imports import Input
11
-
34
+ from orangewidget.settings import Setting
35
+ from orangewidget.widget import Input, Output, OWBaseWidget
12
36
  from processview.core.manager import DatasetState, ProcessManager
13
37
  from processview.core.superviseprocess import SuperviseProcess
14
38
  from silx.gui import qt
15
39
  from silx.gui.utils.concurrent import submitToQtMainThread
16
40
 
17
41
  from tomwer.core.futureobject import FutureTomwerObject
42
+ from tomwer.core.scan.scanbase import TomwerScanBase
43
+ from tomwer.core.volume.volumebase import TomwerVolumeBase
18
44
  from tomwer.gui.cluster.supervisor import (
19
45
  FutureTomwerScanObserverWidget as _FutureTomwerScanObserverWidget,
20
46
  )
21
- from tomwer.core.process.cluster.supervisor import FutureSupervisorTask
47
+ from tomwer.core.process.drac.processeddataset import DracReconstructedVolumeDataset
48
+ from tomwer.core.volume.volumefactory import VolumeFactory
22
49
 
23
50
 
24
- class FutureSupervisorOW(
25
- TomwerWithStackStack,
26
- ewokstaskclass=FutureSupervisorTask,
27
- ):
51
+ class FutureSupervisorOW(OWBaseWidget, openclass=True):
28
52
  """
29
53
  Orange widget to define a slurm cluster as input of other
30
54
  widgets (based on nabu for now)
@@ -51,9 +75,10 @@ class FutureSupervisorOW(
51
75
  want_control_area = False
52
76
  resizing_enabled = True
53
77
 
78
+ _ewoks_default_inputs = Setting(dict())
79
+
54
80
  class Inputs:
55
- # redefine the input to allow multiple and default
56
- future_tomo_obj = Input(
81
+ future_in = Input(
57
82
  name="future_tomo_obj",
58
83
  type=FutureTomwerObject,
59
84
  doc="data with some remote processing",
@@ -61,6 +86,15 @@ class FutureSupervisorOW(
61
86
  default=True,
62
87
  )
63
88
 
89
+ class Outputs:
90
+ data = Output(name="data", type=TomwerScanBase)
91
+ volume = Output(name="volume", type=TomwerVolumeBase)
92
+ data_portal_processed_datasets = Output(
93
+ name="data_portal_processed_datasets",
94
+ type=tuple,
95
+ doc="data portal processed data to be saved",
96
+ )
97
+
64
98
  def __init__(self, parent=None):
65
99
  super().__init__(parent)
66
100
  # gui
@@ -92,29 +126,38 @@ class FutureSupervisorOW(
92
126
  raise TypeError(
93
127
  f"future_tomo_obj is expected to be an instance of {FutureTomwerObject} and not {type(future_tomo_obj)}"
94
128
  )
95
- self._widget.removeFutureTomoObj(future_tomo_obj=future_tomo_obj)
96
- self.execute_ewoks_task()
97
-
98
- def handleNewSignals(self) -> None:
99
- """Invoked by the workflow signal propagation manager after all
100
- signals handlers have been called.
101
-
102
- note: this widget can receive two signals: 'dataset' and 'colormap'. The 'colormap' is handled by
103
- orange directly while the 'dataset' signal is handled by the ewoks task.
104
- This function will be only triggered when the 'dataset' signal is send
105
- """
106
- # update GUI from received future_tomo_obj
107
- # warning: this code will work because the task has only one input.
108
- # so we can pass it directly to the widget.
109
- # this won't be the case the task can have several input.
110
- future_tomo_obj = self.get_task_input_value("future_tomo_obj", MISSING_DATA)
111
- if future_tomo_obj is not MISSING_DATA:
112
- self._widget.addFutureTomoObj(future_tomo_obj=future_tomo_obj)
129
+ self._futureHasBeenConverted(future_tomo_obj, future_tomo_obj.tomo_obj)
113
130
 
114
- @Inputs.future_tomo_obj
131
+ @Inputs.future_in
115
132
  def add(self, future_tomo_obj, signal_id=None):
116
- # required because today ewoksorange is not handling multiple inputs
117
- self.set_dynamic_input("future_tomo_obj", future_tomo_obj)
133
+ if future_tomo_obj is not None:
134
+ self._widget.addFutureTomoObj(future_tomo_obj=future_tomo_obj)
135
+
136
+ def _futureHasBeenConverted(self, future_tomo_obj, tomo_obj):
137
+ # clean client to free resources
138
+ self._widget.removeFutureTomoObj(future_tomo_obj=future_tomo_obj)
139
+ if tomo_obj is not None:
140
+ if isinstance(tomo_obj, TomwerScanBase):
141
+ self.Outputs.data.send(tomo_obj)
142
+
143
+ def build_drac_dataset(vol_id):
144
+ volume = VolumeFactory.create_tomo_object_from_identifier(vol_id)
145
+ return DracReconstructedVolumeDataset(
146
+ tomo_obj=volume,
147
+ source_scan=tomo_obj,
148
+ )
149
+
150
+ self.Outputs.data_portal_processed_datasets.send(
151
+ tuple(
152
+ [
153
+ build_drac_dataset(vol_id=vol_id)
154
+ for vol_id in tomo_obj.latest_vol_reconstructions
155
+ ]
156
+ )
157
+ )
158
+
159
+ elif isinstance(tomo_obj, TomwerVolumeBase):
160
+ self.Outputs.volume.send(tomo_obj)
118
161
 
119
162
 
120
163
  class FutureTomwerObjectObserverWidget(
@@ -139,9 +139,8 @@ class DataListenerOW(
139
139
 
140
140
  def create_default_config():
141
141
  configuration = HDF5Config()
142
- # insure minimal bacward compatibility
143
- if hasattr(configuration, "bam_single_file"):
144
- configuration.bam_single_file = True
142
+ configuration.bam_single_file = True
143
+ configuration.no_master_file = True
145
144
  return configuration
146
145
 
147
146
  if cfg_file in (None, ""):
@@ -150,7 +149,7 @@ class DataListenerOW(
150
149
  try:
151
150
  config = HDF5Config.from_cfg_file(cfg_file)
152
151
  except Exception as e:
153
- logger.warning(f"Fail to load configuraiton file. Error is {e}")
152
+ logger.warning(f"Fail to load configuration file. Error is {e}")
154
153
  config = create_default_config()
155
154
 
156
155
  return config
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from importlib.metadata import version as get_version
3
4
  import tomoscan.version
4
5
 
5
6
  import ewokscore
@@ -7,6 +8,7 @@ import ewoksorange
7
8
  import tomwer.version
8
9
  import sluurp
9
10
 
11
+
10
12
  try:
11
13
  import nxtomomill.version
12
14
  except ImportError:
@@ -40,8 +42,15 @@ def get_tomotools_stack_versions() -> dict[str, str]:
40
42
  if has_nxtomomill:
41
43
  stack["nxtomomill"] = nxtomomill.version.version
42
44
  stack["tomoscan"] = tomoscan.version.version
43
- stack["ewokscore"] = ewokscore.__version__
44
- stack["ewoksorange"] = ewoksorange.__version__
45
+ try:
46
+ stack["ewokscore"] = ewokscore.__version__
47
+ except AttributeError:
48
+ stack["ewokscore"] = get_version("ewokscore")
49
+
50
+ try:
51
+ stack["ewoksorange"] = ewoksorange.__version__
52
+ except AttributeError:
53
+ stack["ewoksorange"] = get_version("ewoksorange")
45
54
  stack["sluurp"] = sluurp.__version__
46
55
 
47
56
  return stack
@@ -257,7 +257,7 @@ def send_signal_to_local_rpc_servers(signal, port: int, extended_find: bool = Tr
257
257
  proc.send_signal(signal)
258
258
  found = True
259
259
  return
260
- except (psutil.PermissionError, psutil.AccessDenied):
260
+ except (PermissionError, psutil.AccessDenied):
261
261
  pass
262
262
  if not extended_find:
263
263
  return
@@ -272,5 +272,5 @@ def send_signal_to_local_rpc_servers(signal, port: int, extended_find: bool = Tr
272
272
  f"process pid: {proc.pid} - {proc.name()} seems to be one occupying port {port}"
273
273
  )
274
274
  return
275
- except (psutil.PermissionError, psutil.AccessDenied):
275
+ except (PermissionError, psutil.AccessDenied):
276
276
  pass
@@ -85,6 +85,7 @@ class H5ToNxProcess(
85
85
  "h5_to_nx_configuration should be a dict or an instance of {HDF5Config}"
86
86
  )
87
87
  config.bam_single_file = True
88
+ config.no_master_file = True
88
89
  try:
89
90
  convs = nxtomomill_converter.from_h5_to_nx(
90
91
  configuration=config, progress=self.progress
@@ -194,7 +194,7 @@ class CastVolumeTask(
194
194
  )
195
195
  if overwrite:
196
196
  command += " --overwrite"
197
- command += f" --output_type={str(output_data_type)}"
197
+ command += f" --output-data-type={str(output_data_type)}"
198
198
  if data_min is not None:
199
199
  command += f" --data_min={data_min}"
200
200
  if data_max is not None:
tomwer/core/settings.py CHANGED
@@ -90,7 +90,7 @@ class SlurmSettingsMode(_Enum):
90
90
  class SlurmSettings:
91
91
  # Default slurm cluster configuration
92
92
 
93
- N_CORES_PER_TASK = 4
93
+ N_CORES_PER_TASK = 16
94
94
  """Number of CPU per worker"""
95
95
 
96
96
  N_TASKS = 1
@@ -130,13 +130,13 @@ class DefaultSlurmSettingsCastVolume(SlurmSettings):
130
130
  default proposed configuration for casting a volume remotely
131
131
  """
132
132
 
133
- N_GPUS_PER_WORKER = 0
133
+ N_JOBS = 1
134
134
 
135
- N_CORES_PER_TASK = 8
135
+ N_GPUS_PER_WORKER = 0
136
136
 
137
137
  MEMORY_PER_WORKER = 128 # memory in GB
138
138
 
139
- PARTITION = "nice-long"
139
+ PARTITION = "nice"
140
140
 
141
141
 
142
142
  class DefaultSlurmSettingsSliceReconstruction(SlurmSettings):
@@ -144,19 +144,15 @@ class DefaultSlurmSettingsSliceReconstruction(SlurmSettings):
144
144
  default proposed configuration for reconstructing a single slice remotely
145
145
  """
146
146
 
147
- MEMORY_PER_WORKER = 256 # memory in GB
148
-
149
- PARTITION = None
147
+ N_JOBS = 1
150
148
 
149
+ N_GPUS_PER_WORKER = 1
151
150
 
152
- class DefaultSlurmSettingsVolumeReconstruction(SlurmSettings):
153
- """
154
- default proposed configuration for reconstructing a full volume remotely
155
- """
151
+ MEMORY_PER_WORKER = 220 # memory in GB
156
152
 
157
- MEMORY_PER_WORKER = 256 # memory in GB
158
153
 
159
- PARTITION = None
154
+ class DefaultSlurmSettingsVolumeReconstruction(DefaultSlurmSettingsSliceReconstruction):
155
+ pass
160
156
 
161
157
 
162
158
  class DefaultSlurmSettingsStitching(SlurmSettings):
@@ -164,8 +160,10 @@ class DefaultSlurmSettingsStitching(SlurmSettings):
164
160
  default proposed configuration for stitching
165
161
  """
166
162
 
167
- N_JOBS = 15
163
+ N_CORES_PER_TASK = 8
168
164
 
169
- PARTITION = "nice-long"
165
+ N_JOBS = 16
170
166
 
171
167
  N_GPUS_PER_WORKER = 0
168
+
169
+ PARTITION = "nice"
tomwer/version.py CHANGED
@@ -77,7 +77,7 @@ RELEASE_LEVEL_VALUE = {
77
77
 
78
78
  MAJOR = 1
79
79
  MINOR = 4
80
- MICRO = 8
80
+ MICRO = 10
81
81
  RELEV = "final" # <16
82
82
  SERIAL = 0 # <16
83
83
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tomwer
3
- Version: 1.4.8
3
+ Version: 1.4.10
4
4
  Summary: "tomography workflow tools"
5
5
  Home-page: https://gitlab.esrf.fr/tomotools/tomwer
6
6
  Author: Henri Payno, Pierre Paleo, Pierre-Olivier Autran, Jérôme Lesaint, Alessandro Mirone
@@ -26,7 +26,7 @@ orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows,sha256=kFGXGxc3eW7i
26
26
  orangecontrib/tomwer/tutorials/id16b/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  orangecontrib/tomwer/widgets/__init__.py,sha256=dX_TpkBh3mVsrj3EeGglEESsnZAEVq7V0Nb9bnBrb-8,1214
28
28
  orangecontrib/tomwer/widgets/utils.py,sha256=yq1wZfpfY3iVAhwMRBls57q02lhljO89WRKN7MxMMNg,983
29
- orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py,sha256=uvtstSQ3rRB_T0f734zPEZEelUQRe9btkjP7PJfj8zk,8176
29
+ orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py,sha256=zXjddYmkhyBnoRCstZ6AYN1mG84xiOKaIntg5tqe4jw,9927
30
30
  orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py,sha256=L_fX3EFyyx71Fg-FI8ab34ZPSUzrwKGJLcS2FnYCY_c,2565
31
31
  orangecontrib/tomwer/widgets/cluster/__init__.py,sha256=vOOJnIIaLWAj8tnxD9MRzWDyYgk-cyuBsN7QQ5FrIoQ,385
32
32
  orangecontrib/tomwer/widgets/cluster/icons/slurm.png,sha256=C-YBLwXCnh0oo4nvEt80WxX_jKYGUAFpWMUSlzt6ke0,1995
@@ -36,7 +36,7 @@ orangecontrib/tomwer/widgets/cluster/icons/slurmobserver.svg,sha256=N22gP4exnQP5
36
36
  orangecontrib/tomwer/widgets/cluster/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  orangecontrib/tomwer/widgets/control/AdvancementOW.py,sha256=XCZ3UEVNa_QneIBtcK03jbjmimszhs0_JiIcQAVS8y8,1108
38
38
  orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py,sha256=kGzxJZMMw30ZaMm_cVv_a-99AvkWHVhHcZS7RRZvmJM,8039
39
- orangecontrib/tomwer/widgets/control/DataListenerOW.py,sha256=PV7AOW5dIEk88uMf39y_oR8DhJJvfy67MBA6zJGsxig,13902
39
+ orangecontrib/tomwer/widgets/control/DataListenerOW.py,sha256=YEjPbDJCEi9O0YYxy9lIHiZ68jO_jQmPtbmNMyG9LuI,13837
40
40
  orangecontrib/tomwer/widgets/control/DataSelectorOW.py,sha256=zQNxYEJTxprjc83eyG6b9Ng0JVWmaZxhGb1T-jovMlU,4078
41
41
  orangecontrib/tomwer/widgets/control/DataTransfertOW.py,sha256=SKokOHQT-LPDB1hpnsaLyUzCw_GValyC-B9WyXMjxzM,5942
42
42
  orangecontrib/tomwer/widgets/control/DataValidatorOW.py,sha256=p19UYGoXtem_OxfQm_kEjQf3xKsqwyF_Ay5tQYDlVeY,5774
@@ -219,7 +219,7 @@ orangecontrib/tomwer/widgets/visualization/tests/__init__.py,sha256=47DEQpj8HBSa
219
219
  tomwer/__init__.py,sha256=cMIyH-uRxpa9WVnAuWjiBD7k9TK57WO21RzP_S-Mb8I,460
220
220
  tomwer/__main__.py,sha256=7tCADiS4u7k1PCxFhlRAcYSIOpxQTGUTx8sCEQ-hi1E,8707
221
221
  tomwer/utils.py,sha256=7h7dEgKAEUmQ43jkULvC1B9Adl55nkCty-SEKUKCl4U,7008
222
- tomwer/version.py,sha256=9eVN2X5pHYpA_0DB79D32-UlghmotJxh_g2O_lUlL70,4386
222
+ tomwer/version.py,sha256=NJGLpRUHDrl6XJCDG9AlbBmq_Bf8it9wSJtAsQ9KdUc,4387
223
223
  tomwer/app/__init__.py,sha256=h1FKED7Tw5f99yikygt7ruXsdrxQhcJxO7kagLGxhJg,84
224
224
  tomwer/app/axis.py,sha256=lB-IZx1o6KTWLIelITvYCIu2flFTB9NhuIfD2MhUZZA,5826
225
225
  tomwer/app/canvas.py,sha256=y8rYOiwmv6ug7JcjgkOzEiGQnNXjKWNNmKofT0n8TFg,1538
@@ -249,14 +249,14 @@ tomwer/app/canvas_launcher/config.py,sha256=sLlsp7iy1s2IyxqvSohGbaOpPUP6syuj5P-8
249
249
  tomwer/app/canvas_launcher/environ.py,sha256=ljQyPL_u9ai1CWmmq8uGHbn437CZWyX4uJtrDIyabGk,2453
250
250
  tomwer/app/canvas_launcher/mainwindow.py,sha256=KZzbY3AuHITdaS8K4jG2QomD5DEgQqHRYcIe9hymC9g,22283
251
251
  tomwer/app/canvas_launcher/splash.py,sha256=cpUuZVKwlQbeAWfAqjpjP4q1v1MmkfxU6WWllLSVZo8,508
252
- tomwer/app/canvas_launcher/utils.py,sha256=4zWaao2EW5OcKomAw38YUIUgOLfkUPGdPCqLsfD1NMI,1031
252
+ tomwer/app/canvas_launcher/utils.py,sha256=WfsCHAhiiv4-TUNodgyKJenVvmFWnxsy5OBwTBK2jKE,1279
253
253
  tomwer/app/canvas_launcher/widgetsscheme.py,sha256=9Or1KMmSxIs_dJmJGV0Xhjg9HH4m8aPGbtiEuK2i6q0,2744
254
254
  tomwer/app/stitching/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
255
  tomwer/app/stitching/common.py,sha256=TCXNnAz2MSJrrogB5iWptktxq-g5ED2FUt_jMnDXpnQ,14723
256
256
  tomwer/core/__init__.py,sha256=-EtD8J-a7WVnCgYS7WHkisYn61iM2PpHWcXwE5BetJ8,71
257
257
  tomwer/core/futureobject.py,sha256=8Sd9gOrdhYc0PvzPeZPBNOmaHuwB5epG6RJyABRsCmQ,5113
258
258
  tomwer/core/resourcemanager.py,sha256=VLNnVodMa-HOMZhN2qpUR_L6phJ8IHPUEPYMxuW6VHg,1067
259
- tomwer/core/settings.py,sha256=57qD44LU_3eB50rD7RHdg5nBweiHerzWbXHcBUna6gY,4089
259
+ tomwer/core/settings.py,sha256=xMlOdWeNJxNsi0_qfMXZI8lrzjeRRDftGtT3lFpjFL8,3992
260
260
  tomwer/core/signal.py,sha256=I5TUcyeBZzrEh1SFGs-ylJSL1aBs41ZFb3IJo3O_55c,6115
261
261
  tomwer/core/tomwer_object.py,sha256=rIaD1QlN3Q0cR5h9Sap1Whn4lawu5z9zZ1KspdhYbg0,2023
262
262
  tomwer/core/cluster/__init__.py,sha256=w58VJZaGwC-8hwHLADeJrW9-rs-PrVz6few3AqpScqQ,116
@@ -275,7 +275,7 @@ tomwer/core/process/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
275
275
  tomwer/core/process/control/datadiscovery.py,sha256=Rihr0KI0EhrgG9WTotx3r9gXKkIgRic5lu5jXPRSy-o,377
276
276
  tomwer/core/process/control/emailnotifier.py,sha256=N6tOQO2f0IBbIfUtSChl3XQCrkTJzNOiaRFDl3Ghbhk,4433
277
277
  tomwer/core/process/control/nxtomoconcatenate.py,sha256=fRa8XeLyc4ocQGQtwcHYX4dbN5vM2oHO-2_3fv3HtII,3866
278
- tomwer/core/process/control/nxtomomill.py,sha256=Wnkm1xCh4vuqdCvBKVpl_xfogynTe-NGpckgC-UB6hk,7753
278
+ tomwer/core/process/control/nxtomomill.py,sha256=4G5AvsRRzUdl-OjNjb3G8RO9Mn5iNe1Ux0XednfbAHQ,7790
279
279
  tomwer/core/process/control/scanlist.py,sha256=bDUf7TDUslhCUPElUXTT_1fHAKRvhrDTzz3Gr1Wg640,697
280
280
  tomwer/core/process/control/scanselector.py,sha256=YD41hajIF4KdDEb6bkP2ZqMyCRmwvVNXzRyzqD5nSNQ,368
281
281
  tomwer/core/process/control/scantransfer.py,sha256=WoXwalXem7G3baP1cH4czpq1DqlTX614TilT6ojsNOs,24366
@@ -286,7 +286,7 @@ tomwer/core/process/control/tomoobjseries.py,sha256=_fiVup4ugH5BAC6HwkIziA0QweEu
286
286
  tomwer/core/process/control/volumeselector.py,sha256=0uv1Q8k5Ms1h_iU-ldhb-Y35xsy1kHwQrbUQguV5M_A,370
287
287
  tomwer/core/process/control/datalistener/__init__.py,sha256=gSEeJEDX8E-8HzY7tmPc32QKfqSZHG4Ad06IxDrzOWo,52
288
288
  tomwer/core/process/control/datalistener/datalistener.py,sha256=kNDTIeMhJ6n019b2XWoGoB8zDCv-zpVxE7YDzZR9KBM,9606
289
- tomwer/core/process/control/datalistener/rpcserver.py,sha256=LS_4Uwuj7T9ADLSE8sr6i5KacaTVxQI_VxqPpz5dsUU,9569
289
+ tomwer/core/process/control/datalistener/rpcserver.py,sha256=JkEmWB1kRzjaXPqzEu-tWN87SlK3uuk3gN7la42wSF0,9555
290
290
  tomwer/core/process/control/datawatcher/__init__.py,sha256=F9d_bGOr5iAPEfnKaf5XOEwQSR1wZp_wkzcDYNSuin4,50
291
291
  tomwer/core/process/control/datawatcher/datawatcher.py,sha256=UmOEW9vA3jJ93R1QcVRisknB_S2j0Nfsc7477VjwThE,15265
292
292
  tomwer/core/process/control/datawatcher/datawatcherobserver.py,sha256=q7ZB9WMWSyeEUtuU9SKuvJ80eBlFzLUC31NlLIYfWfk,24197
@@ -332,7 +332,7 @@ tomwer/core/process/reconstruction/darkref/darkrefscopy.py,sha256=D0i__aTsEvfJg_
332
332
  tomwer/core/process/reconstruction/darkref/params.py,sha256=vrDN8bZu28E4zLuHJzNvIIyyZq-4yhX9k9itXYCJ2iM,8756
333
333
  tomwer/core/process/reconstruction/darkref/settings.py,sha256=35jliuOIjMKTOJjgn4uiotcDEr6RskpLHfRWWLm76dc,188
334
334
  tomwer/core/process/reconstruction/nabu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
- tomwer/core/process/reconstruction/nabu/castvolume.py,sha256=DGNj3YF97GRABy4xvhjjv8_IgyWoRb5TkBQcDFlpUDM,9945
335
+ tomwer/core/process/reconstruction/nabu/castvolume.py,sha256=-tz0Kmf-3oJbWxPkFEZnvXTeF7dkiQKPaZ9qgcgD7MU,9950
336
336
  tomwer/core/process/reconstruction/nabu/helical.py,sha256=gauUkoPiShvnvMQrCQXv28g0yLe-GceML5kYMSXmNIg,1997
337
337
  tomwer/core/process/reconstruction/nabu/nabucommon.py,sha256=6jOdKpUW5MbRkf53evu4-ZBkQaNWMfl799-f0zQ9-1Q,24554
338
338
  tomwer/core/process/reconstruction/nabu/nabuscores.py,sha256=e5tRG1QtmVAdXb8KHMTMtBXA3KQXqKKcqipY2HzMURg,25275
@@ -903,9 +903,9 @@ tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewer
903
903
  tomwer/tests/test_ewoks/test_conversion.py,sha256=a8cEWbErXiFCAkaapi0jeEoRKYxcFQCoa-Jr_u77_OM,3656
904
904
  tomwer/tests/test_ewoks/test_single_node_execution.py,sha256=YBUHfiAnkciv_kjj7biC5fOs7c7ofNImM_azGMn4LZM,2813
905
905
  tomwer/tests/test_ewoks/test_workflows.py,sha256=Eq80eexf5NVL7SzvwctLOaUeuQ8V3vDiFiHgbJA4Yb8,4871
906
- tomwer-1.4.8.dist-info/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
907
- tomwer-1.4.8.dist-info/METADATA,sha256=N3KGtY5cMcf1QBDrJWJsGSetIU0TUEdUfV0okormuLI,13415
908
- tomwer-1.4.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
909
- tomwer-1.4.8.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
910
- tomwer-1.4.8.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
911
- tomwer-1.4.8.dist-info/RECORD,,
906
+ tomwer-1.4.10.dist-info/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
907
+ tomwer-1.4.10.dist-info/METADATA,sha256=W_9nqYKQj3V77AgEbbejG4mHQXzEHvI08AHHvxXbydM,13416
908
+ tomwer-1.4.10.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
909
+ tomwer-1.4.10.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
910
+ tomwer-1.4.10.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
911
+ tomwer-1.4.10.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5