junifer 0.0.6.dev505__py3-none-any.whl → 0.0.6.dev514__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.
junifer/_version.py CHANGED
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.0.6.dev505'
21
- __version_tuple__ = version_tuple = (0, 0, 6, 'dev505')
20
+ __version__ = version = '0.0.6.dev514'
21
+ __version_tuple__ = version_tuple = (0, 0, 6, 'dev514')
@@ -15,7 +15,7 @@ from numpy.typing import ArrayLike
15
15
  from ...utils import logger, raise_error
16
16
  from ...utils.singleton import Singleton
17
17
  from ..pipeline_data_registry_base import BasePipelineDataRegistry
18
- from ..utils import JUNIFER_DATA_VERSION, get_dataset_path, get_native_warper
18
+ from ..utils import JUNIFER_DATA_PARAMS, get_dataset_path, get_native_warper
19
19
  from ._ants_coordinates_warper import ANTsCoordinatesWarper
20
20
  from ._fsl_coordinates_warper import FSLCoordinatesWarper
21
21
 
@@ -287,7 +287,7 @@ class CoordinatesRegistry(BasePipelineDataRegistry, metaclass=Singleton):
287
287
  get(
288
288
  file_path=coords_file_path,
289
289
  dataset_path=get_dataset_path(),
290
- tag=JUNIFER_DATA_VERSION,
290
+ **JUNIFER_DATA_PARAMS,
291
291
  ),
292
292
  sep="\t",
293
293
  header=None,
@@ -28,7 +28,7 @@ from ...utils.singleton import Singleton
28
28
  from ..pipeline_data_registry_base import BasePipelineDataRegistry
29
29
  from ..template_spaces import get_template
