junifer 0.0.6.dev266__tar.gz → 0.0.6.dev285__tar.gz

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.
Files changed (492) hide show
  1. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/PKG-INFO +1 -1
  2. junifer-0.0.6.dev285/docs/changes/newsfragments/401.feature +1 -0
  3. junifer-0.0.6.dev285/docs/changes/newsfragments/403.enh +1 -0
  4. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/conf.py +1 -0
  5. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/_version.py +2 -2
  6. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/functions.py +1 -1
  7. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/parser.py +1 -1
  8. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/_masks.py +1 -1
  9. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/template_spaces.py +1 -1
  10. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/datalad_base.py +46 -17
  11. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_datalad_base.py +18 -2
  12. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/stats.py +1 -1
  13. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/typing/__init__.pyi +2 -0
  14. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/typing/_typing.py +8 -6
  15. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/__init__.pyi +3 -0
  16. junifer-0.0.6.dev285/junifer/utils/_config.py +110 -0
  17. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/helpers.py +1 -1
  18. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/singleton.py +1 -1
  19. junifer-0.0.6.dev285/junifer/utils/tests/test_config.py +59 -0
  20. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer.egg-info/PKG-INFO +1 -1
  21. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer.egg-info/SOURCES.txt +4 -0
  22. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.dockerignore +0 -0
  23. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  24. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  25. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  26. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  27. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  28. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  29. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/dependabot.yml +0 -0
  30. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/pull_request_template.md +0 -0
  31. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/ci-docs.yml +0 -0
  32. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/ci.yml +0 -0
  33. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/docker-ci-publish.yml +0 -0
  34. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/docker-docs-publish.yml +0 -0
  35. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/docs-preview.yml +0 -0
  36. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/docs.yml +0 -0
  37. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/lint.yml +0 -0
  38. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.github/workflows/pypi.yml +0 -0
  39. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.gitignore +0 -0
  40. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.gitmodules +0 -0
  41. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/.pre-commit-config.yaml +0 -0
  42. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/AUTHORS.rst +0 -0
  43. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/Dockerfile-ci +0 -0
  44. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/Dockerfile-docs +0 -0
  45. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/LICENSE.md +0 -0
  46. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/README.md +0 -0
  47. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/codecov.yml +0 -0
  48. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/conda-env.yml +0 -0
  49. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/Makefile +0 -0
  50. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/_static/css/custom.css +0 -0
  51. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/_static/js/custom.js +0 -0
  52. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/_templates/versions.html +0 -0
  53. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/api.rst +0 -0
  54. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/cli.rst +0 -0
  55. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/configs.rst +0 -0
  56. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/data.rst +0 -0
  57. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/datagrabbers.rst +0 -0
  58. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/datareaders.rst +0 -0
  59. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/index.rst +0 -0
  60. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/markers.rst +0 -0
  61. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/nilearn.rst +0 -0
  62. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/onthefly.rst +0 -0
  63. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/pipeline.rst +0 -0
  64. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/preprocessing.rst +0 -0
  65. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/stats.rst +0 -0
  66. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/storage.rst +0 -0
  67. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/testing.rst +0 -0
  68. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/api/utils.rst +0 -0
  69. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/builtin.rst +0 -0
  70. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/contributors.inc +0 -0
  71. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/.gitignore +0 -0
  72. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/335.enh +0 -0
  73. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/354.feature +0 -0
  74. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/355.misc +0 -0
  75. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/356.bugfix +0 -0
  76. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/357.enh +0 -0
  77. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/358.doc +0 -0
  78. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/359.doc +0 -0
  79. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/360.bugfix +0 -0
  80. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/361.misc +0 -0
  81. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/362.feature +0 -0
  82. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/367.enh +0 -0
  83. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/368.enh +0 -0
  84. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/369.bugfix +0 -0
  85. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/370.bugfix +0 -0
  86. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/372.misc +0 -0
  87. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/373.misc +0 -0
  88. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/374.misc +0 -0
  89. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/380.misc +0 -0
  90. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/382.misc +0 -0
  91. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/383.misc +0 -0
  92. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/384.misc +0 -0
  93. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/386.bugfix +0 -0
  94. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/387.change +0 -0
  95. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/387.feature +0 -0
  96. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/388.bugfix +0 -0
  97. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/389.enh +0 -0
  98. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/390.change +0 -0
  99. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/390.enh +0 -0
  100. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/391.misc +0 -0
  101. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/392.feature +0 -0
  102. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/393.misc +0 -0
  103. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/changes/newsfragments/398.bugfix +0 -0
  104. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/contribution.rst +0 -0
  105. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/coordinates.rst +0 -0
  106. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/datagrabber.rst +0 -0
  107. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/dependencies.rst +0 -0
  108. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/extension.rst +0 -0
  109. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/index.rst +0 -0
  110. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/marker.rst +0 -0
  111. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/masks.rst +0 -0
  112. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/parcellations.rst +0 -0
  113. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/extending/preprocessor.rst +0 -0
  114. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/faq.rst +0 -0
  115. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/help.rst +0 -0
  116. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/images/junifer_logo.png +0 -0
  117. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/index.rst +0 -0
  118. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/installation.rst +0 -0
  119. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/links.inc +0 -0
  120. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/maintaining.rst +0 -0
  121. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/redirect.html +0 -0
  122. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/starting.rst +0 -0
  123. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/data.rst +0 -0
  124. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/datagrabber.rst +0 -0
  125. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/datareader.rst +0 -0
  126. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/index.rst +0 -0
  127. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/marker.rst +0 -0
  128. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/pipeline.rst +0 -0
  129. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/preprocess.rst +0 -0
  130. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/understanding/storage.rst +0 -0
  131. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/using/codeless.rst +0 -0
  132. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/using/index.rst +0 -0
  133. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/using/masks.rst +0 -0
  134. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/using/queueing.rst +0 -0
  135. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/using/running.rst +0 -0
  136. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/docs/whats_new.rst +0 -0
  137. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/README.rst +0 -0
  138. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/norun_hcpfc_pearson.py +0 -0
  139. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/norun_ukbvm_gmd.py +0 -0
  140. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/run_compute_parcel_mean.py +0 -0
  141. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/run_datagrabber_bids_datalad.py +0 -0
  142. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/run_ets_rss_marker.py +0 -0
  143. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/run_junifer_julearn.py +0 -0
  144. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/run_run_gmd_mean.py +0 -0
  145. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/yamls/gmd_mean.yaml +0 -0
  146. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  147. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  148. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  149. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/ignore_words.txt +0 -0
  150. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/__init__.py +0 -0
  151. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/__init__.pyi +0 -0
  152. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/__init__.py +0 -0
  153. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/__init__.pyi +0 -0
  154. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/decorators.py +1 -1
  155. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/py.typed +0 -0
  156. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/__init__.py +0 -0
  157. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/__init__.pyi +0 -0
  158. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  159. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  160. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/py.typed +0 -0
  161. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  162. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  163. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  164. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  165. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/afni/3dRSFC +0 -0
  166. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/afni/3dReHo +0 -0
  167. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/afni/afni +0 -0
  168. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  169. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/ants/ResampleImage +0 -0
  170. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/ants/antsApplyTransforms +0 -0
  171. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  172. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  173. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/freesurfer/mri_binarize +0 -0
  174. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/freesurfer/mri_mc +0 -0
  175. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/freesurfer/mri_pretess +0 -0
  176. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/freesurfer/mris_convert +0 -0
  177. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  178. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/fsl/applywarp +0 -0
  179. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/fsl/flirt +0 -0
  180. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/fsl/img2imgcoord +0 -0
  181. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  182. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/fsl/std2imgcoord +0 -0
  183. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/run_conda.bash +0 -0
  184. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/run_conda.zsh +0 -0
  185. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/run_venv.bash +0 -0
  186. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/res/run_venv.zsh +0 -0
  187. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/api/tests/test_functions.py +0 -0
  188. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/__init__.py +0 -0
  189. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/__init__.pyi +0 -0
  190. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/cli.py +8 -8
  191. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/py.typed +0 -0
  192. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  193. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  194. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  195. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/tests/test_cli.py +0 -0
  196. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/tests/test_cli_utils.py +0 -0
  197. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/tests/test_parser.py +0 -0
  198. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/cli/utils.py +0 -0
  199. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/__init__.py +0 -0
  200. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/__init__.py +0 -0
  201. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/__init__.pyi +0 -0
  202. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  203. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  204. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  205. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  206. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  207. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  208. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  209. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  210. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  211. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  212. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  213. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  214. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  215. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/configs/juseless/py.typed +0 -0
  216. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/conftest.py +0 -0
  217. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/__init__.py +0 -0
  218. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/__init__.pyi +0 -0
  219. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/_dispatch.py +1 -1
  220. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
  221. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/CogAC_VOIs.txt +0 -0
  222. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/CogAR_VOIs.txt +0 -0
  223. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  224. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  225. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Empathy_VOIs.txt +0 -0
  226. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Motor_VOIs.txt +0 -0
  227. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/MultiTask_VOIs.txt +0 -0
  228. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  229. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  230. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  231. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Rew_VOIs.txt +0 -0
  232. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  233. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/ToM_VOIs.txt +0 -0
  234. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/VigAtt_VOIs.txt +0 -0
  235. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/WM_VOIs.txt +0 -0
  236. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/eMDN_VOIs.txt +0 -0
  237. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/eSAD_VOIs.txt +0 -0
  238. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/VOIs/meta/extDMN_VOIs.txt +0 -0
  239. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/__init__.py +0 -0
  240. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/__init__.pyi +0 -0
  241. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  242. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/_coordinates.py +0 -0
  243. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  244. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  245. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/__init__.py +0 -0
  246. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/__init__.pyi +0 -0
  247. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/_ants_mask_warper.py +0 -0
  248. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  249. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/tests/test_masks.py +0 -0
  250. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
  251. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  252. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  253. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  254. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/parcellations/__init__.py +0 -0
  255. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/parcellations/__init__.pyi +0 -0
  256. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  257. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  258. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/parcellations/_parcellations.py +0 -0
  259. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  260. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/pipeline_data_registry_base.py +0 -0
  261. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/py.typed +0 -0
  262. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/tests/test_data_utils.py +0 -0
  263. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/tests/test_template_spaces.py +0 -0
  264. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/data/utils.py +0 -0
  265. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/__init__.py +0 -0
  266. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/__init__.pyi +0 -0
  267. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/__init__.py +0 -0
  268. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  269. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/id1000.py +0 -0
  270. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/piop1.py +0 -0
  271. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/piop2.py +0 -0
  272. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/py.typed +0 -0
  273. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  274. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  275. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  276. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/base.py +0 -0
  277. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  278. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  279. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  280. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  281. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  282. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/hcp1200/py.typed +0 -0
  283. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  284. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/multiple.py +0 -0
  285. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/pattern.py +0 -0
  286. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/pattern_datalad.py +0 -0
  287. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  288. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/py.typed +0 -0
  289. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_base.py +0 -0
  290. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  291. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_multiple.py +0 -0
  292. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_pattern.py +0 -0
  293. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  294. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  295. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datareader/__init__.py +0 -0
  296. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datareader/__init__.pyi +0 -0
  297. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datareader/default.py +0 -0
  298. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datareader/py.typed +0 -0
  299. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/datareader/tests/test_default_reader.py +0 -0
  300. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  301. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  302. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  303. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  304. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  305. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  306. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  307. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  308. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/__init__.py +0 -0
  309. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/h5io/h5io/__init__.py +0 -0
  310. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/h5io/h5io/_h5io.py +0 -0
  311. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/h5io/h5io/_version.py +0 -0
  312. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  313. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  314. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/__init__.py +0 -0
  315. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/__init__.pyi +0 -0
  316. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  317. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  318. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/py.typed +0 -0
  319. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  320. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  321. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/__init__.py +0 -0
  322. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/__init__.pyi +0 -0
  323. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/base.py +0 -0
  324. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/brainprint.py +0 -0
  325. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/__init__.py +0 -0
  326. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/__init__.pyi +0 -0
  327. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/complexity_base.py +0 -0
  328. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/hurst_exponent.py +0 -0
  329. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  330. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/perm_entropy.py +0 -0
  331. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/py.typed +0 -0
  332. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/range_entropy.py +0 -0
  333. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  334. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/sample_entropy.py +0 -0
  335. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  336. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  337. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  338. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  339. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  340. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  341. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  342. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  343. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  344. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/ets_rss.py +0 -0
  345. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/__init__.py +0 -0
  346. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/__init__.pyi +0 -0
  347. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/_afni_falff.py +0 -0
  348. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/_junifer_falff.py +0 -0
  349. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/falff_base.py +0 -0
  350. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/falff_parcels.py +0 -0
  351. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/falff_spheres.py +0 -0
  352. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/py.typed +0 -0
  353. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  354. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  355. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/__init__.py +0 -0
  356. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  357. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  358. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  359. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  360. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  361. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  362. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  363. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/py.typed +0 -0
  364. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  365. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  366. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  367. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  368. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  369. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  370. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/parcel_aggregation.py +0 -0
  371. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/py.typed +0 -0
  372. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/__init__.py +0 -0
  373. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/__init__.pyi +0 -0
  374. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/_afni_reho.py +0 -0
  375. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/_junifer_reho.py +0 -0
  376. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/py.typed +0 -0
  377. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/reho_base.py +0 -0
  378. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/reho_parcels.py +0 -0
  379. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/reho_spheres.py +0 -0
  380. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  381. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  382. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/sphere_aggregation.py +0 -0
  383. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/__init__.py +0 -0
  384. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  385. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/py.typed +0 -0
  386. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  387. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  388. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  389. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  390. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  391. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  392. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/tests/test_brainprint.py +0 -0
  393. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/tests/test_ets_rss.py +0 -0
  394. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/tests/test_marker_utils.py +0 -0
  395. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/tests/test_markers_base.py +0 -0
  396. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  397. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  398. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/markers/utils.py +0 -0
  399. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/onthefly/__init__.py +0 -0
  400. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/onthefly/_brainprint.py +0 -0
  401. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/onthefly/read_transform.py +0 -0
  402. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/onthefly/tests/test_read_transform.py +0 -0
  403. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/__init__.py +0 -0
  404. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/__init__.pyi +0 -0
  405. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/marker_collection.py +0 -0
  406. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/pipeline_component_registry.py +0 -0
  407. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  408. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/py.typed +0 -0
  409. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  410. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  411. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  412. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  413. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  414. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/update_meta_mixin.py +0 -0
  415. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/utils.py +0 -0
  416. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/pipeline/workdir_manager.py +0 -0
  417. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/__init__.py +0 -0
  418. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/__init__.pyi +0 -0
  419. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/base.py +0 -0
  420. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/confounds/__init__.py +0 -0
  421. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/confounds/__init__.pyi +0 -0
  422. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  423. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/confounds/py.typed +0 -0
  424. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  425. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/py.typed +0 -0
  426. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/__init__.py +0 -0
  427. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  428. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  429. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  430. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  431. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/py.typed +0 -0
  432. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/smoothing.py +0 -0
  433. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  434. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  435. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/__init__.py +0 -0
  436. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/__init__.pyi +0 -0
  437. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/_ants_warper.py +0 -0
  438. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  439. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/py.typed +0 -0
  440. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/space_warper.py +0 -0
  441. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  442. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/py.typed +0 -0
  443. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/__init__.py +0 -0
  444. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/__init__.pyi +0 -0
  445. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/base.py +0 -0
  446. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/hdf5.py +0 -0
  447. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/pandas_base.py +0 -0
  448. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/py.typed +0 -0
  449. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/sqlite.py +0 -0
  450. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/tests/test_hdf5.py +0 -0
  451. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/tests/test_pandas_base.py +0 -0
  452. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/tests/test_sqlite.py +0 -0
  453. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/tests/test_storage_base.py +0 -0
  454. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/tests/test_utils.py +0 -0
  455. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/storage/utils.py +2 -2
  456. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/__init__.py +0 -0
  457. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/__init__.pyi +0 -0
  458. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  459. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/datagrabbers.py +1 -1
  460. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/py.typed +0 -0
  461. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/registry.py +0 -0
  462. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  463. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  464. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  465. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/tests/test_testing_registry.py +0 -0
  466. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/testing/utils.py +0 -0
  467. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/tests/test_main.py +0 -0
  468. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/tests/test_stats.py +0 -0
  469. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/typing/__init__.py +0 -0
  470. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/__init__.py +0 -0
  471. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/_yaml.py +0 -0
  472. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/fs.py +0 -0
  473. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/logging.py +1 -1
  474. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/py.typed +0 -0
  475. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/tests/test_fs.py +0 -0
  476. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/tests/test_helpers.py +0 -0
  477. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer/utils/tests/test_logging.py +0 -0
  478. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer.egg-info/dependency_links.txt +0 -0
  479. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer.egg-info/entry_points.txt +0 -0
  480. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer.egg-info/requires.txt +0 -0
  481. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/junifer.egg-info/top_level.txt +0 -0
  482. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/pyproject.toml +0 -0
  483. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/setup.cfg +0 -0
  484. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/setup.py +0 -0
  485. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_aomic1000_example_dataset.py +0 -0
  486. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_aomicpiop1_example_dataset.py +0 -0
  487. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_aomicpiop2_example_dataset.py +0 -0
  488. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_bids_example_dataset.py +0 -0
  489. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_bids_example_dataset_sessions.py +0 -0
  490. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  491. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tools/create_hcp1200_example_dataset.py +0 -0
  492. {junifer-0.0.6.dev266 → junifer-0.0.6.dev285}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.6.dev266
