junifer 0.0.8.dev298__tar.gz → 0.0.8.dev303__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 (600) hide show
  1. {junifer-0.0.8.dev298/junifer.egg-info → junifer-0.0.8.dev303}/PKG-INFO +1 -1
  2. junifer-0.0.8.dev303/docs/changes/newsfragments/509.enh +1 -0
  3. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/_version.py +3 -3
  4. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/functions.py +54 -13
  5. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/tests/test_functions.py +173 -1
  6. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/cli.py +27 -5
  7. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/tests/test_cli.py +72 -0
  8. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/tests/test_workdir_manager.py +15 -0
  9. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/workdir_manager.py +8 -8
  10. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303/junifer.egg-info}/PKG-INFO +1 -1
  11. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/SOURCES.txt +1 -0
  12. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/scm_file_list.json +1 -0
  13. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/scm_version.json +2 -2
  14. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.dockerignore +0 -0
  15. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  16. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  17. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  18. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  19. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  20. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  21. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/dependabot.yml +0 -0
  22. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/pull_request_template.md +0 -0
  23. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/check-stale.yml +0 -0
  24. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/ci.yml +0 -0
  25. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/docker-publish.yml +0 -0
  26. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/docs-preview.yml +0 -0
  27. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/docs.yml +0 -0
  28. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/lint.yml +0 -0
  29. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.github/workflows/publish.yml +0 -0
  30. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.gitignore +0 -0
  31. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.gitmodules +0 -0
  32. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.pre-commit-config.yaml +0 -0
  33. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/.python-version +0 -0
  34. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/AUTHORS.rst +0 -0
  35. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/Dockerfile +0 -0
  36. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/Dockerfile-ci +0 -0
  37. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/LICENSE.md +0 -0
  38. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/README.md +0 -0
  39. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/codecov.yml +0 -0
  40. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/conda-env.yml +0 -0
  41. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/Makefile +0 -0
  42. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/_static/css/custom.css +0 -0
  43. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/_static/css/version_selector.css +0 -0
  44. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/_static/js/custom.js +0 -0
  45. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/_templates/versions.html +0 -0
  46. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/api.rst +0 -0
  47. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/cli.rst +0 -0
  48. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/configs.rst +0 -0
  49. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/data.rst +0 -0
  50. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/datagrabbers.rst +0 -0
  51. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/datareaders.rst +0 -0
  52. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/index.rst +0 -0
  53. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/markers.rst +0 -0
  54. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/nilearn.rst +0 -0
  55. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/onthefly.rst +0 -0
  56. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/pipeline.rst +0 -0
  57. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/preprocessing.rst +0 -0
  58. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/stats.rst +0 -0
  59. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/storage.rst +0 -0
  60. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/testing.rst +0 -0
  61. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/api/utils.rst +0 -0
  62. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/builtin.rst +0 -0
  63. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/contributors.inc +0 -0
  64. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/.gitignore +0 -0
  65. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/239.enh +0 -0
  66. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/364.doc +0 -0
  67. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/364.enh +0 -0
  68. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/364.feature +0 -0
  69. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/474.misc +0 -0
  70. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/482.bugfix +0 -0
  71. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/492.bugfix +0 -0
  72. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/499.enh +0 -0
  73. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/502.bugfix +0 -0
  74. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/503.enh +0 -0
  75. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/510.bugfix +0 -0
  76. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.bugfix +0 -0
  77. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.bugfix.1 +0 -0
  78. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.change +0 -0
  79. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.enh +0 -0
  80. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.enh.1 +0 -0
  81. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.feature +0 -0
  82. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.misc +0 -0
  83. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/511.misc.1 +0 -0
  84. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/513.doc +0 -0
  85. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/513.misc +0 -0
  86. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/514.bugfix +0 -0
  87. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/514.bugfix.1 +0 -0
  88. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/514.enh +0 -0
  89. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/515.doc +0 -0
  90. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/515.enh +0 -0
  91. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/515.enh.1 +0 -0
  92. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/515.misc +0 -0
  93. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/515.misc.1 +0 -0
  94. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/516.bugfix +0 -0
  95. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/516.bugfix.1 +0 -0
  96. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/516.bugfix.2 +0 -0
  97. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/516.change +0 -0
  98. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/516.change.1 +0 -0
  99. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/516.misc +0 -0
  100. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix +0 -0
  101. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix.1 +0 -0
  102. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix.2 +0 -0
  103. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix.3 +0 -0
  104. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix.4 +0 -0
  105. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix.5 +0 -0
  106. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.bugfix.6 +0 -0
  107. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.change +0 -0
  108. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.doc +0 -0
  109. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.misc +0 -0
  110. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.misc.1 +0 -0
  111. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.misc.2 +0 -0
  112. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.misc.3 +0 -0
  113. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/520.removal +0 -0
  114. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/521.bugfix +0 -0
  115. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/522.bugfix +0 -0
  116. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/522.enh +0 -0
  117. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/changes/newsfragments/523.misc +0 -0
  118. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/conf.py +0 -0
  119. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/contribution.rst +0 -0
  120. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/confounds_format.rst +0 -0
  121. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/coordinates.rst +0 -0
  122. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/data_dump_asset.rst +0 -0
  123. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/data_registries.rst +0 -0
  124. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/data_types.rst +0 -0
  125. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/datagrabber.rst +0 -0
  126. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/dependencies.rst +0 -0
  127. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/extension.rst +0 -0
  128. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/index.rst +0 -0
  129. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/logging.rst +0 -0
  130. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/maps.rst +0 -0
  131. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/marker.rst +0 -0
  132. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/masks.rst +0 -0
  133. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/parcellations.rst +0 -0
  134. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/plugins.rst +0 -0
  135. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/extending/preprocessor.rst +0 -0
  136. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/faq.rst +0 -0
  137. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/help.rst +0 -0
  138. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/images/junifer_logo.png +0 -0
  139. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/index.rst +0 -0
  140. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/installation.rst +0 -0
  141. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/links.inc +0 -0
  142. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/maintaining.rst +0 -0
  143. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/poly.py +0 -0
  144. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/poly_files/patches/version_banner.html +0 -0
  145. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/poly_files/patches/versions.html +0 -0
  146. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/poly_files/templates/index.html +0 -0
  147. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/starting.rst +0 -0
  148. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/data.rst +0 -0
  149. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/datagrabber.rst +0 -0
  150. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/datareader.rst +0 -0
  151. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/index.rst +0 -0
  152. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/marker.rst +0 -0
  153. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/pipeline.rst +0 -0
  154. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/preprocess.rst +0 -0
  155. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/understanding/storage.rst +0 -0
  156. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/codeless.rst +0 -0
  157. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/configuring.rst +0 -0
  158. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/dumping.rst +0 -0
  159. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/index.rst +0 -0
  160. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/masks.rst +0 -0
  161. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/queueing.rst +0 -0
  162. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/using/running.rst +0 -0
  163. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/docs/whats_new.rst +0 -0
  164. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/README.rst +0 -0
  165. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/norun_hcpfc_pearson.py +0 -0
  166. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/norun_ukbvm_gmd.py +0 -0
  167. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/run_compute_parcel_mean.py +0 -0
  168. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/run_datagrabber_bids_datalad.py +0 -0
  169. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/run_ets_rss_marker.py +0 -0
  170. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/run_junifer_julearn.py +0 -0
  171. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/run_run_gmd_mean.py +0 -0
  172. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/yamls/gmd_mean.yaml +0 -0
  173. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  174. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  175. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  176. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/ignore_words.txt +0 -0
  177. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/__init__.py +0 -0
  178. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/__init__.pyi +0 -0
  179. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/__init__.py +0 -0
  180. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/__init__.pyi +0 -0
  181. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/decorators.py +0 -0
  182. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/py.typed +0 -0
  183. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/__init__.py +0 -0
  184. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/__init__.pyi +0 -0
  185. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  186. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  187. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/py.typed +0 -0
  188. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  189. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  190. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  191. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  192. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/afni/3dRSFC +0 -0
  193. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/afni/3dReHo +0 -0
  194. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/afni/afni +0 -0
  195. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  196. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/ants/ResampleImage +0 -0
  197. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/ants/antsApplyTransforms +0 -0
  198. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  199. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  200. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/freesurfer/mri_binarize +0 -0
  201. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/freesurfer/mri_mc +0 -0
  202. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/freesurfer/mri_pretess +0 -0
  203. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/freesurfer/mris_convert +0 -0
  204. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  205. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/fsl/applywarp +0 -0
  206. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/fsl/flirt +0 -0
  207. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/fsl/img2imgcoord +0 -0
  208. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  209. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/fsl/std2imgcoord +0 -0
  210. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/run_conda.bash +0 -0
  211. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/run_conda.zsh +0 -0
  212. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/run_venv.bash +0 -0
  213. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/res/run_venv.zsh +0 -0
  214. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/api/tests/test_decorators.py +0 -0
  215. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/__init__.py +0 -0
  216. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/__init__.pyi +0 -0
  217. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/parser.py +0 -0
  218. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/py.typed +0 -0
  219. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/tests/data/gmd_mean.yaml +0 -0
  220. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/tests/data/gmd_mean_htcondor.yaml +0 -0
  221. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  222. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/tests/test_cli_utils.py +0 -0
  223. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/cli/utils.py +0 -0
  224. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/__init__.py +0 -0
  225. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/__init__.pyi +0 -0
  226. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/__init__.py +0 -0
  227. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/__init__.pyi +0 -0
  228. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  229. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/__init__.pyi +0 -0
  230. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  231. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  232. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  233. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/py.typed +0 -0
  234. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  235. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  236. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  237. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  238. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  239. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  240. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  241. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/juseless/py.typed +0 -0
  242. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/configs/py.typed +0 -0
  243. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/conftest.py +0 -0
  244. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/__init__.py +0 -0
  245. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/__init__.pyi +0 -0
  246. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/_dispatch.py +0 -0
  247. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/__init__.py +0 -0
  248. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/__init__.pyi +0 -0
  249. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/_ants_coordinates_warper.py +0 -0
  250. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/_coordinates.py +0 -0
  251. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/_fsl_coordinates_warper.py +0 -0
  252. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/tests/test_coordinates.py +0 -0
  253. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/coordinates/tests/test_coordinates_names.py +0 -0
  254. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/maps/__init__.py +0 -0
  255. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/maps/__init__.pyi +0 -0
  256. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/maps/_ants_maps_warper.py +0 -0
  257. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/maps/_fsl_maps_warper.py +0 -0
  258. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/maps/_maps.py +0 -0
  259. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/maps/tests/test_maps.py +0 -0
  260. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/masks/__init__.py +0 -0
  261. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/masks/__init__.pyi +0 -0
  262. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/masks/_ants_mask_warper.py +0 -0
  263. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/masks/_fsl_mask_warper.py +0 -0
  264. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/masks/_masks.py +0 -0
  265. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/masks/tests/test_masks.py +0 -0
  266. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/parcellations/__init__.py +0 -0
  267. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/parcellations/__init__.pyi +0 -0
  268. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/parcellations/_ants_parcellation_warper.py +0 -0
  269. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/parcellations/_fsl_parcellation_warper.py +0 -0
  270. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/parcellations/_parcellations.py +0 -0
  271. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/parcellations/tests/test_parcellations.py +0 -0
  272. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/pipeline_data_registry_base.py +0 -0
  273. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/py.typed +0 -0
  274. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/template_spaces.py +0 -0
  275. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/tests/test_data_utils.py +0 -0
  276. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/tests/test_dispatch.py +0 -0
  277. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/tests/test_template_spaces.py +0 -0
  278. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/data/utils.py +0 -0
  279. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/__init__.py +0 -0
  280. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/__init__.pyi +0 -0
  281. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/__init__.py +0 -0
  282. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/__init__.pyi +0 -0
  283. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/_types.py +0 -0
  284. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/id1000.py +0 -0
  285. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/piop1.py +0 -0
  286. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/piop2.py +0 -0
  287. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/py.typed +0 -0
  288. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  289. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  290. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  291. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/base.py +0 -0
  292. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/datalad_base.py +0 -0
  293. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  294. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  295. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/hcp1200/__init__.pyi +0 -0
  296. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  297. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  298. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/hcp1200/py.typed +0 -0
  299. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  300. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/multiple.py +0 -0
  301. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/pattern.py +0 -0
  302. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/pattern_datalad.py +0 -0
  303. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  304. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/py.typed +0 -0
  305. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_base.py +0 -0
  306. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  307. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  308. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_multiple.py +0 -0
  309. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_pattern.py +0 -0
  310. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  311. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  312. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datareader/__init__.py +0 -0
  313. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datareader/__init__.pyi +0 -0
  314. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datareader/default.py +0 -0
  315. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datareader/py.typed +0 -0
  316. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/datareader/tests/test_default_reader.py +0 -0
  317. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.codecov.yml +0 -0
  318. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.codespellignore +0 -0
  319. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  320. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/documentation.md +0 -0
  321. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  322. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/ISSUE_TEMPLATE/questions-help-support.md +0 -0
  323. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/dependabot.yml +0 -0
  324. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/workflows/build.yml +0 -0
  325. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/workflows/code-style.yml +0 -0
  326. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/workflows/doc.yml +0 -0
  327. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/workflows/publish.yml +0 -0
  328. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.github/workflows/pytest.yml +0 -0
  329. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/.gitignore +0 -0
  330. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/LICENSE +0 -0
  331. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/README.md +0 -0
  332. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  333. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  334. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  335. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  336. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/cli/__init__.py +0 -0
  337. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/cli/help_text.py +0 -0
  338. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/cli/parser.py +0 -0
  339. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/cli/utils.py +0 -0
  340. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/commands/__init__.py +0 -0
  341. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/commands/sys_info.py +0 -0
  342. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  343. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  344. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  345. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/utils/tests/__init__.py +0 -0
  346. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/utils/tests/test_config.py +0 -0
  347. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  348. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/Makefile +0 -0
  349. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/_static/.gitkeep +0 -0
  350. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/_templates/autosummary/class.rst +0 -0
  351. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/_templates/autosummary/function.rst +0 -0
  352. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/_templates/autosummary/module.rst +0 -0
  353. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/api/index.rst +0 -0
  354. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/conf.py +0 -0
  355. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/index.rst +0 -0
  356. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/links.inc +0 -0
  357. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/make.bat +0 -0
  358. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/doc/references.bib +0 -0
  359. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/pyproject.toml +0 -0
  360. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/BrainPrint/setup.py +0 -0
  361. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/__init__.py +0 -0
  362. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/__init__.pyi +0 -0
  363. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/.coveragerc +0 -0
  364. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/.gitattributes +0 -0
  365. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/.gitignore +0 -0
  366. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/.travis.yml +0 -0
  367. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/.vscode/launch.json +0 -0
  368. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/.vscode/settings.json +0 -0
  369. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/LICENSE.txt +0 -0
  370. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/MANIFEST.in +0 -0
  371. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/Makefile +0 -0
  372. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/README.rst +0 -0
  373. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/azure-pipelines.yml +0 -0
  374. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/__init__.py +0 -0
  375. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/_h5io.py +0 -0
  376. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/_version.py +0 -0
  377. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  378. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  379. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/tests/__init__.py +0 -0
  380. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/tests/test_chunked_array.py +0 -0
  381. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/tests/test_chunked_list.py +0 -0
  382. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/h5io/tests/test_io.py +0 -0
  383. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/setup.cfg +0 -0
  384. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/setup.py +0 -0
  385. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/h5io/versioneer.py +0 -0
  386. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/__init__.py +0 -0
  387. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/__init__.pyi +0 -0
  388. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  389. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  390. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/py.typed +0 -0
  391. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  392. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  393. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/external/py.typed +0 -0
  394. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/__init__.py +0 -0
  395. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/__init__.pyi +0 -0
  396. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/base.py +0 -0
  397. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/brainprint.py +0 -0
  398. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/__init__.py +0 -0
  399. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/__init__.pyi +0 -0
  400. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/complexity_base.py +0 -0
  401. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/hurst_exponent.py +0 -0
  402. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  403. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/perm_entropy.py +0 -0
  404. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/py.typed +0 -0
  405. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/range_entropy.py +0 -0
  406. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  407. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/sample_entropy.py +0 -0
  408. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  409. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  410. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  411. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  412. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  413. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  414. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  415. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  416. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  417. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/ets_rss.py +0 -0
  418. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/__init__.py +0 -0
  419. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/__init__.pyi +0 -0
  420. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/_afni_falff.py +0 -0
  421. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/_junifer_falff.py +0 -0
  422. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/falff_base.py +0 -0
  423. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/falff_maps.py +0 -0
  424. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/falff_parcels.py +0 -0
  425. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/falff_spheres.py +0 -0
  426. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/py.typed +0 -0
  427. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/tests/test_falff_maps.py +0 -0
  428. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  429. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  430. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/__init__.py +0 -0
  431. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/__init__.pyi +0 -0
  432. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  433. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/edge_functional_connectivity_maps.py +0 -0
  434. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  435. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  436. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  437. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/functional_connectivity_maps.py +0 -0
  438. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  439. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  440. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/py.typed +0 -0
  441. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  442. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_maps.py +0 -0
  443. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  444. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  445. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  446. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_maps.py +0 -0
  447. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  448. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  449. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/maps_aggregation.py +0 -0
  450. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/parcel_aggregation.py +0 -0
  451. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/py.typed +0 -0
  452. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/__init__.py +0 -0
  453. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/__init__.pyi +0 -0
  454. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/_afni_reho.py +0 -0
  455. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/_junifer_reho.py +0 -0
  456. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/py.typed +0 -0
  457. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/reho_base.py +0 -0
  458. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/reho_maps.py +0 -0
  459. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/reho_parcels.py +0 -0
  460. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/reho_spheres.py +0 -0
  461. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/tests/test_junifer_reho.py +0 -0
  462. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/tests/test_reho_maps.py +0 -0
  463. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  464. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  465. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/sphere_aggregation.py +0 -0
  466. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/__init__.py +0 -0
  467. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/__init__.pyi +0 -0
  468. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/py.typed +0 -0
  469. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  470. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/temporal_snr_maps.py +0 -0
  471. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  472. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  473. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  474. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/tests/test_temporal_snr_maps.py +0 -0
  475. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  476. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  477. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_brainprint.py +0 -0
  478. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_ets_rss.py +0 -0
  479. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_lost_regions.py +0 -0
  480. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_maps_aggregation.py +0 -0
  481. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_marker_utils.py +0 -0
  482. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_markers_base.py +0 -0
  483. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  484. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  485. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/markers/utils.py +0 -0
  486. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/onthefly/__init__.py +0 -0
  487. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/onthefly/__init__.pyi +0 -0
  488. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/onthefly/_brainprint.py +0 -0
  489. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/onthefly/py.typed +0 -0
  490. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/onthefly/read_transform.py +0 -0
  491. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/onthefly/tests/test_read_transform.py +0 -0
  492. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/__init__.py +0 -0
  493. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/__init__.pyi +0 -0
  494. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/_data_object_dumper.py +0 -0
  495. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/marker_collection.py +0 -0
  496. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/pipeline_component_registry.py +0 -0
  497. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  498. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/py.typed +0 -0
  499. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/tests/test_data_object_dumper.py +0 -0
  500. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/tests/test_marker_collection.py +0 -0
  501. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/tests/test_pipeline_component_registry.py +0 -0
  502. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  503. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  504. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/update_meta_mixin.py +0 -0
  505. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/pipeline/utils.py +0 -0
  506. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/__init__.py +0 -0
  507. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/__init__.pyi +0 -0
  508. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/_temporal_filter.py +0 -0
  509. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/_temporal_slicer.py +0 -0
  510. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/base.py +0 -0
  511. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/confounds/__init__.py +0 -0
  512. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/confounds/__init__.pyi +0 -0
  513. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  514. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/confounds/py.typed +0 -0
  515. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  516. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/py.typed +0 -0
  517. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/__init__.py +0 -0
  518. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/__init__.pyi +0 -0
  519. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  520. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  521. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  522. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/py.typed +0 -0
  523. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/smoothing.py +0 -0
  524. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  525. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  526. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/tests/test_temporal_filter.py +0 -0
  527. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/tests/test_temporal_slicer.py +0 -0
  528. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/__init__.py +0 -0
  529. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/__init__.pyi +0 -0
  530. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/_ants_warper.py +0 -0
  531. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  532. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/py.typed +0 -0
  533. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/space_warper.py +0 -0
  534. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  535. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/py.typed +0 -0
  536. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/stats.py +0 -0
  537. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/__init__.py +0 -0
  538. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/__init__.pyi +0 -0
  539. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/base.py +0 -0
  540. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/hdf5.py +0 -0
  541. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/pandas_base.py +0 -0
  542. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/py.typed +0 -0
  543. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/sqlite.py +0 -0
  544. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/tests/test_hdf5.py +0 -0
  545. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/tests/test_pandas_base.py +0 -0
  546. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/tests/test_sqlite.py +0 -0
  547. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/tests/test_storage_base.py +0 -0
  548. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/tests/test_utils.py +0 -0
  549. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/storage/utils.py +0 -0
  550. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/__init__.py +0 -0
  551. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/__init__.pyi +0 -0
  552. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  553. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/datagrabbers.py +0 -0
  554. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/py.typed +0 -0
  555. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/registry.py +0 -0
  556. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_adhdtesting_datagrabber.py +0 -0
  557. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  558. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  559. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  560. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_testing_registry.py +0 -0
  561. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_testing_utils.py +0 -0
  562. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/tests/test_uclacnpvbmtesting_datagrabber.py +0 -0
  563. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/testing/utils.py +0 -0
  564. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/tests/test_main.py +0 -0
  565. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/tests/test_stats.py +0 -0
  566. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/typing/__init__.py +0 -0
  567. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/typing/__init__.pyi +0 -0
  568. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/typing/_typing.py +0 -0
  569. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/typing/py.typed +0 -0
  570. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/__init__.py +0 -0
  571. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/__init__.pyi +0 -0
  572. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/_config.py +0 -0
  573. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/_yaml.py +0 -0
  574. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/fs.py +0 -0
  575. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/helpers.py +0 -0
  576. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/logging.py +0 -0
  577. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/py.typed +0 -0
  578. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/singleton.py +0 -0
  579. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/tests/test_config.py +0 -0
  580. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/tests/test_fs.py +0 -0
  581. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/tests/test_helpers.py +0 -0
  582. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer/utils/tests/test_logging.py +0 -0
  583. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/dependency_links.txt +0 -0
  584. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/entry_points.txt +0 -0
  585. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/requires.txt +0 -0
  586. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/junifer.egg-info/top_level.txt +0 -0
  587. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/justfile +0 -0
  588. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/pyproject.toml +0 -0
  589. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/scripts/start.sh +0 -0
  590. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/setup.cfg +0 -0
  591. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/setup.py +0 -0
  592. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_aomic1000_example_dataset.py +0 -0
  593. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_aomicpiop1_example_dataset.py +0 -0
  594. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_aomicpiop2_example_dataset.py +0 -0
  595. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_bids_example_dataset.py +0 -0
  596. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_bids_example_dataset_sessions.py +0 -0
  597. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  598. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tools/create_hcp1200_example_dataset.py +0 -0
  599. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/tox.ini +0 -0
  600. {junifer-0.0.8.dev298 → junifer-0.0.8.dev303}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.8.dev298
