tomwer 1.3.13__py3-none-any.whl → 1.3.15__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.
@@ -199,6 +199,15 @@ class DarkRefsCopy(DarkRefsTask):
199
199
  update_mode="replace",
200
200
  )
201
201
 
202
+ def clear_cache(self):
203
+ """
204
+ remove the file used to cache the reduced darks / flats.
205
+ This can be used in the case it contain unrelevant data. Like frame with another shape...
206
+ """
207
+ cache_file = DarkRefsCopy.get_save_file(self._savedir)
208
+ if os.path.exists(cache_file):
209
+ os.remove(cache_file)
210
+
202
211
  def _clear_cache_data_path(self, file_path: str, data_path: str):
203
212
  if not os.path.exists(file_path):
204
213
  return
@@ -207,7 +216,14 @@ class DarkRefsCopy(DarkRefsTask):
207
216
  del h5f[data_path]
208
217
 
209
218
  def set_darks_and_flats_from_scan(self, scan: TomwerScanBase) -> bool:
210
- if scan.reduced_flats in (None, {}):
219
+ has_flats = scan.reduced_flats not in (None, {})
220
+ has_darks = scan.reduced_darks not in (None, {})
221
+ if has_flats and has_darks:
222
+ # if the scan has darks and flats remove directly the cache file
223
+ # else in append mode HDF5 is not removing the dataset and
224
+ # the cache size will continue to increase
225
+ self.clear_cache()
226
+ if not has_flats:
211
227
  logger.warning(f"No flat found for {scan}. Unable to copy them")
212
228
  else:
213
229
  self._clear_cache_data_path(
@@ -221,7 +237,7 @@ class DarkRefsCopy(DarkRefsTask):
221
237
  mode="a",
222
238
  update_mode="replace",
223
239
  )
224
- if scan.reduced_darks in (None, {}):
240
+ if not has_darks:
225
241
  logger.warning(f"No dark found for {scan}. Unable to copy them")
226
242
  else:
227
243
  self._clear_cache_data_path(
@@ -574,28 +574,36 @@ class NXtomoEditor(qt.QWidget):
574
574
  ),
575
575
  solve_empty_dependency=True,
576
576
  )
