tomwer 1.4.15__py3-none-any.whl → 1.4.17__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.
@@ -33,6 +33,8 @@ from tomwer.gui.cluster.slurm import SlurmSettingsWidget
33
33
  from tomwer.core.scan.scanbase import TomwerScanBase
34
34
  from tomwer.core.scan.nxtomoscan import NXtomoScan
35
35
  from tomwer.core.volume import HDF5Volume
36
+ from tomwer.core.volume.volumebase import TomwerVolumeBase
37
+ from tomwer.core.tomwer_object import TomwerObject
36
38
 
37
39
 
38
40
  class MainWidget(qt.QTabWidget):
@@ -131,6 +133,14 @@ class MainWidget(qt.QTabWidget):
131
133
  def loadSettings(self, config_file):
132
134
  self._stitchingConfigWindow._loadSettings(config_file)
133
135
 
136
+ def get_available_pre_processing_stitching_mode(self):
137
+ return self._stitchingConfigWindow.get_available_pre_processing_stitching_mode()
138
+
139
+ def get_available_post_processing_stitching_mode(self):
140
+ return (
141
+ self._stitchingConfigWindow.get_available_post_processing_stitching_mode()
142
+ )
143
+
134
144
 
135
145
  class _StitcherThread(qt.QThread):
136
146
  DEFAULT_OUTPUT_CONFIG_NAME = "stitching_conf_autosave.conf"
@@ -189,6 +199,9 @@ class _StitcherThread(qt.QThread):
189
199
 
190
200
 
191
201
  class MainWindow(qt.QDialog):
202
+
203
+ sigTomoObjAdded = qt.Signal(TomwerObject)
204
+
192
205
  def __init__(self, axis: int, parent=None) -> None:
193
206
  super().__init__(parent)
194
207
  self.setLayout(qt.QVBoxLayout())
@@ -268,7 +281,22 @@ class MainWindow(qt.QDialog):
268
281
  self._mainWindow._stitchingConfigWindow._widget._mainWidget.setCurrentWidget(
269
282
  orderedListWidget
270
283
  )
271
- orderedListWidget._callbackAddTomoObj()
284
+ tomo_objs = orderedListWidget._callbackAddTomoObj()
285
+ for tomo_obj in tomo_objs:
286
+ if len(tomo_objs) > 0:
287
+ self.__updateStitchingTypeFromObjAdded(tomo_obj=tomo_objs[0])
288
+
289
+ def __updateStitchingTypeFromObjAdded(self, tomo_obj: TomwerObject):
290
+ if isinstance(tomo_obj, TomwerScanBase):
291
+ self.setStitchingType(self.get_available_pre_processing_stitching_mode()[0])
292
+ elif isinstance(tomo_obj, TomwerVolumeBase):
293
+ self.setStitchingType(
294
+ self.get_available_post_processing_stitching_mode()[0]
295
+ )
296
+ else:
297
+ raise TypeError(
298
+ f"tomo_obj is expected to be an instance of {type(TomwerObject)}. Got {type(tomo_obj)}"
299
+ )
272
300
 
273
301
  def close(self):
274
302
  self._mainWindow.close()
@@ -330,6 +358,12 @@ class MainWindow(qt.QDialog):
330
358
  def setPostProcessingOutput(self, url: DataUrl) -> None:
331
359
  self._mainWindow._stitchingConfigWindow.setPostProcessingOutput(url=url)
332
360
 
361
+ def get_available_pre_processing_stitching_mode(self) -> tuple[StitchingType]:
362
+ return self._mainWindow.get_available_pre_processing_stitching_mode()
363
+
364
+ def get_available_post_processing_stitching_mode(self) -> tuple[StitchingType]:
365
+ return self._mainWindow.get_available_post_processing_stitching_mode()
366
+
333
367
 
334
368
  def main(argv, stitcher_name: str, stitching_axis: int, logger):
335
369
  parser = argparse.ArgumentParser(description=__doc__)