3
+ Version: 0.0.6.dev285
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>
@@ -0,0 +1 @@
1
+ Introduce :class:`junifer.utils.ConfigManager` singleton class to manage global configuration by `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Use :func:`junifer.utils.ConfigManager` to skip time-consuming dataset ID and dirty checks for :class:`.DataladDataGrabber` by `Fede Raimondo`_
@@ -96,6 +96,7 @@ nitpick_ignore_regex = [
96
96
  ("py:obj", "sqlalchemy.engine.Engine"), # ignore sqlalchemy
97
97
  ("py:class", "pipeline.Pipeline"), # nilearn
98
98
  ("py:obj", "neurokit2.*"), # ignore neurokit2
99
+ ("py:obj", "datalad.*"), # ignore datalad
99
100
  ]
100
101
 
101
102
  # -- Options for HTML output -------------------------------------------------
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.0.6.dev266'
16
- __version_tuple__ = version_tuple = (0, 0, 6, 'dev266')
15
+ __version__ = version = '0.0.6.dev285'
16
+ __version_tuple__ = version_tuple = (0, 0, 6, 'dev285')
@@ -24,7 +24,7 @@ from ..typing import DataGrabberLike, MarkerLike, PreprocessorLike, StorageLike
24
24
  from ..utils import logger, raise_error, yaml
25
25
 
26
26
 
27
- __all__ = ["run", "collect", "queue", "reset", "list_elements"]
27
+ __all__ = ["collect", "list_elements", "queue", "reset", "run"]
28
28
 
29
29
 
30
30
  def _get_datagrabber(datagrabber_config: dict) -> DataGrabberLike:
@@ -15,7 +15,7 @@ import pandas as pd
15
15
  from ..utils import logger, raise_error, warn_with_log, yaml
16
16
 
17
17
 
18
- __all__ = ["parse_yaml", "parse_elements"]
18
+ __all__ = ["parse_elements", "parse_yaml"]
19
19
 
20
20
 
21
21
  def parse_yaml(filepath: Union[str, Path]) -> dict: # noqa: C901
@@ -35,7 +35,7 @@ if TYPE_CHECKING:
35
35
  from nibabel.nifti1 import Nifti1Image
36
36
 
37
37
 
38
- __all__ = ["compute_brain_mask", "MaskRegistry"]
38
+ __all__ = ["MaskRegistry", "compute_brain_mask"]
39
39
 
40
40
 
41
41
  # Path to the masks
@@ -16,7 +16,7 @@ from ..utils import logger, raise_error
16
16
  from .utils import closest_resolution
17
17
 
18
18
 
19
- __all__ = ["get_xfm", "get_template"]
19
+ __all__ = ["get_template", "get_xfm"]
20
20
 
21
21
 
22
22
  def get_xfm(
@@ -17,7 +17,7 @@ from datalad.support.exceptions import IncompleteResultsError
17
17
  from datalad.support.gitrepo import GitRepo
18
18
 
19
19
  from ..pipeline import WorkDirManager
20
- from ..utils import logger, raise_error, warn_with_log
20
+ from ..utils import config, logger, raise_error, warn_with_log
21
21
  from .base import BaseDataGrabber
22
22
 
23
23
 
@@ -143,27 +143,49 @@ class DataladDataGrabber(BaseDataGrabber):
143
143
  """
144
144
  return super().datadir / self._rootdir
145
145
 
146
- def _get_dataset_id_remote(self) -> str:
146
+ def _get_dataset_id_remote(self) -> tuple[str, bool]:
147
147
  """Get the dataset ID from the remote.
148
148
 
149
149
  Returns
150
150
  -------
151
151
  str
152
152
  The dataset ID.
153
+ bool
154
+ Whether the dataset is dirty.
155
+
156
+ Raises
157
+ ------
158
+ ValueError
159
+ If the dataset ID cannot be obtained from the remote.
153
160
 
154
161
  """
155
162
  remote_id = None
163
+ is_dirty = False
156
164
  with tempfile.TemporaryDirectory() as tmpdir:
157
- logger.debug(f"Querying {self.uri} for dataset ID")
158
- repo = GitRepo.clone(
159
- self.uri, path=tmpdir, clone_options=["-n", "--depth=1"]
165
+ if not config.get("datagrabber.skipidcheck", False):
166
+ logger.debug(f"Querying {self.uri} for dataset ID")
167
+ repo = GitRepo.clone(
168
+ self.uri, path=tmpdir, clone_options=["-n", "--depth=1"]
169
+ )
170
+ repo.checkout(name=".datalad/config", options=["HEAD"])
171
+ remote_id = repo.config.get("datalad.dataset.id", None)
172
+ logger.debug(f"Got remote dataset ID = {remote_id}")
173
+
174
+ if not config.get("datagrabber.skipdirtycheck", False):
175
+ is_dirty = repo.dirty
176
+ else:
177
+ logger.debug("Skipping dirty check")
178
+ is_dirty = False
179
+ else:
180
+ logger.debug("Skipping dataset ID check")
181
+ remote_id = self._dataset.id
182
+ is_dirty = False
183
+ logger.debug(
184
+ f"Remote dataset is {'' if is_dirty else 'not'} dirty"
160
185
  )
161
- repo.checkout(name=".datalad/config", options=["HEAD"])
162
- remote_id = repo.config.get("datalad.dataset.id", None)
163
- logger.debug(f"Got remote dataset ID = {remote_id}")
164
186
  if remote_id is None:
165
187
  raise_error("Could not get dataset ID from remote")
166
- return remote_id
188
+ return remote_id, is_dirty
167
189
 
168
190
  def _dataset_get(self, out: dict) -> dict:
169
191
  """Get the dataset found from the path in ``out``.
@@ -178,6 +200,11 @@ class DataladDataGrabber(BaseDataGrabber):
178
200
  dict
179
201
  The unmodified input dictionary.
180
202
 
203
+ Raises
204
+ ------
205
+ datalad.support.exceptions.IncompleteResultsError
206
+ If there is a datalad-related problem while fetching data.
207
+
181
208
  """
182
209
  to_get = []
183
210
  for type_val in out.values():
@@ -230,6 +257,8 @@ class DataladDataGrabber(BaseDataGrabber):
230
257
  ------
231
258
  ValueError
232
259
  If the dataset is already installed but with a different ID.
260
+ datalad.support.exceptions.IncompleteResultsError
261
+ If there is a datalad-related problem while cloning dataset.
233
262
 
234
263
  """
235
264
  isinstalled = dl.Dataset(self._datadir).is_installed()
@@ -238,23 +267,23 @@ class DataladDataGrabber(BaseDataGrabber):
238
267
  self._got_files = []
239
268
  self._dataset: dl.Dataset = dl.Dataset(self._datadir)
240
269
 
241
- remote_id = self._get_dataset_id_remote()
270
+ # Check if dataset is already installed with a different ID
271
+ remote_id, is_dirty = self._get_dataset_id_remote()
242
272
  if remote_id != self._dataset.id:
243
273
  raise_error(
244
274
  "Dataset already installed but with a different "
245
275
  f"ID: {self._dataset.id} (local) != {remote_id} (remote)"
246
276
  )
247
277
 
248
- # Check for dirty datasets:
249
- status = self._dataset.status()
250
- if any(x["state"] != "clean" for x in status):
251
- self.datalad_dirty = True
278
+ # Conditional reporting on dataset dirtiness
279
+ self.datalad_dirty = is_dirty
280
+ if self.datalad_dirty:
252
281
  warn_with_log(
253
- "At least one file is not clean, Junifer will "
254
- "consider this dataset as dirty."
282
+ "At least one file is not clean, "
283
+ f"marking dataset (id: {self._dataset.id}) as dirty."
255
284
  )
256
285
  else:
257
- logger.debug("Dataset is clean")
286
+ logger.debug(f"Dataset (id: {self._dataset.id}) is clean")
258
287
 
259
288
  else:
260
289
  logger.debug(f"Installing dataset {self.uri} to {self._datadir}")
@@ -3,12 +3,14 @@
3
3
  # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
4
  # License: AGPL
5
5
 
6
+ import warnings
6
7
  from pathlib import Path
7
8
 
8
9
  import datalad.api as dl
9
10
  import pytest
10
11
 
11
12
  from junifer.datagrabber import DataladDataGrabber
13
+ from junifer.utils import config
12
14
 
13
15
 
14
16
  _testing_dataset = {
@@ -94,6 +96,12 @@ def test_DataladDataGrabber_install_errors(
94
96
  with pytest.raises(ValueError, match=r"different ID"):
95
97
  with dg:
96
98
  pass
99
+ # Set config to skip id check and test
100
+ config.set(key="datagrabber.skipidcheck", val=True)
101
+ with dg:
102
+ pass
103
+ # Reset config
104
+ config.delete("datagrabber.skipidcheck")
97
105
 
98
106
  elem1_t1w = datadir / "example_bids/sub-01/anat/sub-01_T1w.nii.gz"
99
107
  elem1_t1w.unlink()
@@ -104,6 +112,14 @@ def test_DataladDataGrabber_install_errors(
104
112
  with pytest.warns(RuntimeWarning, match=r"one file is not clean"):
105
113
  with dg:
106
114
  pass
115
+ # Set config to skip dirty check and test
116
+ with warnings.catch_warnings():
117
+ warnings.simplefilter("error")
118
+ config.set(key="datagrabber.skipdirtycheck", val=True)
119
+ with dg:
120
+ pass
121
+ # Reset config
122
+ config.delete("datagrabber.skipdirtycheck")
107
123
 
108
124
 
109
125
  def test_DataladDataGrabber_clone_cleanup(
@@ -246,7 +262,7 @@ def test_DataladDataGrabber_previously_cloned(
246
262
  meta = elem1["BOLD"]["meta"]
247
263
  assert "datagrabber" in meta
248
264
  assert "datalad_dirty" in meta["datagrabber"]
249
- assert meta["datagrabber"]["datalad_dirty"] is False
265
+ assert meta["datagrabber"]["datalad_dirty"] is True
250
266
  assert "datalad_commit_id" in meta["datagrabber"]
251
267
  assert meta["datagrabber"]["datalad_commit_id"] == commit
252
268
  assert "datalad_id" in meta["datagrabber"]
@@ -326,7 +342,7 @@ def test_DataladDataGrabber_previously_cloned_and_get(
326
342
  meta = elem1["BOLD"]["meta"]
327
343
  assert "datagrabber" in meta
328
344
  assert "datalad_dirty" in meta["datagrabber"]
329
- assert meta["datagrabber"]["datalad_dirty"] is False
345
+ assert meta["datagrabber"]["datalad_dirty"] is True
330
346
  assert "datalad_commit_id" in meta["datagrabber"]
331
347
  assert meta["datagrabber"]["datalad_commit_id"] == commit
332
348
  assert "datalad_id" in meta["datagrabber"]
@@ -13,7 +13,7 @@ from scipy.stats.mstats import winsorize
13
13
  from .utils import logger, raise_error
14
14
 
15
15
 
16
- __all__ = ["get_aggfunc_by_name", "count", "winsorized_mean", "select"]
16
+ __all__ = ["count", "get_aggfunc_by_name", "select", "winsorized_mean"]
17
17
 
18
18
 
19
19
  def get_aggfunc_by_name(
@@ -9,6 +9,7 @@ __all__ = [
9
9
  "ExternalDependencies",
10
10
  "MarkerInOutMappings",
11
11
  "DataGrabberPatterns",
12
+ "ConfigVal",
12
13
  ]
13
14
 
14
15
  from ._typing import (
@@ -22,4 +23,5 @@ from ._typing import (
22
23
  ExternalDependencies,
23
24
  MarkerInOutMappings,
24
25
  DataGrabberPatterns,
26
+ ConfigVal,
25
27
  )
@@ -19,16 +19,17 @@ if TYPE_CHECKING:
19
19
 
20
20
 
21
21
  __all__ = [
22
+ "ConditionalDependencies",
23
+ "ConfigVal",
22
24
  "DataGrabberLike",
23
- "PreprocessorLike",
24
- "MarkerLike",
25
- "StorageLike",
26
- "PipelineComponent",
25
+ "DataGrabberPatterns",
27
26
  "Dependencies",
28
- "ConditionalDependencies",
29
27
  "ExternalDependencies",
30
28
  "MarkerInOutMappings",
31
- "DataGrabberPatterns",
29
+ "MarkerLike",
30
+ "PipelineComponent",
31
+ "PreprocessorLike",
32
+ "StorageLike",
32
33
  ]
33
34
 
34
35
 
@@ -60,3 +61,4 @@ MarkerInOutMappings = MutableMapping[str, MutableMapping[str, str]]
60
61
  DataGrabberPatterns = dict[
61
62
  str, Union[dict[str, str], Sequence[dict[str, str]]]
62
63
  ]
64
+ ConfigVal = Union[bool, int, float]
@@ -1,15 +1,18 @@
1
1
  __all__ = [
2
2
  "make_executable",
3
3
  "configure_logging",
4
+ "config",
4
5
  "logger",
5
6
  "raise_error",
6
7
  "warn_with_log",
7
8
  "run_ext_cmd",
8
9
  "deep_update",
9
10
  "yaml",
11
+ "ConfigManager",
10
12
  ]
11
13
 
12
14
  from .fs import make_executable
13
15
  from .logging import configure_logging, logger, raise_error, warn_with_log
16
+ from ._config import config, ConfigManager
14
17
  from .helpers import run_ext_cmd, deep_update
15
18
  from ._yaml import yaml
@@ -0,0 +1,110 @@
1
+ """Provide junifer global configuration."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Synchon Mandal <s.mandal@fz-juelich.de>
5
+ # License: AGPL
6
+
7
+ import os
8
+ from typing import Optional
9
+
10
+ from ..typing import ConfigVal
11
+ from .logging import logger
12
+ from .singleton import Singleton
13
+
14
+
15
+ __all__ = ["ConfigManager", "config"]
16
+
17
+
18
+ class ConfigManager(metaclass=Singleton):
19
+ """Manage configuration parameters.
20
+
21
+ Attributes
22
+ ----------
23
+ _config : dict
24
+ Configuration parameters.
25
+
26
+ """
27
+
28
+ def __init__(self) -> None:
29
+ """Initialize the class."""
30
+ self._config = {}
31
+ # Initial setup from process env
32
+ self._reload()
33
+
34
+ def _reload(self) -> None:
35
+ """Reload env vars."""
36
+ for t_var in os.environ:
37
+ if t_var.startswith("JUNIFER_"):
38
+ # Set correct type
39
+ var_value = os.environ[t_var]
40
+ # bool
41
+ if var_value.lower() == "true":
42
+ var_value = True
43
+ elif var_value.lower() == "false":
44
+ var_value = False
45
+ # numeric
46
+ else:
47
+ try:
48
+ var_value = int(var_value)
49
+ except ValueError:
50
+ try:
51
+ var_value = float(var_value)
52
+ except ValueError:
53
+ pass
54
+ # Set value
55
+ var_name = (
56
+ t_var.replace("JUNIFER_", "").lower().replace("_", ".")
57
+ )
58
+ logger.debug(
59
+ f"Setting `{var_name}` from environment to "
60
+ f"`{var_value}` (type: {type(var_value)})"
61
+ )
62
+ self._config[var_name] = var_value
63
+
64
+ def get(self, key: str, default: Optional[ConfigVal] = None) -> ConfigVal:
65
+ """Get configuration parameter.
66
+
67
+ Parameters
68
+ ----------
69
+ key : str
70
+ The configuration key to get.
71
+ default : bool or int or float or None, optional
72
+ The default value to return if the key is not found (default None).
73
+
74
+ Returns
75
+ -------
76
+ bool or int or float
77
+ The configuration value.
78
+
79
+ """
80
+ return self._config.get(key, default)
81
+
82
+ def set(self, key: str, val: ConfigVal) -> None:
83
+ """Set configuration parameter.
84
+
85
+ Parameters
86
+ ----------
87
+ key : str
88
+ The configuration key to set.
89
+ val : bool or int or float
90
+ The value to set ``key`` to.
91
+
92
+ """
93
+ logger.debug(f"Setting `{key}` to `{val}` (type: {type(val)})")
94
+ self._config[key] = val
95
+
96
+ def delete(self, key: str) -> None:
97
+ """Delete configuration parameter.
98
+
99
+ Parameters
100
+ ----------
101
+ key : str
102
+ The configuration key to delete.
103
+
104
+ """
105
+ logger.debug(f"Deleting `{key}` from config")
106
+ _ = self._config.pop(key)
107
+
108
+
109
+ # Initialize here to access from anywhere
110
+ config = ConfigManager()
@@ -10,7 +10,7 @@ import sys
10
10
  from .logging import logger, raise_error
11
11
 
12
12
 
13
- __all__ = ["run_ext_cmd", "deep_update"]
13
+ __all__ = ["deep_update", "run_ext_cmd"]
14
14
 
15
15
 
16
16
  def run_ext_cmd(name: str, cmd: list[str]) -> None:
@@ -8,7 +8,7 @@ from abc import ABCMeta
8
8
  from typing import Any, ClassVar
9
9
 
10
10
 
11
- __all__ = ["Singleton", "ABCSingleton"]
11
+ __all__ = ["ABCSingleton", "Singleton"]
12
12
 
13
13
 
14
14
  class Singleton(type):
@@ -0,0 +1,59 @@
1
+ """Provide tests for ConfigManager."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Synchon Mandal <s.mandal@fz-juelich.de>
5
+ # License: AGPL
6
+
7
+ import os
8
+
9
+ import pytest
10
+
11
+ from junifer.typing import ConfigVal
12
+ from junifer.utils import config
13
+ from junifer.utils._config import ConfigManager
14
+
15
+
16
+ def test_config_manager_singleton() -> None:
17
+ """Test that ConfigManager is a singleton."""
18
+ config_mgr_1 = ConfigManager()
19
+ config_mgr_2 = ConfigManager()
20
+ assert id(config_mgr_1) == id(config_mgr_2)
21
+
22
+
23
+ def test_config_manager() -> None:
24
+ """Test config operations for ConfigManager."""
25
+ # Get non-existing with default
26
+ assert config.get(key="scooby") is None
27
+ # Set
28
+ config.set(key="scooby", val=True)
29
+ # Get existing
30
+ assert config.get("scooby")
31
+ # Delete
32
+ config.delete("scooby")
33
+ # Get non-existing with default
34
+ assert config.get(key="scooby") is None
35
+
36
+
37
+ @pytest.mark.parametrize(
38
+ "val, expected_val",
39
+ [("TRUE", True), ("FALSE", False), ("1", 1), ("0.0", 0.0)],
40
+ )
41
+ def test_config_manager_env_reload(val: str, expected_val: ConfigVal) -> None:
42
+ """Test config parsing from env reload.
43
+
44
+ Parameters
45
+ ----------
46
+ val : str
47
+ The parametrized values.
48
+ expected_val : bool or int or float
49
+ The parametrized expected value.
50
+
51
+ """
52
+ # Set env var
53
+ os.environ["JUNIFER_TESTME"] = val
54
+ # Check
55
+ config._reload()
56
+ assert config.get("testme") == expected_val
57
+ # Cleanup
58
+ del os.environ["JUNIFER_TESTME"]
59
+ config.delete("testme")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.6.dev266
3
+ Version: 0.0.6.dev285
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>
@@ -95,6 +95,8 @@ docs/changes/newsfragments/391.misc
95
95
  docs/changes/newsfragments/392.feature
96
96
  docs/changes/newsfragments/393.misc
97
97
  docs/changes/newsfragments/398.bugfix
98
+ docs/changes/newsfragments/401.feature
99
+ docs/changes/newsfragments/403.enh
98
100
  docs/extending/coordinates.rst
99
101
  docs/extending/datagrabber.rst
100
102
  docs/extending/dependencies.rst
@@ -468,12 +470,14 @@ junifer/typing/__init__.pyi
468
470
  junifer/typing/_typing.py
469
471
  junifer/utils/__init__.py
470
472
  junifer/utils/__init__.pyi
473
+ junifer/utils/_config.py
471
474
  junifer/utils/_yaml.py
472
475
  junifer/utils/fs.py
473
476
  junifer/utils/helpers.py
474
477
  junifer/utils/logging.py
475
478
  junifer/utils/py.typed
476
479
  junifer/utils/singleton.py
480
+ junifer/utils/tests/test_config.py
477
481
  junifer/utils/tests/test_fs.py
478
482
  junifer/utils/tests/test_helpers.py
479
483
  junifer/utils/tests/test_logging.py
File without changes