577
- detector_transformation_path = "/".join(
578
- (
579
- nexus_paths.INSTRUMENT_PATH,
580
- nexus_paths.nx_instrument_paths.DETECTOR_PATH,
581
- nexus_paths.nx_detector_paths.NX_TRANSFORMATIONS,
582
- ),
583
- )
584
- if detector_transformation_path in entry:
585
- del entry[detector_transformation_path]
586
-
587
- detector_transformation_path = "/".join(
588
- (scan.entry, detector_transformation_path)
577
+ if nexus_paths.nx_detector_paths.NX_TRANSFORMATIONS is not None:
578
+ # old NXtomo are not handling NX_TRANSFORMATIONS
579
+ detector_transformation_path = "/".join(
580
+ (
581
+ nexus_paths.INSTRUMENT_PATH,
582
+ nexus_paths.nx_instrument_paths.DETECTOR_PATH,
583
+ nexus_paths.nx_detector_paths.NX_TRANSFORMATIONS,
584
+ ),
585
+ )
586
+ if detector_transformation_path in entry:
587
+ del entry[detector_transformation_path]
588
+
589
+ detector_transformation_path = "/".join(
590
+ (scan.entry, detector_transformation_path)
591
+ )
592
+ else:
593
+ _logger.debug(
594
+ "Old version of NXtomo found. No information about transformation will be saved"
595
+ )
596
+ detector_transformation_path = None
597
+
598
+ if detector_transformation_path is not None:
599
+ dicttonx(
600
+ nx_dict,
601
+ h5file=scan.master_file,
602
+ h5path=detector_transformation_path,
603
+ update_mode="replace",
604
+ mode="a",
589
605
  )
590
606
 
591
- dicttonx(
592
- nx_dict,
593
- h5file=scan.master_file,
594
- h5path=detector_transformation_path,
595
- update_mode="replace",
596
- mode="a",
597
- )
598
-
599
607
  # clear caches to make sure all modifications will be considered
600
608
  scan.clear_caches()
601
609
  scan.clear_frames_caches()
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import h5py
2
3
 
3
4
  import numpy
4
5
  import pytest
@@ -252,7 +253,7 @@ def test_nx_editor_lock(
252
253
  # 3.0 save the nxtomo
253
254
  widget.overwriteNXtomo()
254
255
 
255
- # 4.0 check save went twell
256
+ # 4.0 check save went well
256
257
  overwrite_nx_tomo = NXtomo().load(
257
258
  file_path=file_path,
258
259
  data_path=entry,
@@ -305,3 +306,59 @@ def test_nx_editor_lock(
305
306
  "instrument.detector.x_flipped": (False, False),
306
307
  "instrument.detector.y_flipped": (True, False),
307
308
  }
309
+
310
+
311
+ def test_nxtomo_editor_with_missing_paths(
312
+ tmp_path,
313
+ qtapp, # noqa F811
314
+ ):
315
+ """
316
+ test widget behavior in the case some nxtomo path don't exist
317
+ """
318
+
319
+ # create nx tomo with raw data
320
+ nx_tomo = NXtomo()
321
+ nx_tomo.instrument.detector.image_key_control = [ImageKey.PROJECTION.value] * 12
322
+ nx_tomo.instrument.detector.data = numpy.empty(shape=(12, 10, 10))
323
+ nx_tomo.sample.rotation_angle = numpy.linspace(0, 20, num=12)
324
+
325
+ file_path = os.path.join(tmp_path, "nxtomo.nx")
326
+ entry = "entry0000"
327
+ nx_tomo.save(
328
+ file_path=file_path,
329
+ data_path=entry,
330
+ )
331
+ # delete some path that can be missing in some case
332
+ with h5py.File(file_path, mode="a") as h5f:
333
+ assert "entry0000" in h5f
334
+ assert "entry0000/beam" not in h5f
335
+ assert "entry0000/instrument/beam" not in h5f
336
+ assert "entry0000/instrument/detector/distance" not in h5f
337
+ assert "entry0000/instrument/detector/x_pixel_size" not in h5f
338
+ assert "entry0000/instrument/detector/y_pixel_size" not in h5f
339
+ assert "entry0000/instrument/detector/transformations" not in h5f
340
+
341
+ scan = NXtomoScan(file_path, entry)
342
+
343
+ # create the widget and do the edition
344
+ widget = NXtomoEditor()
345
+
346
+ widget.setScan(scan=scan)
347
+
348
+ widget._distanceMetricEntry.setValue(0.05)
349
+ widget._energyEntry.setValue(50)
350
+ widget._xPixelSizeMetricEntry.setValue(0.02)
351
+ widget._yPixelSizeMetricEntry.setValue(0.03)
352
+
353
+ # overwrite the NXtomo
354
+ widget.overwriteNXtomo()
355
+
356
+ # check save went well
357
+ overwrite_nx_tomo = NXtomo().load(
358
+ file_path=file_path,
359
+ data_path=entry,
360
+ )
361
+ assert overwrite_nx_tomo.instrument.detector.x_pixel_size.value == 0.02
362
+ assert overwrite_nx_tomo.instrument.detector.y_pixel_size.value == 0.03
363
+ assert overwrite_nx_tomo.energy.value == 50
364
+ assert overwrite_nx_tomo.instrument.detector.distance.value == 0.05
@@ -31,6 +31,7 @@ __license__ = "MIT"
31
31
  __date__ = "14/10/2019"
32
32
 
33
33
 
34
+ import numpy
34
35
  import logging
35
36
  from typing import Optional
36
37
 
@@ -272,6 +273,7 @@ class _AxisWidget(qt.QMainWindow):
272
273
  self._axis_params.relative_cor_value,
273
274
  self._axis_params.absolute_cor_value,
274
275
  )
276
+ self._controlWidget._positionInfo.setAxis(self._axis_params)
275
277
 
276
278
  # connect signal / slots
277
279
  self._controlWidget.sigComputationRequest.connect(self.sigComputationRequested)
@@ -663,7 +665,13 @@ class _PositionInfoWidget(qt.QWidget):
663
665
  if self._relativePositionQLE.text().startswith((".", "?")):
664
666
  return
665
667
  else:
666
- self.sigRelativeValueSet.emit(float(self._relativePositionQLE.text()))
668
+ value = float(self._relativePositionQLE.text())
669
+ # make sure we only emit the signal if the value changed (and when the Qline has been edited).
670
+ if self._axis.relative_cor_value is None or (
671
+ self._axis is not None
672
+ and not numpy.isclose(value, self._axis.relative_cor_value, atol=1e-3)
673
+ ):
674
+ self.sigRelativeValueSet.emit(value)
667
675
 
668
676
  def _userUpdatedAbsolutePosition(self, *args, **kwargs):
669
677
  palette = self.palette()
@@ -675,24 +683,19 @@ class _PositionInfoWidget(qt.QWidget):
675
683
  if self._absolutePositionQLE.text().startswith((".", "?")):
676
684
  return
677
685
  else:
678
- self.sigAbsolueValueSet.emit(float(self._absolutePositionQLE.text()))
686
+ value = float(self._absolutePositionQLE.text())
687
+ # make sure we only emit the signal if the value changed (and when the Qline has been edited).
688
+ if self._axis.absolute_cor_value is None or (
689
+ self._axis is not None
690
+ and not numpy.isclose(value, self._axis.absolute_cor_value, atol=1e-3)
691
+ ):
692
+ self.sigAbsolueValueSet.emit(value)
679
693
 
680
694
  def setAxis(self, axis):
681
695
  assert isinstance(axis, QAxisRP)
682
696
  if axis == self._axis:
683
697
  return
684
- if self._axis is not None:
685
- self._axis.sigChanged.disconnect(self._updatePosition)
686
698
  self._axis = axis
687
- self._axis.sigChanged.connect(self._updatePosition)
688
- self._updatePosition()
689
-
690
- def _updatePosition(self):
691
- if self._axis:
692
- self.setPosition(
693
- relative_cor=self._axis.relative_cor_value,
694
- abs_cor=self._axis.absolute_cor_value,
695
- )
696
699
 
697
700
  def getPosition(self):
698
701
  return float(self._relativePositionQLE.text())
@@ -188,13 +188,14 @@ class _NabuPreProcessingConfig(_NabuStageConfigBase, qt.QWidget):
188
188
 
189
189
  # option dedicated to Helical
190
190
  ## process file
191
- self._processFileQLE = qt.QLabel("file containing weights maps", self)
191
+ self._processFileLabel = qt.QLabel("file containing weights maps", self)
192
+ self.registerWidget(self._processFileLabel, "advanced")
193
+ self.layout().addWidget(self._processFileLabel, 20, 0, 1, 1)
194
+ self._processFileQLE = qt.QLineEdit("", self)
195
+ self.registerWidget(self._processFileQLE, "advanced")
192
196
  self._processFileQLE.setToolTip(
193
197
  "also know as 'process_file'. If you don't have this file it can be created from the 'helical-prepare-weights' widget"
194
198
  )
195
- self.layout().addWidget(self._processFileQLE, 20, 0, 1, 1)
196
- self._processFileQLE = qt.QLineEdit("", self)
197
- self.registerWidget(self._processFileQLE, "advanced")
198
199
  self.layout().addWidget(self._processFileQLE, 20, 1, 1, 3)
199
200
 
200
201
  # style
@@ -26,11 +26,11 @@ __authors__ = ["H.Payno"]
26
26
  __license__ = "MIT"
27
27
  __date__ = "13/08/2021"
28
28
 
29
- import os
30
29
  import functools
31
30
  import logging
32
31
  import shutil
33
32
  import tempfile
33
+ import os
34
34
 
35
35
  from processview.core.manager import DatasetState, ProcessManager
36
36
  from processview.core.superviseprocess import SuperviseProcess
tomwer/version.py CHANGED
@@ -77,7 +77,7 @@ RELEASE_LEVEL_VALUE = {
77
77
 
78
78
  MAJOR = 1
79
79
  MINOR = 3
80
- MICRO = 13
80
+ MICRO = 15
81
81
  RELEV = "final" # <16
82
82
  SERIAL = 0 # <16
83
83
 
@@ -0,0 +1 @@
1
+ import sys, types, os;has_mfs = sys.version_info > (3, 5);p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('orangecontrib',));importlib = has_mfs and __import__('importlib.util');has_mfs and __import__('importlib.machinery');m = has_mfs and 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.13
3
+ Version: 1.3.15
4
4
  Summary: "tomography workflow tools"
5
5
  Home-page: https://gitlab.esrf.fr/tomotools/tomwer
6
6
  Author: data analysis unit
@@ -18,8 +18,8 @@ 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.6
22
- Description-Content-Type: text/markdown
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
@@ -1,4 +1,4 @@
1
- tomwer-1.3.13-py3.11-nspkg.pth,sha256=UYCZtLWueceGiAlmXKRJUZ0TWQEubpPoQ1pVnAAsME0,502
1
+ tomwer-1.3.15-py3.11-nspkg.pth,sha256=xeeGR3TjdoVxdFeF6T-zSwZWh6Et--EYuPWu67LxL_c,574
2
2
  orangecontrib/tomwer/__init__.py,sha256=B4DXy1gY_wXmNYa2aOfapmJb2mEuCAjoaNEGnpBs70g,148
3
3
  orangecontrib/tomwer/state_summary.py,sha256=5_dPzweL3r0ye4ZfJo6IV2ThJI8fQhWoO2ySdJJajj8,1711
4
4
  orangecontrib/tomwer/orange/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -220,7 +220,7 @@ orangecontrib/tomwer/widgets/visualization/icons/volumeviewer.svg,sha256=2uT9_px
220
220
  tomwer/__init__.py,sha256=82Jp1abyG4UWdGuT4nNU7LxaUV6xxkOte5pIz3w69Do,1745
221
221
  tomwer/__main__.py,sha256=jsDfWA2yl5am0dHQVkYwlKLxxqKNont6VDF-LusuawE,8575
222
222
  tomwer/utils.py,sha256=EgVwJ5CQVjoBvcKNwyVoXv_P4ciI11oxb8fNyy82Lck,8465
223
- tomwer/version.py,sha256=NB9NVW9JDgrzz_rw-aJi5JYGnpnQP-hHA1sASP_uZ14,4387
223
+ tomwer/version.py,sha256=38e9A4OTLss-_PJiptPo7GAz0A2YTmrANmK0dxW9OWc,4387
224
224
  tomwer/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
225
  tomwer/app/axis.py,sha256=Ax0wlTp9u0Ll_3ax23QP5Ck16_M9Kop7wx0hAbXrXyM,6004
226
226
  tomwer/app/canvas.py,sha256=RbQqgE7DuNjv4nGG6BNfnSevQO5_lCl7N71hGcLoxwE,1561
@@ -318,7 +318,7 @@ tomwer/core/process/reconstruction/axis/params.py,sha256=y1RgFAk1wiJMeueSNJH5enU
318
318
  tomwer/core/process/reconstruction/axis/projectiontype.py,sha256=0w_NZ0N95iInHuEQCIxJIxt7K-YpCUo2fZ-_vhZ6D7Q,1543
319
319
  tomwer/core/process/reconstruction/darkref/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
320
320
  tomwer/core/process/reconstruction/darkref/darkrefs.py,sha256=gbRq1IJ-9fxD71684wajQj3D_M9G6chm7ahZsjxTmpM,20862
321
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py,sha256=cWT2bM_ReVJ18cJKqQXp3IcKk0Z6W5NeJ03wpqTzjNk,13754
321
+ tomwer/core/process/reconstruction/darkref/darkrefscopy.py,sha256=Oe65TZUS0XZ-5IuuuFMFGuu4aGxKChREPvVa_Ti85EU,14451
322
322
  tomwer/core/process/reconstruction/darkref/params.py,sha256=Pnl8XJ4et-u169wzUdhB8_woBEXPXtrGPLZEbXSwZDQ,10080
323
323
  tomwer/core/process/reconstruction/darkref/settings.py,sha256=35jliuOIjMKTOJjgn4uiotcDEr6RskpLHfRWWLm76dc,188
324
324
  tomwer/core/process/reconstruction/nabu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -494,12 +494,12 @@ tomwer/gui/debugtools/objectinspector.py,sha256=Mva9iK4bIxHvs3CcuHboWa4kiUEMoBeu
494
494
  tomwer/gui/edit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
495
495
  tomwer/gui/edit/dkrfpatch.py,sha256=UCXfEq3wV1x3OzEdzIzi6YxRN6SaEIZb-Yudt2YwnUs,17533
496
496
  tomwer/gui/edit/imagekeyeditor.py,sha256=NjnPdKJif9bhfPXejJuRrj2TqTTMlOxlk4mb6mSBoHw,29728
497
- tomwer/gui/edit/nxtomoeditor.py,sha256=1mV5EIHTclg1YxDLMncbErNwC58jEOGxjxO7I1dRzyQ,28095
497
+ tomwer/gui/edit/nxtomoeditor.py,sha256=Bf2dVU73pV8oJXdS9Zms-L2e7KJTzfLdlwZeeKerPTk,28586
498
498
  tomwer/gui/edit/nxtomowarmer.py,sha256=Vmsg8oUSzHpIvJVqF6xZd0aYKzPi_DDoNrGOIQbqBwU,2349
499
499
  tomwer/gui/edit/test/__init__.py,sha256=OLK9ip_LryBfM_L40MReqjvJS3wdbWP_CpnBeD1NQTA,1368
500
500
  tomwer/gui/edit/test/test_dkrf_patch.py,sha256=578ZPdVGOHls236XQqId7QqRrpdN5h3Hh8BePTlV03g,8001
501
501
  tomwer/gui/edit/test/test_image_key_editor.py,sha256=hkeiB5plRR17YD499j6_yQatuIgKLa4F4NfjWVMzhY4,5965
502
- tomwer/gui/edit/test/test_nx_editor.py,sha256=iz6dcebE-IBOjdlzYIkDreRzpVJbkElEzTKvWqIJrkA,11285
502
+ tomwer/gui/edit/test/test_nx_editor.py,sha256=KMpptfEURWAKGwuPxRtrOpNYlbxSxu0Tulla2uLXVmw,13201
503
503
  tomwer/gui/icat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
504
504
  tomwer/gui/icat/createscreenshots.py,sha256=IeKBF-urVsEsjDH2gXpt3oG5Sx_OstC1mNJB7zFeWkk,3123
505
505
  tomwer/gui/icat/gallery.py,sha256=puBAkqlwgV1Orki_g2IVXjssCn_PCPjNGJtC0RIPpxI,8700
@@ -507,7 +507,7 @@ tomwer/gui/icat/publish.py,sha256=E1DwyABMZeIHDcy88YFtLpg2GpvN_AFHn4aAJbcK13c,62
507
507
  tomwer/gui/reconstruction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
508
508
  tomwer/gui/reconstruction/axis/CompareImages.py,sha256=mrlXPCgq71lzmA_XACqrjdzRTK1iYJQBMrJMaeKZAq8,12870
509
509
  tomwer/gui/reconstruction/axis/__init__.py,sha256=fUKWiRiG2o4Y-9RN-41VZMMM8L9Srl6QCn942VL5szY,94
510
- tomwer/gui/reconstruction/axis/axis.py,sha256=QLyrJzJrShjlnO3tLkcnv2oexzVkxw-SGgn3cYfmmEY,27260
510
+ tomwer/gui/reconstruction/axis/axis.py,sha256=ygo7QHTKVGK2_zUZQsfl9uKbbGt_Es5kj-MaBzOe3hc,27607
511
511
  tomwer/gui/reconstruction/axis/radioaxis.py,sha256=hTweuwS-X32ZlpkHvP5X910zJ8p4fiJMsn_oUVtfvXM,92755
512
512
  tomwer/gui/reconstruction/darkref/__init__.py,sha256=g9LASP8OJjxCPEHXO14hN0OLjLkeUve6etaPm1LIz4c,1373
513
513
  tomwer/gui/reconstruction/darkref/darkrefcopywidget.py,sha256=cfU2EJv_9LfCrKTHwnYwt2Kj4G6lMPbw0lbD-yjyT-Y,12053
@@ -526,7 +526,7 @@ tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py,sha256=6WnlS4vNMTdKJ5uj-uLvjeWx
526
526
  tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py,sha256=tNrV-qSpN1oaXImGJgbnk3dLfdg6nUYa4Gji41VShWU,11529
527
527
  tomwer/gui/reconstruction/nabu/nabuconfig/output.py,sha256=RWd1yO4tbCoqktYozVMaRdU5wQdvshjQM5Lf5jKbiNE,13952
528
528
  tomwer/gui/reconstruction/nabu/nabuconfig/phase.py,sha256=5bGZI4fW970hCd5bTHWBYPNHZ7MU5--nasF_uD3qi0Y,15368
529
- tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py,sha256=WjgufdyDQi1vy77jiaobfZE9_kIVKirvWzns3Ms_MEo,31214
529
+ tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py,sha256=3MaJRS4r3GlHzJ3JCNb9p9PrY6vn4FZr9B3eKiobyUs,31282
530
530
  tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py,sha256=wFjJiHGe8XZFuTeF0EefgIYfPWZJEj6bsBLC6MPjNNs,38981
531
531
  tomwer/gui/reconstruction/normalization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
532
532
  tomwer/gui/reconstruction/normalization/intensity.py,sha256=GWFPxsRxDxFnUwCh4zEDKccjt5Mmnl9WWZYa5wte0Ys,33856
@@ -758,7 +758,7 @@ tomwer/synctools/stacks/edit/imagekeyeditor.py,sha256=NNDQWMJEuE50zBk_2zJAWbf6hC
758
758
  tomwer/synctools/stacks/reconstruction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
759
759
  tomwer/synctools/stacks/reconstruction/axis.py,sha256=9Gqh0isvLYupypOq3P7XM_lU4Hcni4l3V2aUZsAVLrc,8876
760
760
  tomwer/synctools/stacks/reconstruction/castvolume.py,sha256=PaoMuTxcj4Ms6N2MFnrCzmaCCC3wEZItYAwQ8NApe_o,8282
761
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py,sha256=01YdLs9xfmKFl7Wz3Qf9jawY6ePGp7fxcTus9BHNBeM,7402
761
+ tomwer/synctools/stacks/reconstruction/dkrefcopy.py,sha256=cHkvyOtbaqtaftnCyIhDF3oXRM-lXMWqBf-CVTqF198,7402
762
762
  tomwer/synctools/stacks/reconstruction/nabu.py,sha256=dDqw74kobhkawquJIwLDQH--PN6LbbthlqZ9MQUBJi4,7816
763
763
  tomwer/synctools/stacks/reconstruction/normalization.py,sha256=wcw-tHjKUQMcija0bCExDl0InYsKHZNTeTk4w_hnaDI,5362
764
764
  tomwer/synctools/stacks/reconstruction/saaxis.py,sha256=N5LM4QPE1H06WXjEH-PGIMfWgCHkwR02QR3PENZ_JzE,7126
@@ -776,10 +776,10 @@ tomwer/tests/test_utils.py,sha256=D0rNDSK6csEOYBY_7gD-4A3jp8rYAm8L1_Xg34A9I2s,30
776
776
  tomwer/tests/utils.py,sha256=RAXx5A99WD4Vyuv_wjHBdr-Xu7UiThHRKw2eiB5GX10,107
777
777
  tomwer/third_part/WaitingOverlay.py,sha256=GnqiytcJDp_24Cmz_2nZAP5HfpL3Yh7AzR2ATIusGsg,3906
778
778
  tomwer/third_part/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
779
- tomwer-1.3.13.dist-info/LICENSE,sha256=yR_hIZ1MfDh9x2_s23uFqBH7m5DgrBl9nJKkE37YChM,1877
780
- tomwer-1.3.13.dist-info/METADATA,sha256=wWs75qkhJSr9ujUassUsmSCC5PGtRboBkMv07SI5Fu0,11460
781
- tomwer-1.3.13.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
782
- tomwer-1.3.13.dist-info/entry_points.txt,sha256=fIcDnCxjgwzfIylLYhUsFyiNZjZMxsfRQBxi4f-cJg8,440
783
- tomwer-1.3.13.dist-info/namespace_packages.txt,sha256=Iut-JTfT11SZHHm77_ZeszD7pZDWXcTweCbvrJpqDyQ,14
784
- tomwer-1.3.13.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
785
- tomwer-1.3.13.dist-info/RECORD,,
779
+ tomwer-1.3.15.dist-info/LICENSE,sha256=yR_hIZ1MfDh9x2_s23uFqBH7m5DgrBl9nJKkE37YChM,1877
780
+ tomwer-1.3.15.dist-info/METADATA,sha256=-5aT_Ge5i-iUGuYCUTWvemmzQ_njF5BkJpmHL_MJREo,11457
781
+ tomwer-1.3.15.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
782
+ tomwer-1.3.15.dist-info/entry_points.txt,sha256=fIcDnCxjgwzfIylLYhUsFyiNZjZMxsfRQBxi4f-cJg8,440
783
+ tomwer-1.3.15.dist-info/namespace_packages.txt,sha256=Iut-JTfT11SZHHm77_ZeszD7pZDWXcTweCbvrJpqDyQ,14
784
+ tomwer-1.3.15.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
785
+ tomwer-1.3.15.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1 +0,0 @@
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)