tomwer 1.3.13__py3-none-any.whl → 1.3.14__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.
- tomwer/core/process/reconstruction/darkref/darkrefscopy.py +18 -2
- tomwer/gui/edit/nxtomoeditor.py +28 -20
- tomwer/gui/edit/test/test_nx_editor.py +58 -1
- tomwer/gui/reconstruction/axis/axis.py +14 -13
- tomwer/synctools/stacks/reconstruction/dkrefcopy.py +1 -1
- tomwer/version.py +1 -1
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/METADATA +2 -2
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/RECORD +14 -14
- /tomwer-1.3.13-py3.11-nspkg.pth → /tomwer-1.3.14-py3.11-nspkg.pth +0 -0
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/LICENSE +0 -0
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/WHEEL +0 -0
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/entry_points.txt +0 -0
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/namespace_packages.txt +0 -0
- {tomwer-1.3.13.dist-info → tomwer-1.3.14.dist-info}/top_level.txt +0 -0
@@ -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
|
-
|
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
|
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(
|
tomwer/gui/edit/nxtomoeditor.py
CHANGED
@@ -574,28 +574,36 @@ class NXtomoEditor(qt.QWidget):
|
|
574
574
|
),
|
575
575
|
solve_empty_dependency=True,
|
576
576
|
)
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
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
|
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,12 @@ class _PositionInfoWidget(qt.QWidget):
|
|
663
665
|
if self._relativePositionQLE.text().startswith((".", "?")):
|
664
666
|
return
|
665
667
|
else:
|
666
|
-
|
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 is not None and not numpy.isclose(
|
671
|
+
value, self._axis.relative_cor_value, atol=1e-3
|
672
|
+
):
|
673
|
+
self.sigRelativeValueSet.emit(value)
|
667
674
|
|
668
675
|
def _userUpdatedAbsolutePosition(self, *args, **kwargs):
|
669
676
|
palette = self.palette()
|
@@ -675,24 +682,18 @@ class _PositionInfoWidget(qt.QWidget):
|
|
675
682
|
if self._absolutePositionQLE.text().startswith((".", "?")):
|
676
683
|
return
|
677
684
|
else:
|
678
|
-
|
685
|
+
value = float(self._absolutePositionQLE.text())
|
686
|
+
# make sure we only emit the signal if the value changed (and when the Qline has been edited).
|
687
|
+
if self._axis is not None and not numpy.isclose(
|
688
|
+
value, self._axis.absolute_cor_value, atol=1e-3
|
689
|
+
):
|
690
|
+
self.sigAbsolueValueSet.emit(value)
|
679
691
|
|
680
692
|
def setAxis(self, axis):
|
681
693
|
assert isinstance(axis, QAxisRP)
|
682
694
|
if axis == self._axis:
|
683
695
|
return
|
684
|
-
if self._axis is not None:
|
685
|
-
self._axis.sigChanged.disconnect(self._updatePosition)
|
686
696
|
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
697
|
|
697
698
|
def getPosition(self):
|
698
699
|
return float(self._relativePositionQLE.text())
|
@@ -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
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: tomwer
|
3
|
-
Version: 1.3.
|
3
|
+
Version: 1.3.14
|
4
4
|
Summary: "tomography workflow tools"
|
5
5
|
Home-page: https://gitlab.esrf.fr/tomotools/tomwer
|
6
6
|
Author: data analysis unit
|
@@ -18,7 +18,7 @@ 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.
|
21
|
+
Requires-Python: >=3.8
|
22
22
|
Description-Content-Type: text/markdown
|
23
23
|
License-File: LICENSE
|
24
24
|
Requires-Dist: numpy
|
@@ -1,4 +1,4 @@
|
|
1
|
-
tomwer-1.3.
|
1
|
+
tomwer-1.3.14-py3.11-nspkg.pth,sha256=UYCZtLWueceGiAlmXKRJUZ0TWQEubpPoQ1pVnAAsME0,502
|
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=
|
223
|
+
tomwer/version.py,sha256=x8jsewPb2ljshg5rFK4miHGjNsGSt3FPoRBsXH_cfI4,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=
|
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=
|
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=
|
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=
|
510
|
+
tomwer/gui/reconstruction/axis/axis.py,sha256=AasGGK9wjnn9l6ryo9biptcDKxRTQG7KFHIHnMZd70o,27489
|
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
|
@@ -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=
|
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.
|
780
|
-
tomwer-1.3.
|
781
|
-
tomwer-1.3.
|
782
|
-
tomwer-1.3.
|
783
|
-
tomwer-1.3.
|
784
|
-
tomwer-1.3.
|
785
|
-
tomwer-1.3.
|
779
|
+
tomwer-1.3.14.dist-info/LICENSE,sha256=yR_hIZ1MfDh9x2_s23uFqBH7m5DgrBl9nJKkE37YChM,1877
|
780
|
+
tomwer-1.3.14.dist-info/METADATA,sha256=yc29gleRofOwWWwjUVeO8n0RbmTjEblhC5rSondwT2o,11460
|
781
|
+
tomwer-1.3.14.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
782
|
+
tomwer-1.3.14.dist-info/entry_points.txt,sha256=fIcDnCxjgwzfIylLYhUsFyiNZjZMxsfRQBxi4f-cJg8,440
|
783
|
+
tomwer-1.3.14.dist-info/namespace_packages.txt,sha256=Iut-JTfT11SZHHm77_ZeszD7pZDWXcTweCbvrJpqDyQ,14
|
784
|
+
tomwer-1.3.14.dist-info/top_level.txt,sha256=Yz5zKh0FPiImtzHYcPuztG1AO8-6KEpUWgoChGbA0Ys,21
|
785
|
+
tomwer-1.3.14.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|