3
+ Version: 0.0.8.dev303
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
+ Set up the working directory first in all the commands of the CLI (from ``workdir`` in the YAML) and in :func:`.run`, :func:`.collect`, :func:`.queue`, :func:`.reset` and :func:`.list_elements`, adding the ``workdir`` parameter to :func:`.collect` and :func:`.list_elements`, and create the working directory if it does not exist by `Synchon Mandal`_ and `Fede Raimondo`_
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.0.8.dev298'
22
- __version_tuple__ = version_tuple = (0, 0, 8, 'dev298')
21
+ __version__ = version = '0.0.8.dev303'
22
+ __version_tuple__ = version_tuple = (0, 0, 8, 'dev303')
23
23
 
24
- __commit_id__ = commit_id = 'g30ddf7410'
24
+ __commit_id__ = commit_id = 'g4a74bdf26'
@@ -136,6 +136,45 @@ def _get_storage(storage_config: dict) -> StorageLike:
136
136
  )
137
137
 
138
138
 
139
+ def _get_workdir_params(workdir: str | Path | dict | None) -> dict:
140
+ """Get the parameters of the working directory manager.
141
+
142
+ Parameters
143
+ ----------
144
+ workdir : str or pathlib.Path or dict or None
145
+ The working directory as a path, or as a dictionary with the keys
146
+ ``path`` and ``cleanup`` (default True). If None, the default of
147
+ :class:`.WorkDirManager` is used.
148
+
149
+ Returns
150
+ -------
151
+ dict
152
+ The parameters for :class:`.WorkDirManager`.
153
+
154
+ """
155
+ if isinstance(workdir, dict):
156
+ return {
157
+ "workdir": Path(workdir["path"]),
158
+ "cleanup": workdir.get("cleanup", True),
159
+ }
160
+ if workdir is None:
161
+ return {"workdir": None, "cleanup": True}
162
+ return {"workdir": Path(workdir), "cleanup": True}
163
+
164
+
165
+ def _setup_workdir(workdir: str | Path | dict | None) -> None:
166
+ """Set up the working directory manager.
167
+
168
+ Parameters
169
+ ----------
170
+ workdir : str or pathlib.Path or dict or None
171
+ The working directory (see :func:`_get_workdir_params`).
172
+
173
+ """
174
+ WorkDirManager(**_get_workdir_params(workdir))
175
+ atexit.register(WorkDirManager()._cleanup)
176
+
177
+
139
178
  def run(
140
179
  workdir: str | Path | dict,
141
180
  datagrabber: dict,
@@ -180,25 +219,15 @@ def run(
180
219
  If invalid element selectors are found.
181
220
 
182
221
  """
183
- # Conditional to handle workdir config
184
- if isinstance(workdir, str | Path):
185
- if isinstance(workdir, str):
186
- workdir = {"workdir": Path(workdir), "cleanup": True}
187
- else:
188
- workdir = {"workdir": workdir, "cleanup": True}
189
- elif isinstance(workdir, dict):
190
- workdir["workdir"] = workdir.pop("path")
191
-
192
222
  # Initiate working directory manager with correct variation
193
- if not workdir["cleanup"]:
223
+ if not _get_workdir_params(workdir)["cleanup"]:
194
224
  if elements is None or len(elements) > 1:
195
225
  raise_error(
196
226
  "Cannot disable `workdir.cleanup` as "
197
227
  f"{len(elements) if elements is not None else 'all'} "
198
228
  "elements will be processed"
199
229
  )
200
- WorkDirManager(**workdir)
201
- atexit.register(WorkDirManager()._cleanup)
230
+ _setup_workdir(workdir)
202
231
 
203
232
  # Get datagrabber to use
204
233
  datagrabber_object = _get_datagrabber(datagrabber.copy())
@@ -253,7 +282,7 @@ def run(
253
282
  mc.fit(datagrabber_object[t_element])
254
283
 
255
284
 
256
- def collect(storage: dict) -> None:
285
+ def collect(storage: dict, workdir: str | Path | dict | None = None) -> None:
257
286
  """Collect and store data.
258
287
 
259
288
  Parameters
@@ -262,8 +291,12 @@ def collect(storage: dict) -> None:
262
291
  Storage to use. Must have a key ``kind`` with the kind of
263
292
  storage to use. All other keys are passed to the storage
264
293
  constructor.
294
+ workdir : str or pathlib.Path or dict or None, optional
295
+ The working directory, as in :func:`.run`. If None, the default of
296
+ :class:`.WorkDirManager` is used (default None).
265
297
 
266
298
  """
299
+ _setup_workdir(workdir)
267
300
  logger.info(f"Collecting data using {storage['kind']}")
268
301
  logger.debug(f"\tStorage params: {storage}")
269
302
  if "single_output" not in storage:
@@ -307,6 +340,7 @@ def queue(
307
340
  if the ``jobdir`` exists and ``overwrite = False``.
308
341
 
309
342
  """
343
+ _setup_workdir(config.get("workdir"))
310
344
  valid_kind = ["HTCondor", "GNUParallelLocal"]
311
345
  if kind not in valid_kind:
312
346
  raise_error(
@@ -410,6 +444,7 @@ def reset(config: dict) -> None:
410
444
  The configuration to be used for resetting.
411
445
 
412
446
  """
447
+ _setup_workdir(config.get("workdir"))
413
448
  # Fetch storage
414
449
  storage = config["storage"]
415
450
  storage_uri = Path(storage["uri"])
@@ -442,6 +477,7 @@ def reset(config: dict) -> None:
442
477
  def list_elements(
443
478
  datagrabber: dict,
444
479
  elements: Elements | None = None,
480
+ workdir: str | Path | dict | None = None,
445
481
  ) -> str:
446
482
  """List elements of the datagrabber filtered using `elements`.
447
483
 
@@ -454,8 +490,13 @@ def list_elements(
454
490
  elements : list or None, optional
455
491
  Element(s) to filter using. Will be used to index the DataGrabber
456
492
  (default None).
493
+ workdir : str or pathlib.Path or dict or None, optional
494
+ Directory where the DataGrabber will be used, as in :func:`.run`.
495
+ If None, the default of :class:`.WorkDirManager` is used
496
+ (default None).
457
497
 
458
498
  """
499
+ _setup_workdir(workdir)
459
500
  # Get datagrabber to use
460
501
  datagrabber_object = _get_datagrabber(datagrabber)
461
502
 
@@ -7,6 +7,7 @@
7
7
 
8
8
  import logging
9
9
  import sys
10
+ import tempfile
10
11
  from contextlib import AbstractContextManager, nullcontext
11
12
  from pathlib import Path
12
13
  from typing import Any
@@ -18,7 +19,7 @@ from ruamel.yaml import YAML
18
19
  import junifer.testing.registry # noqa: F401
19
20
  from junifer.api import collect, list_elements, parse_yaml, queue, reset, run
20
21
  from junifer.datagrabber.base import BaseDataGrabber
21
- from junifer.pipeline import PipelineComponentRegistry
22
+ from junifer.pipeline import PipelineComponentRegistry, WorkDirManager
22
23
  from junifer.typing import Elements
23
24
 
24
25
 
@@ -639,6 +640,143 @@ def test_queue_without_elements(
639
640
  assert "Queue done" in caplog.text
640
641
 
641
642
 
643
+ def _workdir(tmp_path: Path, as_dict: bool) -> tuple[str | dict, Path]:
644
+ """Get a working directory in the test directory.
645
+
646
+ Parameters
647
+ ----------
648
+ tmp_path : pathlib.Path
649
+ The path to the test directory.
650
+ as_dict : bool
651
+ Whether to give the working directory as a dictionary or a path.
652
+
653
+ Returns
654
+ -------
655
+ str or dict
656
+ The working directory, as given to the functions.
657
+ pathlib.Path
658
+ The path to the working directory.
659
+
660
+ """
661
+ path = tmp_path / "workdir"
662
+ workdir = {"path": str(path), "cleanup": True} if as_dict else str(path)
663
+ return workdir, path
664
+
665
+
666
+ @pytest.mark.parametrize("as_dict", [False, True])
667
+ @pytest.mark.parametrize("elements", [None, ["sub-01"]])
668
+ def test_queue_workdir(
669
+ tmp_path: Path,
670
+ monkeypatch: pytest.MonkeyPatch,
671
+ datagrabber: dict[str, str],
672
+ elements: list[str] | None,
673
+ as_dict: bool,
674
+ ) -> None:
675
+ """Test queue sets up the working directory.
676
+
677
+ Parameters
678
+ ----------
679
+ tmp_path : pathlib.Path
680
+ The path to the test directory.
681
+ monkeypatch : pytest.MonkeyPatch
682
+ The pytest.MonkeyPatch object.
683
+ datagrabber : dict
684
+ Testing datagrabber as dictionary.
685
+ elements : list of str or None
686
+ The parametrized elements to queue. If None, the elements are
687
+ listed using the datagrabber.
688
+ as_dict : bool
689
+ Whether to give the working directory as a dictionary or a path.
690
+
691
+ """
692
+ workdir, path = _workdir(tmp_path, as_dict)
693
+ with monkeypatch.context() as m:
694
+ m.chdir(tmp_path)
695
+ queue(
696
+ config={"workdir": workdir, "datagrabber": datagrabber},
697
+ kind="HTCondor",
698
+ elements=elements,
699
+ )
700
+ assert WorkDirManager().workdir == path
701
+ assert path.is_dir()
702
+ # The working directory is written to the job configuration as given
703
+ config = YAML().load(tmp_path / "junifer_jobs/junifer_job/config.yaml")
704
+ assert config["workdir"] == workdir
705
+
706
+
707
+ def test_queue_workdir_cleanup(
708
+ tmp_path: Path,
709
+ monkeypatch: pytest.MonkeyPatch,
710
+ datagrabber: dict[str, str],
711
+ ) -> None:
712
+ """Test queued jobs clean up the working directory.
713
+
714
+ Disabling the cleanup only applies to queueing (e.g. to debug it), as
715
+ the jobs would otherwise leave the files of each element.
716
+
717
+ Parameters
718
+ ----------
719
+ tmp_path : pathlib.Path
720
+ The path to the test directory.
721
+ monkeypatch : pytest.MonkeyPatch
722
+ The pytest.MonkeyPatch object.
723
+ datagrabber : dict
724
+ Testing datagrabber as dictionary.
725
+
726
+ """
727
+ workdir = {"path": str(tmp_path / "workdir"), "cleanup": False}
728
+ with monkeypatch.context() as m:
729
+ m.chdir(tmp_path)
730
+ with pytest.warns(RuntimeWarning, match="will be set to True"):
731
+ queue(
732
+ config={"workdir": workdir, "datagrabber": datagrabber},
733
+ kind="HTCondor",
734
+ )
735
+ # Queueing does not clean up
736
+ assert WorkDirManager()._cleanup_dirs is False
737
+ # The jobs clean up
738
+ config = YAML().load(tmp_path / "junifer_jobs/junifer_job/config.yaml")
739
+ assert config["workdir"]["cleanup"] is True
740
+
741
+
742
+ @pytest.mark.parametrize("as_dict", [False, True])
743
+ def test_collect_workdir(tmp_path: Path, as_dict: bool) -> None:
744
+ """Test collect sets up the working directory.
745
+
746
+ Parameters
747
+ ----------
748
+ tmp_path : pathlib.Path
749
+ The path to the test directory.
750
+ as_dict : bool
751
+ Whether to give the working directory as a dictionary or a path.
752
+
753
+ """
754
+ workdir, path = _workdir(tmp_path, as_dict)
755
+ storage = {"kind": "HDF5FeatureStorage", "uri": str(tmp_path / "out.hdf5")}
756
+ collect(storage, workdir=workdir)
757
+ assert WorkDirManager().workdir == path
758
+ assert path.is_dir()
759
+
760
+
761
+ @pytest.mark.parametrize("as_dict", [False, True])
762
+ def test_reset_workdir(tmp_path: Path, as_dict: bool) -> None:
763
+ """Test reset sets up the working directory.
764
+
765
+ Parameters
766
+ ----------
767
+ tmp_path : pathlib.Path
768
+ The path to the test directory.
769
+ as_dict : bool
770
+ Whether to give the working directory as a dictionary or a path.
771
+
772
+ """
773
+ workdir, path = _workdir(tmp_path, as_dict)
774
+ storage = {"uri": str(tmp_path / "out.hdf5")}
775
+ reset(config={"workdir": workdir, "storage": storage})
776
+ assert WorkDirManager().workdir == path
777
+ assert path.is_dir()
778
+
779
+
642
780
  def test_reset_run(
643
781
  tmp_path: Path,
644
782
  datagrabber: dict[str, str],
@@ -769,6 +907,40 @@ def test_list_elements(
769
907
  assert "sub-01" in listed_elements
770
908
 
771
909
 
910
+ @pytest.mark.parametrize("as_dict", [False, True, None])
911
+ def test_list_elements_workdir(
912
+ tmp_path: Path,
913
+ monkeypatch: pytest.MonkeyPatch,
914
+ datagrabber: dict[str, str],
915
+ as_dict: bool | None,
916
+ ) -> None:
917
+ """Test elements listing sets up the working directory.
918
+
919
+ Parameters
920
+ ----------
921
+ tmp_path : pathlib.Path
922
+ The path to the test directory.
923
+ monkeypatch : pytest.MonkeyPatch
924
+ The pytest.MonkeyPatch object.
925
+ datagrabber : dict
926
+ Testing datagrabber as dictionary.
927
+ as_dict : bool or None
928
+ Whether to give the working directory as a dictionary or a path.
929
+ If None, no working directory is given and the default is used.
930
+
931
+ """
932
+ if as_dict is None:
933
+ # The default working directory is in the temporary directory
934
+ monkeypatch.setattr(tempfile, "tempdir", str(tmp_path))
935
+ workdir, path = None, tmp_path / "junifer"
936
+ else:
937
+ workdir, path = _workdir(tmp_path, as_dict)
938
+ listed_elements = list_elements(datagrabber, workdir=workdir)
939
+ assert "sub-01" in listed_elements
940
+ assert WorkDirManager().workdir == path
941
+ assert path.is_dir()
942
+
943
+
772
944
  def test_parse_yaml_failure() -> None:
773
945
  """Test YAML parsing failure."""
774
946
  with pytest.raises(ValueError, match="does not exist"):
@@ -44,6 +44,28 @@ __all__ = [
44
44
  ]
45
45
 
46
46
 
47
+ def _parse_yaml(filepath: click.Path) -> dict:
48
+ """Parse the YAML file and set up the working directory.
49
+
50
+ The working directory is set up before anything else, as all the
51
+ components assume it is available.
52
+
53
+ Parameters
54
+ ----------
55
+ filepath : click.Path
56
+ The filepath to the configuration file.
57
+
58
+ Returns
59
+ -------
60
+ dict
61
+ The configuration.
62
+
63
+ """
64
+ config = cli_func.parse_yaml(filepath) # type: ignore
65
+ cli_func._setup_workdir(config.get("workdir"))
66
+ return config
67
+
68
+
47
69
  def _validate_optional_verbose(
48
70
  ctx: click.Context, param: str, value: str | None
49
71
  ):
@@ -162,7 +184,7 @@ def run(
162
184
  configure_logging(level=verbose, level_datalad=verbose_datalad)
163
185
  # TODO(synchon): add validation
164
186
  # Parse YAML
165
- config = cli_func.parse_yaml(filepath)
187
+ config = _parse_yaml(filepath)
166
188
  # Retrieve working directory
167
189
  workdir = config["workdir"]
168
190
  # Fetch datagrabber
@@ -232,7 +254,7 @@ def collect(
232
254
  configure_logging(level=verbose, level_datalad=verbose_datalad)
233
255
  # TODO: add validation
234
256
  # Parse YAML
235
- config = cli_func.parse_yaml(filepath)
257
+ config = _parse_yaml(filepath)
236
258
  # Fetch storage
237
259
  storage = config["storage"]
238
260
  # Perform operation
@@ -299,7 +321,7 @@ def queue(
299
321
  configure_logging(level=verbose, level_datalad=verbose_datalad)
300
322
  # TODO: add validation
301
323
  # Parse YAML
302
- config = cli_func.parse_yaml(filepath) # type: ignore
324
+ config = _parse_yaml(filepath)
303
325
  # Check queue section
304
326
  if "queue" not in config:
305
327
  raise_error(f"No queue configuration found in {filepath}.")
@@ -450,7 +472,7 @@ def reset(
450
472
  # Setup logging
451
473
  configure_logging(level=verbose, level_datalad=verbose_datalad)
452
474
  # Parse YAML
453
- config = cli_func.parse_yaml(filepath)
475
+ config = _parse_yaml(filepath)
454
476
  # Perform operation
455
477
  cli_func.reset(config)
456
478
 
@@ -510,7 +532,7 @@ def list_elements(
510
532
  # Setup logging
511
533
  configure_logging(level=verbose, level_datalad=verbose_datalad)
512
534
  # Parse YAML
513
- config = cli_func.parse_yaml(filepath)
535
+ config = _parse_yaml(filepath)
514
536
  # Fetch datagrabber
515
537
  datagrabber = config["datagrabber"]
516
538
  # Parse elements
@@ -4,6 +4,7 @@
4
4
  # Synchon Mandal <s.mandal@fz-juelich.de>
5
5
  # License: AGPL
6
6
 
7
+ import tempfile
7
8
  from collections.abc import Callable
8
9
  from pathlib import Path
9
10
 
@@ -12,6 +13,7 @@ from click.testing import CliRunner
12
13
  from ruamel.yaml import YAML
13
14
 
14
15
  from junifer.cli.cli import (
16
+ _parse_yaml,
15
17
  collect,
16
18
  list_elements,
17
19
  queue,
@@ -21,6 +23,7 @@ from junifer.cli.cli import (
21
23
  wtf,
22
24
  )
23
25
  from junifer.cli.parser import _parse_elements_file
26
+ from junifer.pipeline import WorkDirManager
24
27
 
25
28
 
26
29
  pytestmark = pytest.mark.external
@@ -383,6 +386,75 @@ def test_list_elements_output_file(
383
386
  assert f"{elements[0]}\n{elements[1]}" == f.read()
384
387
 
385
388
 
389
+ @pytest.mark.parametrize(
390
+ "workdir, expected",
391
+ [
392
+ ("workdir", "workdir"),
393
+ ({"path": "workdir", "cleanup": False}, "workdir"),
394
+ (None, "junifer"),
395
+ ],
396
+ ids=["path", "dict", "default"],
397
+ )
398
+ def test_parse_yaml_workdir(
399
+ tmp_path: Path,
400
+ monkeypatch: pytest.MonkeyPatch,
401
+ workdir: str | dict | None,
402
+ expected: str,
403
+ ) -> None:
404
+ """Test the working directory is set up when parsing the YAML.
405
+
406
+ Parameters
407
+ ----------
408
+ tmp_path : pathlib.Path
409
+ The path to the test directory.
410
+ monkeypatch : pytest.MonkeyPatch
411
+ The pytest.MonkeyPatch object.
412
+ workdir : str or dict or None
413
+ The parametrized working directory in the YAML. If None, the YAML
414
+ has no working directory.
415
+ expected : str
416
+ The parametrized working directory set up, relative to ``tmp_path``.
417
+
418
+ """
419
+ # Use the test directory for relative paths and as temporary directory,
420
+ # where the default working directory is
421
+ monkeypatch.chdir(tmp_path)
422
+ monkeypatch.setattr(tempfile, "tempdir", str(tmp_path))
423
+ contents = {"datagrabber": {"kind": "PartlyCloudyTestingDataGrabber"}}
424
+ if workdir is not None:
425
+ contents["workdir"] = workdir
426
+ yaml.dump(contents, stream=tmp_path / "in.yaml")
427
+ # The configuration is not changed
428
+ assert _parse_yaml(tmp_path / "in.yaml") == contents # type: ignore
429
+ assert WorkDirManager().workdir.resolve() == tmp_path / expected
430
+ assert (tmp_path / expected).is_dir()
431
+
432
+
433
+ def test_list_elements_workdir(tmp_path: Path) -> None:
434
+ """Test elements listing in the working directory of the YAML.
435
+
436
+ Parameters
437
+ ----------
438
+ tmp_path : pathlib.Path
439
+ The path to the test directory.
440
+
441
+ """
442
+ # Get test config
443
+ infile = Path(__file__).parent / "data" / "partly_cloudy_agg_mean_tian.yml"
444
+ contents = yaml.load(infile)
445
+ # Working directory
446
+ workdir = tmp_path / "workdir"
447
+ contents["workdir"] = str(workdir)
448
+ # Write new test config
449
+ outfile = tmp_path / "in.yaml"
450
+ yaml.dump(contents, stream=outfile)
451
+ # Invoke list elements command
452
+ list_elements_result = runner.invoke(list_elements, [str(outfile)])
453
+ # Check
454
+ assert list_elements_result.exit_code == 0
455
+ assert WorkDirManager().workdir == workdir
456
+
457
+
386
458
  def test_wtf_short() -> None:
387
459
  """Test short version of wtf command."""
388
460
  # Invoke wtf command
@@ -29,6 +29,21 @@ def test_workdir_manager_workdir(tmp_path: Path) -> None:
29
29
  assert workdir_mgr.workdir == tmp_path
30
30
 
31
31
 
32
+ def test_workdir_manager_create_workdir(tmp_path: Path) -> None:
33
+ """Test WorkDirManager creates the workdir if it does not exist.
34
+
35
+ Parameters
36
+ ----------
37
+ tmp_path : pathlib.Path
38
+ The path to the test directory.
39
+
40
+ """
41
+ workdir = tmp_path / "new" / "workdir"
42
+ workdir_mgr = WorkDirManager(workdir=workdir)
43
+ assert workdir_mgr.workdir == workdir
44
+ assert workdir.is_dir()
45
+
46
+
32
47
  def test_workdir_manager_get_and_delete_element_tempdir(
33
48
  tmp_path: Path,
34
49
  ) -> None:
@@ -63,16 +63,16 @@ class WorkDirManager(metaclass=Singleton):
63
63
  # Check and set topmost level directory if not provided
64
64
  if self._workdir is None:
65
65
  self._workdir = Path(tempfile.gettempdir()) / "junifer"
66
- # Create directory if not found
67
- if not self._workdir.is_dir():
68
- logger.debug(
69
- "Creating working directory at "
70
- f"{self._workdir.resolve()!s}"
71
- )
72
- self._workdir.mkdir(parents=True)
66
+
67
+ # Create directory if not found
68
+ if not self._workdir.is_dir():
73
69
  logger.debug(
74
- f"Setting working directory to {self._workdir.resolve()!s}"
70
+ f"Creating working directory at {self._workdir.resolve()!s}"
75
71
  )
72
+ self._workdir.mkdir(parents=True)
73
+ logger.debug(
74
+ f"Setting working directory to {self._workdir.resolve()!s}"
75
+ )
76
76
 
77
77
  def _cleanup(self) -> None:
78
78
  """Clean up the element and temporary directories."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: junifer
3
- Version: 0.0.8.dev298
3
+ Version: 0.0.8.dev303
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>
@@ -76,6 +76,7 @@ docs/changes/newsfragments/492.bugfix
76
76
  docs/changes/newsfragments/499.enh
77
77
  docs/changes/newsfragments/502.bugfix
78
78
  docs/changes/newsfragments/503.enh
79
+ docs/changes/newsfragments/509.enh
79
80
  docs/changes/newsfragments/510.bugfix
80
81
  docs/changes/newsfragments/511.bugfix
81
82
  docs/changes/newsfragments/511.bugfix.1
@@ -61,6 +61,7 @@
61
61
  "docs/changes/newsfragments/499.enh",
62
62
  "docs/changes/newsfragments/502.bugfix",
63
63
  "docs/changes/newsfragments/503.enh",
64
+ "docs/changes/newsfragments/509.enh",
64
65
  "docs/changes/newsfragments/510.bugfix",
65
66
  "docs/changes/newsfragments/511.bugfix",
66
67
  "docs/changes/newsfragments/511.bugfix.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "tag": "0.0.7",
3
- "distance": 298,
4
- "node": "g30ddf7410414faec3138ccbac70a8890ff609537",
3
+ "distance": 303,
4
+ "node": "g4a74bdf26b428460a90404d6c0246318c1f95723",
5
5
  "dirty": false,
6
6
  "branch": "main",
7
7
  "node_date": "2026-10-09"