30
30
  from ..utils import (
31
- JUNIFER_DATA_VERSION,
31
+ JUNIFER_DATA_PARAMS,
32
32
  closest_resolution,
33
33
  get_dataset_path,
34
34
  get_native_warper,
@@ -745,7 +745,7 @@ def _load_vickery_patil_mask(
745
745
  return get(
746
746
  file_path=Path(f"masks/Vickery-Patil/{mask_fname}"),
747
747
  dataset_path=get_dataset_path(),
748
- tag=JUNIFER_DATA_VERSION,
748
+ **JUNIFER_DATA_PARAMS,
749
749
  )
750
750
 
751
751
 
@@ -778,7 +778,7 @@ def _load_ukb_mask(name: str) -> Path:
778
778
  return get(
779
779
  file_path=Path(f"masks/UKB/{mask_fname}"),
780
780
  dataset_path=get_dataset_path(),
781
- tag=JUNIFER_DATA_VERSION,
781
+ **JUNIFER_DATA_PARAMS,
782
782
  )
783
783
 
784
784
 
@@ -19,7 +19,7 @@ from ...utils import logger, raise_error, warn_with_log
19
19
  from ...utils.singleton import Singleton
20
20
  from ..pipeline_data_registry_base import BasePipelineDataRegistry
21
21
  from ..utils import (
22
- JUNIFER_DATA_VERSION,
22
+ JUNIFER_DATA_PARAMS,
23
23
  closest_resolution,
24
24
  get_dataset_path,
25
25
  get_native_warper,
@@ -639,13 +639,13 @@ def _retrieve_schaefer(
639
639
  file_path=path_prefix / f"Schaefer2018_{n_rois}Parcels_{yeo_networks}"
640
640
  f"Networks_order_FSLMNI152_{resolution}mm.nii.gz",
641
641
  dataset_path=get_dataset_path(),
642
- tag=JUNIFER_DATA_VERSION,
642
+ **JUNIFER_DATA_PARAMS,
643
643
  )
644
644
  parcellation_label_path = get(
645
645
  file_path=path_prefix
646
646
  / f"Schaefer2018_{n_rois}Parcels_{yeo_networks}Networks_order.txt",
647
647
  dataset_path=get_dataset_path(),
648
- tag=JUNIFER_DATA_VERSION,
648
+ **JUNIFER_DATA_PARAMS,
649
649
  )
650
650
 
651
651
  # Load labels
@@ -764,13 +764,13 @@ def _retrieve_tian(
764
764
  parcellation_img_path = get(
765
765
  file_path=parcellation_fname,
766
766
  dataset_path=get_dataset_path(),
767
- tag=JUNIFER_DATA_VERSION,
767
+ **JUNIFER_DATA_PARAMS,
768
768
  )
769
769
  parcellation_label_path = get(
770
770
  file_path=parcellation_fname_base_3T
771
771
  / f"Tian_Subcortex_S{scale}_3T_label.txt",
772
772
  dataset_path=get_dataset_path(),
773
- tag=JUNIFER_DATA_VERSION,
773
+ **JUNIFER_DATA_PARAMS,
774
774
  )
775
775
  # Load labels
776
776
  labels = pd.read_csv(parcellation_label_path, sep=" ", header=None)[
@@ -783,7 +783,7 @@ def _retrieve_tian(
783
783
  f"Tian_Subcortex_S{scale}_{magneticfield}.nii.gz"
784
784
  ),
785
785
  dataset_path=get_dataset_path(),
786
- tag=JUNIFER_DATA_VERSION,
786
+ **JUNIFER_DATA_PARAMS,
787
787
  )
788
788
  # define 7T labels (b/c currently no labels file available for 7T)
789
789
  scale7Trois = {1: 16, 2: 34, 3: 54, 4: 62}
@@ -855,12 +855,12 @@ def _retrieve_suit(
855
855
  parcellation_img_path = get(
856
856
  file_path=path_prefix / f"SUIT_{space}Space_{resolution}mm.nii",
857
857
  dataset_path=get_dataset_path(),
858
- tag=JUNIFER_DATA_VERSION,
858
+ **JUNIFER_DATA_PARAMS,
859
859
  )
860
860
  parcellation_label_path = get(
861
861
  file_path=path_prefix / f"SUIT_{space}Space_{resolution}mm.tsv",
862
862
  dataset_path=get_dataset_path(),
863
- tag=JUNIFER_DATA_VERSION,
863
+ **JUNIFER_DATA_PARAMS,
864
864
  )
865
865
 
866
866
  # Load labels
@@ -938,20 +938,20 @@ def _retrieve_aicha(
938
938
  parcellation_img_path = get(
939
939
  file_path=path_prefix / "AICHA.nii",
940
940
  dataset_path=get_dataset_path(),
941
- tag=JUNIFER_DATA_VERSION,
941
+ **JUNIFER_DATA_PARAMS,
942
942
  )
943
943
  # Conditional label file fetch
944
944
  if version == 1:
945
945
  parcellation_label_path = get(
946
946
  file_path=path_prefix / "AICHA_vol1.txt",
947
947
  dataset_path=get_dataset_path(),
948
- tag=JUNIFER_DATA_VERSION,
948
+ **JUNIFER_DATA_PARAMS,
949
949
  )
950
950
  elif version == 2:
951
951
  parcellation_label_path = get(
952
952
  file_path=path_prefix / "AICHA_vol3.txt",
953
953
  dataset_path=get_dataset_path(),
954
- tag=JUNIFER_DATA_VERSION,
954
+ **JUNIFER_DATA_PARAMS,
955
955
  )
956
956
 
957
957
  # Load labels
@@ -1055,12 +1055,12 @@ def _retrieve_shen(
1055
1055
  parcellation_img_path = get(
1056
1056
  file_path=path_prefix / f"fconn_atlas_{n_rois}_{resolution}mm.nii",
1057
1057
  dataset_path=get_dataset_path(),
1058
- tag=JUNIFER_DATA_VERSION,
1058
+ **JUNIFER_DATA_PARAMS,
1059
1059
  )
1060
1060
  parcellation_label_path = get(
1061
1061
  file_path=path_prefix / f"Group_seg{n_rois}_BAindexing_setA.txt",
1062
1062
  dataset_path=get_dataset_path(),
1063
- tag=JUNIFER_DATA_VERSION,
1063
+ **JUNIFER_DATA_PARAMS,
1064
1064
  )
1065
1065
  labels = (
1066
1066
  pd.read_csv(
@@ -1077,14 +1077,14 @@ def _retrieve_shen(
1077
1077
  file_path=path_prefix
1078
1078
  / f"shen_{resolution}mm_268_parcellation.nii.gz",
1079
1079
  dataset_path=get_dataset_path(),
1080
- tag=JUNIFER_DATA_VERSION,
1080
+ **JUNIFER_DATA_PARAMS,
1081
1081
  )
1082
1082
  labels = list(range(1, 269))
1083
1083
  elif year == 2019:
1084
1084
  parcellation_img_path = get(
1085
1085
  file_path=path_prefix / "Shen_1mm_368_parcellation.nii.gz",
1086
1086
  dataset_path=get_dataset_path(),
1087
- tag=JUNIFER_DATA_VERSION,
1087
+ **JUNIFER_DATA_PARAMS,
1088
1088
  )
1089
1089
  labels = list(range(1, 369))
1090
1090
 
@@ -1174,13 +1174,13 @@ def _retrieve_yan(
1174
1174
  f"{resolution}mm.nii.gz"
1175
1175
  ),
1176
1176
  dataset_path=get_dataset_path(),
1177
- tag=JUNIFER_DATA_VERSION,
1177
+ **JUNIFER_DATA_PARAMS,
1178
1178
  )
1179
1179
  parcellation_label_path = get(
1180
1180
  file_path=path_prefix
1181
1181
  / f"{n_rois}Parcels_Yeo2011_{yeo_networks}Networks_LUT.txt",
1182
1182
  dataset_path=get_dataset_path(),
1183
- tag=JUNIFER_DATA_VERSION,
1183
+ **JUNIFER_DATA_PARAMS,
1184
1184
  )
1185
1185
  elif kong_networks:
1186
1186
  # Check kong_networks value
@@ -1199,13 +1199,13 @@ def _retrieve_yan(
1199
1199
  f"{resolution}mm.nii.gz"
1200
1200
  ),
1201
1201
  dataset_path=get_dataset_path(),
1202
- tag=JUNIFER_DATA_VERSION,
1202
+ **JUNIFER_DATA_PARAMS,
1203
1203
  )
1204
1204
  parcellation_label_path = get(
1205
1205
  file_path=path_prefix
1206
1206
  / f"{n_rois}Parcels_Kong2022_{kong_networks}Networks_LUT.txt",
1207
1207
  dataset_path=get_dataset_path(),
1208
- tag=JUNIFER_DATA_VERSION,
1208
+ **JUNIFER_DATA_PARAMS,
1209
1209
  )
1210
1210
 
1211
1211
  # Load label file
@@ -1272,7 +1272,7 @@ def _retrieve_brainnetome(
1272
1272
  f"BNA-maxprob-thr{threshold}-{resolution}mm.nii.gz"
1273
1273
  ),
1274
1274
  dataset_path=get_dataset_path(),
1275
- tag=JUNIFER_DATA_VERSION,
1275
+ **JUNIFER_DATA_PARAMS,
1276
1276
  )
1277
1277
 
1278
1278
  # Load labels
@@ -12,7 +12,7 @@ from junifer_data import get
12
12
  from templateflow import api as tflow
13
13
 
14
14
  from ..utils import logger, raise_error
15
- from .utils import JUNIFER_DATA_VERSION, closest_resolution, get_dataset_path
15
+ from .utils import JUNIFER_DATA_PARAMS, closest_resolution, get_dataset_path
16
16
 
17
17
 
18
18
  __all__ = ["get_template", "get_xfm"]
@@ -40,7 +40,7 @@ def get_xfm(src: str, dst: str) -> Path: # pragma: no cover
40
40
  return get(
41
41
  file_path=xfm_file_path,
42
42
  dataset_path=get_dataset_path(),
43
- tag=JUNIFER_DATA_VERSION,
43
+ **JUNIFER_DATA_PARAMS,
44
44
  )
45
45
 
46
46
 
junifer/data/utils.py CHANGED
@@ -14,6 +14,8 @@ from ..utils import config, logger, raise_error
14
14
 
15
15
 
16
16
  __all__ = [
17
+ "JUNIFER_DATA_HEXSHA",
18
+ "JUNIFER_DATA_PARAMS",
17
19
  "JUNIFER_DATA_VERSION",
18
20
  "closest_resolution",
19
21
  "get_dataset_path",
@@ -24,6 +26,14 @@ __all__ = [
24
26
  # junifer-data version constant
25
27
  JUNIFER_DATA_VERSION = "1"
26
28
 
29
+ # junifer-data hexsha constant
30
+ JUNIFER_DATA_HEXSHA = "e9aecf7b5a2fff82de00d265e02afde42a448647"
31
+
32
+ JUNIFER_DATA_PARAMS = {
33
+ "tag": JUNIFER_DATA_VERSION,
34
+ "hexsha": JUNIFER_DATA_HEXSHA,
35
+ }
36
+
27
37
 
28
38
  def closest_resolution(
29
39
  resolution: Optional[Union[float, int]],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: junifer
3
- Version: 0.0.6.dev505
3
+ Version: 0.0.6.dev514
4
4
  Summary: JUelich NeuroImaging FEature extractoR
5
5
  Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
6
6
  Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
@@ -44,7 +44,7 @@ Requires-Dist: lapy<2.0.0,>=1.0.0
44
44
  Requires-Dist: lazy_loader==0.4
45
45
  Requires-Dist: importlib_metadata; python_version < "3.9"
46
46
  Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
47
- Requires-Dist: junifer_data==1.1.0
47
+ Requires-Dist: junifer_data==1.2.0
48
48
  Provides-Extra: all
49
49
  Requires-Dist: bctpy==0.6.0; extra == "all"
50
50
  Requires-Dist: neurokit2>=0.1.7; extra == "all"
@@ -1,6 +1,6 @@
1
1
  junifer/__init__.py,sha256=2McgH1yNue6Z1V26-uN_mfMjbTcx4CLhym-DMBl5xA4,266
2
2
  junifer/__init__.pyi,sha256=SsTvgq2Dod6UqJN96GH1lCphH6hJQQurEJHGNhHjGUI,508
3
- junifer/_version.py,sha256=DTERGyuHTczYxtYIjKleqS8wne_AfGBK-yJ7a0FH5xI,528
3
+ junifer/_version.py,sha256=460_6h5QjFIaRbq4umKGm3niqVhLl85RO41cFdAZXi4,528
4
4
  junifer/conftest.py,sha256=PWYkkRDU8ly2lYwv7VBKMHje4et6HX7Yey3Md_I2KbA,613
5
5
  junifer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  junifer/stats.py,sha256=e9aaagMGtgpRfW3Wdpz9ocpnYld1IWylCDcjFUgX9Mk,6225
@@ -75,12 +75,12 @@ junifer/data/__init__.pyi,sha256=qYszjUYcbFi_2zO23MnbA2HhTW-Ad2oh1pqPQYd6yt0,542
75
75
  junifer/data/_dispatch.py,sha256=O524U1R4MtbGhGJsL0HSh9EqisapBFJWK7uupXrJuMg,6158
76
76
  junifer/data/pipeline_data_registry_base.py,sha256=G8bE3WTj4D_rKC4ZKZe6E48Sd96CGea1PS3SxmTgGK4,2010
77
77
  junifer/data/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
- junifer/data/template_spaces.py,sha256=3qHlF-OdpnFezC4l3GrTtfv8PuA6nyY3RW_2MuWfPks,4665
79
- junifer/data/utils.py,sha256=c3o4RcaTrD24jhmwjVBKz6P2gCCKPMg9SbMvNLBFUZA,3712
78
+ junifer/data/template_spaces.py,sha256=7LcQbUV_SWCic-TtETCejgat-BxxFDxZFm5z80rRZ-M,4661
79
+ junifer/data/utils.py,sha256=a7Uv34iw10jmFGZWIucZjjEbrbOnFicWbpp_cXw9Ux4,3958
80
80
  junifer/data/coordinates/__init__.py,sha256=ffM8rwcHLgHAWixJbKrATrbUKzX940V1UF6RAxZdUMg,186
81
81
  junifer/data/coordinates/__init__.pyi,sha256=Z-Ti5XD3HigkZ8uYN6oYsLqw40-F1GvTVQ5QAy08Wng,88
82
82
  junifer/data/coordinates/_ants_coordinates_warper.py,sha256=5RWDC-nI3VG9lkSJ-_y_hlDtjPctKSJokQOp3v8ozwY,2956
83
- junifer/data/coordinates/_coordinates.py,sha256=ByGCaJ2Ftp5W2zDdFKLHCdIS0_Z5EOXMvScEfozYloo,13494
83
+ junifer/data/coordinates/_coordinates.py,sha256=riTTgBuW6bde64KeqlS5c5C_BQgWpCX0vjlYN_vD138,13490
84
84
  junifer/data/coordinates/_fsl_coordinates_warper.py,sha256=5h7rwiPMYBQlA3sMZUImcpnNLLWvIp2-bAEaaHtzX9c,2409
85
85
  junifer/data/coordinates/VOIs/meta/AutobiographicalMemory_VOIs.txt,sha256=9af38naeL18Tlt_gy_ep6vyTAxOB336JYjbo5FvP8PQ,686
86
86
  junifer/data/coordinates/VOIs/meta/CogAC_VOIs.txt,sha256=Sr5_E712OLdeQRyUcDNM0wLBvZIyO6gc9Q7KkyJHX1A,398
@@ -106,7 +106,7 @@ junifer/data/masks/__init__.py,sha256=eEEhHglyVEx1LrqwXjq3cOmjf4sTsgBstRx5-k7zIQ
106
106
  junifer/data/masks/__init__.pyi,sha256=lcgr8gmWDPibC4RxnWBXb8DDpIkO73Aax09u6VXiJJI,114
107
107
  junifer/data/masks/_ants_mask_warper.py,sha256=JLK2Jh2AOAiv_NoUGhRoTBEhRFXPRXTDPmQGH9vBSok,5805
108
108
  junifer/data/masks/_fsl_mask_warper.py,sha256=YZOMlRgQ7_4shnXNc_05tmwDk5xHI-1wqle-RdNsJ34,2857
109
- junifer/data/masks/_masks.py,sha256=NA2Px_PUv0DDtFpLpYjJxSGo2ozTk-6bSNd16Cou1VA,28671
109
+ junifer/data/masks/_masks.py,sha256=c30OPW01jfiZT4ExM2uZdoRvQ-VeTcXEk3R68EUDoHc,28664
110
110
  junifer/data/masks/tests/test_masks.py,sha256=W0bzRB5Bp-iGO44VtEmaf7BuT-joe_2tQI0lma5NQHA,16090
111
111
  junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz,sha256=jcX1pDOrDsoph8cPMNFVKH5gZYio5G4rJNpOFXm9wJI,946636
112
112
  junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz,sha256=j6EY8EtRnUuRxeKgD65Q6B0GPEPIALKDJEIje1TfnAU,88270
@@ -116,7 +116,7 @@ junifer/data/parcellations/__init__.py,sha256=6-Ysil3NyZ69V6rWx4RO15_d-iDKizfbHu
116
116
  junifer/data/parcellations/__init__.pyi,sha256=lhBHTbMDizzqUqVHrx2eyfPFodrTBgMFeTgxfESSkQ8,140
117
117
  junifer/data/parcellations/_ants_parcellation_warper.py,sha256=YUCJC0_wutGw7j_n9JRU3LCwm9Ttg5PIlJUgqejfRhs,5806
118
118
  junifer/data/parcellations/_fsl_parcellation_warper.py,sha256=JfJ022flg5OR48P4OAALVHHQgTVxdMBXT-fAqBl3nUM,2679
119
- junifer/data/parcellations/_parcellations.py,sha256=SbkXmyEG-ZY7QOlZYq15KULjzNJkp-jDRM9Au2R8Q5g,48625
119
+ junifer/data/parcellations/_parcellations.py,sha256=meMSrOMQpY0wCyoOdIVsJcZb3uRLi4vqtDehOvXOyic,48567
120
120
  junifer/data/parcellations/tests/test_parcellations.py,sha256=Pf7klYabWikrvanYPlukq2GcVyFXDc_IVB2TgN_BU9c,36027
121
121
  junifer/data/tests/test_data_utils.py,sha256=136iGPjGecCxyqgUwU8VZMHoE6imcYJ0WNC32PDGK4g,1063
122
122
  junifer/data/tests/test_template_spaces.py,sha256=ZEicEcLqOJ-NpuBZ5SYh4yZ0xZRkhYHnYXiC_YSxjrY,3219
@@ -341,10 +341,10 @@ junifer/utils/tests/test_config.py,sha256=7ltIXuwb_W4Mv_1dxQWyiyM10XgUAfsWKV6D_i
341
341
  junifer/utils/tests/test_fs.py,sha256=WQS7cKlKEZ742CIuiOYYpueeAhY9PqlastfDVpVVtvE,923
342
342
  junifer/utils/tests/test_helpers.py,sha256=k5qqfxK8dFyuewTJyR1Qn6-nFaYNuVr0ysc18bfPjyU,929
343
343
  junifer/utils/tests/test_logging.py,sha256=duO4ou365hxwa_kwihFtKPLaL6LC5XHiyhOijrrngbA,8009
344
- junifer-0.0.6.dev505.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
345
- junifer-0.0.6.dev505.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
346
- junifer-0.0.6.dev505.dist-info/METADATA,sha256=A8OE5bPou_SYMs3SNqLEHW0q4kS9nYjQcXR2742WS1I,8420
347
- junifer-0.0.6.dev505.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
348
- junifer-0.0.6.dev505.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
349
- junifer-0.0.6.dev505.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
350
- junifer-0.0.6.dev505.dist-info/RECORD,,
344
+ junifer-0.0.6.dev514.dist-info/AUTHORS.rst,sha256=rmULKpchpSol4ExWFdm-qu4fkpSZPYqIESVJBZtGb6E,163
345
+ junifer-0.0.6.dev514.dist-info/LICENSE.md,sha256=MqCnOBu8uXsEOzRZWh9EBVfVz-kE9NkXcLCrtGXo2yU,34354
346
+ junifer-0.0.6.dev514.dist-info/METADATA,sha256=Uid0KruORdcqyGKL7zxSuCBYXvovtNASyUUCXLfnffI,8420
347
+ junifer-0.0.6.dev514.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
348
+ junifer-0.0.6.dev514.dist-info/entry_points.txt,sha256=6O8ru0BP-SP7YMUZiizFNoaZ2HvJpadO2G7nKk4PwjI,48
349
+ junifer-0.0.6.dev514.dist-info/top_level.txt,sha256=4bAq1R2QFQ4b3hohjys2JBvxrl0GKk5LNFzYvz9VGcA,8
350
+ junifer-0.0.6.dev514.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5