tomwer/core/settings.py CHANGED
@@ -160,7 +160,7 @@ class DefaultSlurmSettingsStitching(SlurmSettings):
160
160
  default proposed configuration for stitching
161
161
  """
162
162
 
163
- N_CORES_PER_TASK = 8
163
+ N_CORES_PER_TASK = 1
164
164
 
165
165
  N_JOBS = 16
166
166
 
@@ -92,6 +92,30 @@ class SingleAxisStitchingWidget(qt.QWidget, _SingleAxisMixIn):
92
92
  if idx >= 0:
93
93
  self._stitchingTypeCB.setCurrentIndex(idx)
94
94
 
95
+ def get_available_pre_processing_stitching_mode(self):
96
+ pre_proc_modes: tuple[str] = tuple(
97
+ filter(
98
+ lambda mode: "preproc" in mode,
99
+ [
100
+ self._stitchingTypeCB.itemText(i_item)
101
+ for i_item in range(self._stitchingTypeCB.count())
102
+ ],
103
+ )
104
+ )
105
+ return tuple([StitchingType.from_value(mode) for mode in pre_proc_modes])
106
+
107
+ def get_available_post_processing_stitching_mode(self):
108
+ post_proc_modes: tuple[str] = tuple(
109
+ filter(
110
+ lambda mode: "postproc" in mode,
111
+ [
112
+ self._stitchingTypeCB.itemText(i_item)
113
+ for i_item in range(self._stitchingTypeCB.count())
114
+ ],
115
+ )
116
+ )
117
+ return tuple([StitchingType.from_value(mode) for mode in post_proc_modes])
118
+
95
119
  def addTomoObj(self, tomo_obj: TomwerObject):
96
120
  self._mainWidget.addTomoObj(tomo_obj)
97
121
  self._updatePreviewPixelSize()
@@ -438,6 +438,11 @@ class _SingleAxisStitchingWindow(
438
438
  # update to force overwrite
439
439
  config["output"]["overwrite_results"] = True
440
440
 
441
+ # avoid any recalculation of the axis position. So the preview is accurate
442
+ config["output"]["axis_0_params"] = ""
443
+ config["output"]["axis_1_params"] = ""
444
+ config["output"]["axis_2_params"] = ""
445
+
441
446
  # clean current preview to notify some calculation is going on
442
447
  preview_plot = self._widget._mainWidget._previewPlot
443
448
  preview_plot._waitingOverlay.show()
@@ -583,6 +588,12 @@ class _SingleAxisStitchingWindow(
583
588
  def setPostProcessingOutput(self, *args, **kwargs):
584
589
  self._outputWidget.setPostProcessingOutput(*args, **kwargs)
585
590
 
591
+ def get_available_pre_processing_stitching_mode(self):
592
+ return self._widget.get_available_pre_processing_stitching_mode()
593
+
594
+ def get_available_post_processing_stitching_mode(self):
595
+ return self._widget.get_available_post_processing_stitching_mode()
596
+
586
597
 
587
598
  class YStitchingWindow(_SingleAxisStitchingWindow, axis=1):
588
599
  pass
@@ -361,7 +361,7 @@ class EditableOrderedTomoObjWidget(AxisOrderedTomoObjWidget):
361
361
  [self._tomoObjsTableView.model().getTomoObj(item) for item in selection]
362
362
  )
363
363
 
364
- def _callbackAddTomoObj(self):
364
+ def _callbackAddTomoObj(self) -> tuple[TomwerObject]:
365
365
  dialog = qt.QFileDialog()
366
366
  dialog.setFileMode(qt.QFileDialog.ExistingFiles)
367
367
  dialog.setNameFilters(
@@ -372,9 +372,9 @@ class EditableOrderedTomoObjWidget(AxisOrderedTomoObjWidget):
372
372
 
373
373
  if not dialog.exec_():
374
374
  dialog.close()
375
- return
375
+ return ()
376
376
  elif len(dialog.selectedFiles()) == 0:
377
- return
377
+ return ()
378
378
  else:
379
379
  tomo_objs = []
380
380
  for file in dialog.selectedFiles():
@@ -386,6 +386,7 @@ class EditableOrderedTomoObjWidget(AxisOrderedTomoObjWidget):
386
386
  tomo_objs.extend(new_objs)
387
387
  for tomo_obj in tomo_objs:
388
388
  self.addTomoObj(tomo_obj=tomo_obj, trigger_callbacks=True)
389
+ return tuple(tomo_objs)
389
390
 
390
391
  def _callbackRemoveSelectedTomoObj(self):
391
392
  obj_to_remove = self.getSelectedTomoObjs()
@@ -333,9 +333,15 @@ class _TomoObjPosition(qt.QWidget):
333
333
  self.layout().addWidget(self._resetValueQPB)
334
334
 
335
335
  # connect signal / slot
336
- self._spinBox.valueChanged.connect(self._valueChanged)
336
+ self._spinBox.editingFinished.connect(self._sbEditingFinished)
337
337
  self._resetValueQPB.clicked.connect(self.resetOriginalValue)
338
338
 
339
+ def _sbEditingFinished(self):
340
+ sender = self.sender()
341
+ assert isinstance(sender, qt.QSpinBox)
342
+ new_value = sender.value()
343
+ self._valueChanged(new_value=new_value)
344
+
339
345
  def _valueChanged(self, new_value):
340
346
  self.sigValueChanged.emit(
341
347
  self.__lastValue,
@@ -354,10 +360,12 @@ class _TomoObjPosition(qt.QWidget):
354
360
  self._positionChanged()
355
361
 
356
362
  def _positionChanged(self):
357
- self._valueChanged(new_value=self._spinBox.value())
363
+ self._valueChanged(self._spinBox.value())
358
364
 
359
- def setValue(self, value: float) -> None:
365
+ def setValue(self, value: float, emit_editing_finished: bool = False) -> None:
360
366
  self._spinBox.setValue(value)
367
+ if emit_editing_finished:
368
+ self._spinBox.editingFinished.emit()
361
369
  self.__lastValue = value
362
370
 
363
371
  def getValue(self) -> float:
@@ -69,10 +69,10 @@ def test_ZStitchingWindow(
69
69
  )
70
70
 
71
71
  window._editTomoObjFirstAxisPositionsWidget.setEditionMode("free")
72
- widget_tomo_obj_0.setValue(10)
72
+ widget_tomo_obj_0.setValue(10, emit_editing_finished=True)
73
73
  assert window.getConfiguration()["stitching"]["axis_0_pos_px"] == [10, 0, -90]
74
74
  window._editTomoObjFirstAxisPositionsWidget.setEditionMode("downstream")
75
- widget_tomo_obj_0.setValue(30)
75
+ widget_tomo_obj_0.setValue(30, emit_editing_finished=True)
76
76
  assert window.getConfiguration()["stitching"]["axis_0_pos_px"] == [30, 20, -70]
77
77
  window._editTomoObjFirstAxisPositionsWidget.setEditionMode("upstream")
78
78
  widget_tomo_obj_2 = (
@@ -80,7 +80,7 @@ def test_ZStitchingWindow(
80
80
  scans[2].get_identifier().to_str()
81
81
  ]
82
82
  )
83
- widget_tomo_obj_2.setValue(-120)
83
+ widget_tomo_obj_2.setValue(-120, emit_editing_finished=True)
84
84
  assert window.getConfiguration()["stitching"]["axis_0_pos_px"] == [-20, -30, -120]
85
85
 
86
86
  # test reset positions to initial positions
@@ -437,7 +437,13 @@ class OutputVolumeDefinition(qt.QWidget):
437
437
  # output file or folder
438
438
  self._outputFileLabel = qt.QLabel("", self)
439
439
  self.layout().addWidget(self._outputFileLabel, 1, 0, 1, 1)
440
- self._outputFileQLE = QLFileSystem("", parent=None)
440
+ self._outputFileQLE = QLFileSystem(
441
+ os.path.join(
442
+ os.getcwd(),
443
+ "stitched_volume.hdf5",
444
+ ),
445
+ parent=None,
446
+ )
441
447
  self.layout().addWidget(self._outputFileQLE, 1, 1, 1, 1)
442
448
  self._selectPB = qt.QPushButton("select", self)
443
449
  self.layout().addWidget(self._selectPB, 1, 2, 1, 1)
tomwer/version.py CHANGED
@@ -77,7 +77,7 @@ RELEASE_LEVEL_VALUE = {
77
77
 
78
78
  MAJOR = 1
79
79
  MINOR = 4
80
- MICRO = 15
80
+ MICRO = 17
81
81
  RELEV = "final" # <16
82
82
  SERIAL = 0 # <16
83
83
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: tomwer
3
- Version: 1.4.15
3
+ Version: 1.4.17
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
@@ -231,6 +231,7 @@ Requires-Dist: tomoscan[test]>=2.1.0a18; extra == "test"
231
231
  Provides-Extra: setup-requires
232
232
  Requires-Dist: setuptools; extra == "setup-requires"
233
233
  Requires-Dist: numpy>=1.12; extra == "setup-requires"
234
+ Dynamic: license-file
234
235
 
235
236
  .. image:: doc/img/tomwer.png
236
237
  :alt: Tomwer Logo
@@ -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=3Bu01Kv0iupUBJWcv0kRLLFRDTk3TM0Dgxo2TgB4wfc,4387
222
+ tomwer/version.py,sha256=bLV36WJKGROMwVXzqAZ8PSBx-f4ml945UwWkG4kKaug,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
@@ -252,11 +252,11 @@ tomwer/app/canvas_launcher/splash.py,sha256=cpUuZVKwlQbeAWfAqjpjP4q1v1MmkfxU6WWl
252
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
- tomwer/app/stitching/common.py,sha256=-DNsE3XbBBCvm-NqSTCyJMiYY5GoGHkdzC0y66jZ6Po,15779
255
+ tomwer/app/stitching/common.py,sha256=unFHRuJdzKMLlBM6znQx-KPcbJ7H__EKKe8CUw_Apfs,17293
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=npTx0hqXetRBe_GU6HGWqg6tMSaEGPnBv5OnGW8K95A,4002
259
+ tomwer/core/settings.py,sha256=ncFUtFYm_b9aBysgRtQgbJNicgPz4ras4UyzSB1IASQ,4002
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
@@ -598,13 +598,13 @@ tomwer/gui/reconstruction/tests/test_saaxis.py,sha256=6lXKa5yY8pYkcBap7hyzLwhp8W
598
598
  tomwer/gui/reconstruction/tests/test_sadeltabeta.py,sha256=96tE_gxIcmp0qDXQmIwSEkYl3Js7dT2CyUH1doyjGc0,4491
599
599
  tomwer/gui/samplemoved/__init__.py,sha256=jNA03mYWfP3_S1MRet6ijYe5DNCTK3Br7-5yrW3oEG4,8240
600
600
  tomwer/gui/samplemoved/selectiontable.py,sha256=CzQnJBxfIeoZSw8aR0VvrsaIg6fozREI8YRXdzQbA7Q,7968
601
- tomwer/gui/stitching/SingleAxisStitchingWidget.py,sha256=syBzSf8yRE9poZh0UKqZcyD8ZmEt-vama8bVRsGBuDw,13023
601
+ tomwer/gui/stitching/SingleAxisStitchingWidget.py,sha256=KSAEUVpSkZ56XjnpF2RlrgenjIkfJct367kbZaYQlXA,13917
602
602
  tomwer/gui/stitching/StitchingOptionsWidget.py,sha256=c5kRZOMuGKK_CgK28IkBawaVvK2cmczbWF4TcVUZxq4,18186
603
- tomwer/gui/stitching/StitchingWindow.py,sha256=g5lurZ3rZ010PBvU4oOWqDgcF3SbDzIqgIOyBHZ-Lyw,24608
603
+ tomwer/gui/stitching/StitchingWindow.py,sha256=tm7aadWGUcmHnVXws1ifJtbb835U3dF4mLZGiP3VQSM,25103
604
604
  tomwer/gui/stitching/__init__.py,sha256=jYSG4DSAtMGm9Yuf4MVdlSdMO8JKOp_t-8NKsnR92LU,45
605
605
  tomwer/gui/stitching/action.py,sha256=7CkACYKsRt3c_6PgrmQVZwSi9UwvGrQVUymJytHbqcE,1659
606
606
  tomwer/gui/stitching/alignment.py,sha256=QGWnogvBSbx3kk8lrFDoipmhqbVHEe46WGAeOorlHQ8,4001
607
- tomwer/gui/stitching/axisorderedlist.py,sha256=2Os8cjZM9B-LCYB9p6JW7MpqXWaVd6oeWSqP4ZbSlBM,17980
607
+ tomwer/gui/stitching/axisorderedlist.py,sha256=IEJoOXlf8wpWkJijLjF-jGRMHOpQ8lGVuajvIqc670s,18045
608
608
  tomwer/gui/stitching/metadataholder.py,sha256=jeR6_DM529aEmxQLeLM3CB-49GHq6KLY2Nc24kSC-HA,913
609
609
  tomwer/gui/stitching/normalization.py,sha256=sECW3S83-eQJut2RodfxCRsTnTV4XLCL-z-pVtD1U5Y,4492
610
610
  tomwer/gui/stitching/preview.py,sha256=no74hLS4d_mDVwMXkO7k5aNn-B3Y4h-Jx0dlM20rhbE,2292
@@ -616,11 +616,11 @@ tomwer/gui/stitching/utils.py,sha256=ZgfKHLyH7l81Ry-4M5ajdwqdeos_J4g4Ee3j3yoXcJo
616
616
  tomwer/gui/stitching/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
617
617
  tomwer/gui/stitching/config/axisparams.py,sha256=1cRa9ukPvVK7AGePJsJx2M_i_5TMLJocVwrotz7uxXk,8026
618
618
  tomwer/gui/stitching/config/output.py,sha256=2kOKV5vTt1scIkmEUyhSvERRs8UvEHojRazCC0RzeE8,6176
619
- tomwer/gui/stitching/config/positionoveraxis.py,sha256=NGgjxzhxCXa3fBtHP9O9oiqLw8lpUqV_NNbhrnRGrdY,16328
619
+ tomwer/gui/stitching/config/positionoveraxis.py,sha256=3vKasddv6d--qO5Izjg6JBE1HXhgYI-RBNFBuLF-BUU,16642
620
620
  tomwer/gui/stitching/config/stitchingstrategies.py,sha256=BI5KYs0qeEp-hfFI7M9MJN8EHmoC7iaJqQ7Hf902v6Y,4598
621
621
  tomwer/gui/stitching/config/tomoobjdetails.py,sha256=GkQIqE2ArXFJFtmjrwc0txbZldNKJK-fpMEF_68S1qQ,14667
622
622
  tomwer/gui/stitching/config/tests/test_axisparams.py,sha256=btumHdTFr2xmiFZ-GbWAuRy6kjwYUilMrluhiE0repM,738
623
- tomwer/gui/stitching/tests/test_ZStitchingWindow.py,sha256=NEfL8fjcYreiAKyfojiUdhAmoQx0bPjFLZUklS2xQkk,3007
623
+ tomwer/gui/stitching/tests/test_ZStitchingWindow.py,sha256=_qywMShdazk7WekGCUA2rv8ZN-WGuQJ-v8zqCGuWYN0,3091
624
624
  tomwer/gui/stitching/tests/test_axis_ordered_list.py,sha256=ueXQ-YrP0S325PrJiPLdsM4GdzhZm8lTzb-P9hJ3TEY,700
625
625
  tomwer/gui/stitching/tests/test_normalization.py,sha256=m4anggtaZ32JSfZ5yHgis5CD0HYpjLvS6bpDitQv9ec,643
626
626
  tomwer/gui/stitching/tests/test_preview.py,sha256=sQ0fh07e1oYgWwlB4tqHlOv9Qsf_-bZS39GfsolGW3s,2349
@@ -641,7 +641,7 @@ tomwer/gui/utils/completer.py,sha256=XQGVSiUdLa1MfgXPDY5qfcTxtjVerxmVKXmWDb-kQ-I
641
641
  tomwer/gui/utils/flow.py,sha256=p9KoaXSK_YhyFrpUTXr-HI1pAoDRiCPW1F9tVgjSIbA,10668
642
642
  tomwer/gui/utils/gpu.py,sha256=R2sRA77zyxdy5bVYGNltQpKS_9wuaj9eIn6rglsWGWg,2223
643
643
  tomwer/gui/utils/illustrations.py,sha256=SoLAGBIrdYAu44qIZM8kvC74naOTJzUyAxSUkpblyEw,3134
644
- tomwer/gui/utils/inputwidget.py,sha256=s1siEQ6nBOTVRF7v8wlgCISS0bYiVmWYpFnWCqM5ueY,22376
644
+ tomwer/gui/utils/inputwidget.py,sha256=E8S4XwuIFxdm7ylBzqQVcJtEYif5CgMx5RTAyQ9Vs8E,22505
645
645
  tomwer/gui/utils/loadingmode.py,sha256=A9FeNacgnDFqhyrq5-qybCvV_NwGdXU-Skr_5vwoTZM,2928
646
646
  tomwer/gui/utils/qt_utils.py,sha256=QMXte_vdCEwr4Vybt5sopczQ_OuRd1W5h6SydqFH0F8,538
647
647
  tomwer/gui/utils/sandboxes.py,sha256=QfSRhL1KrFhS2Wr734Tzvp1OjTp82Ozc0ULr-JycFlI,6145
@@ -906,9 +906,9 @@ tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewer
906
906
  tomwer/tests/test_ewoks/test_conversion.py,sha256=a8cEWbErXiFCAkaapi0jeEoRKYxcFQCoa-Jr_u77_OM,3656
907
907
  tomwer/tests/test_ewoks/test_single_node_execution.py,sha256=YBUHfiAnkciv_kjj7biC5fOs7c7ofNImM_azGMn4LZM,2813
908
908
  tomwer/tests/test_ewoks/test_workflows.py,sha256=Eq80eexf5NVL7SzvwctLOaUeuQ8V3vDiFiHgbJA4Yb8,4871
909
- tomwer-1.4.15.dist-info/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
910
- tomwer-1.4.15.dist-info/METADATA,sha256=45T9P2OS_Tti890RELnObNYZ1bDniBOZ_G-yEVSfEtI,13416
911
- tomwer-1.4.15.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
912
- tomwer-1.4.15.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
913
- tomwer-1.4.15.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
914
- tomwer-1.4.15.dist-info/RECORD,,
909
+ tomwer-1.4.17.dist-info/licenses/LICENSE,sha256=62p1wL0n9WMTu8x2YDv0odYgTqeSvTd9mQ0v6Mq7lzE,1876
910
+ tomwer-1.4.17.dist-info/METADATA,sha256=XwIaehtXQw8A82CKM2JkllfIOo_lKcvLJ5HFrsSCPpA,13438
911
+ tomwer-1.4.17.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
912
+ tomwer-1.4.17.dist-info/entry_points.txt,sha256=py3ZUWvGnWGc5c7Yhw_uBTm8Fmew0BDw3aQZnWMBNZI,500
913
+ tomwer-1.4.17.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
914
+ tomwer-1.4.17.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (76.0.0)
2
+ Generator: setuptools (77.0.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5