julearn 0.3.6.dev33__tar.gz → 0.3.6.dev42__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 (261) hide show
  1. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/ci.yml +10 -3
  2. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/docs-preview.yml +10 -5
  3. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/docs.yml +13 -6
  4. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/lint.yml +7 -5
  5. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/PKG-INFO +17 -18
  6. julearn-0.3.6.dev42/docs/Makefile +44 -0
  7. julearn-0.3.6.dev42/docs/_static/css/version_selector.css +126 -0
  8. julearn-0.3.6.dev42/docs/_templates/versions.html +11 -0
  9. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/conf.py +71 -45
  10. julearn-0.3.6.dev42/docs/poly.py +612 -0
  11. julearn-0.3.6.dev42/docs/poly_files/patches/version_banner.html +24 -0
  12. julearn-0.3.6.dev42/docs/poly_files/patches/version_banner_rtd.html +5 -0
  13. julearn-0.3.6.dev42/docs/poly_files/patches/versions.html +35 -0
  14. julearn-0.3.6.dev33/docs/_templates/versions.html → julearn-0.3.6.dev42/docs/poly_files/patches/versions_rtd.html +2 -2
  15. julearn-0.3.6.dev42/docs/poly_files/templates/index.html +12 -0
  16. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/_version.py +3 -3
  17. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn.egg-info/PKG-INFO +17 -18
  18. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn.egg-info/SOURCES.txt +7 -0
  19. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn.egg-info/requires.txt +13 -13
  20. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/pyproject.toml +10 -9
  21. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/uv.lock +71 -313
  22. julearn-0.3.6.dev33/docs/Makefile +0 -52
  23. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  24. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  25. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/ISSUE_TEMPLATE/documentation_request.yaml +0 -0
  26. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  27. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/dependabot.yml +0 -0
  28. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/check-stale.yml +0 -0
  29. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/ci-docs.yml +0 -0
  30. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.github/workflows/publish.yml +0 -0
  31. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.gitignore +0 -0
  32. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/.pre-commit-config.yaml +0 -0
  33. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/AUTHORS.rst +0 -0
  34. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/LICENSE.md +0 -0
  35. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/README.md +0 -0
  36. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/codecov.yml +0 -0
  37. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_static/css/custom.css +0 -0
  38. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_static/js/custom.js +0 -0
  39. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_templates/class.rst +0 -0
  40. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_templates/function.rst +0 -0
  41. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_templates/function_warning.rst +0 -0
  42. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_templates/protocol.rst +0 -0
  43. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/_templates/type.rst +0 -0
  44. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/base.rst +0 -0
  45. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/config.rst +0 -0
  46. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/index.rst +0 -0
  47. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/inspect.rst +0 -0
  48. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/main.rst +0 -0
  49. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/model_selection.rst +0 -0
  50. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/models.rst +0 -0
  51. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/pipeline.rst +0 -0
  52. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/prepare.rst +0 -0
  53. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/scoring.rst +0 -0
  54. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/stats.rst +0 -0
  55. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/transformers.rst +0 -0
  56. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/utils.rst +0 -0
  57. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/api/viz.rst +0 -0
  58. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/available_pipeline_steps.rst +0 -0
  59. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/changes/contributors.inc +0 -0
  60. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/changes/newsfragments/.gitignore +0 -0
  61. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/changes/newsfragments/301.misc +0 -0
  62. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/changes/newsfragments/303.feature +0 -0
  63. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/changes/newsfragments/307.bugfix +0 -0
  64. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/changes/newsfragments/307.misc +0 -0
  65. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/configuration.rst +0 -0
  66. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/contributing.rst +0 -0
  67. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/examples.rst +0 -0
  68. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/faq.rst +0 -0
  69. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/getting_started.rst +0 -0
  70. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/corrected_ttest.png +0 -0
  71. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/final_estimator.png +0 -0
  72. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/iris_X.png +0 -0
  73. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/iris_df.png +0 -0
  74. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/iris_y.png +0 -0
  75. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/joblib_htcondor/condor_q.png +0 -0
  76. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/joblib_htcondor/ui_main.png +0 -0
  77. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/joblib_htcondor/ui_open.png +0 -0
  78. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/joblib_htcondor/ui_stacked.png +0 -0
  79. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo.png +0 -0
  80. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_calm.png +0 -0
  81. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_confbias.png +0 -0
  82. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_cv.png +0 -0
  83. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_generalization.png +0 -0
  84. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_it.png +0 -0
  85. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_ml.png +0 -0
  86. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/julearn_logo_mlit.png +0 -0
  87. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/multiple_scorers_run_cv.png +0 -0
  88. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/plot_scores.png +0 -0
  89. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/scores_run_cv.png +0 -0
  90. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/scores_run_cv_splitter.png +0 -0
  91. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/images/scores_run_cv_train.png +0 -0
  92. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/index.rst +0 -0
  93. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/links.inc +0 -0
  94. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/maintaining.rst +0 -0
  95. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/redirect.html +0 -0
  96. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/CBPM.rst +0 -0
  97. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/confound_removal.rst +0 -0
  98. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/cross_validation_splitter.rst +0 -0
  99. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/hyperparameter_tuning.rst +0 -0
  100. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/index.rst +0 -0
  101. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/joblib.rst +0 -0
  102. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/model_inspect.rst +0 -0
  103. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/stacked_models.rst +0 -0
  104. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/selected_deeper_topics/target_transformers.rst +0 -0
  105. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/what_really_need_know/cross_validation.rst +0 -0
  106. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/what_really_need_know/data.rst +0 -0
  107. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/what_really_need_know/index.rst +0 -0
  108. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/what_really_need_know/model_comparison.rst +0 -0
  109. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/what_really_need_know/model_evaluation.rst +0 -0
  110. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/what_really_need_know/pipeline.rst +0 -0
  111. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/docs/whats_new.rst +0 -0
  112. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/README.rst +0 -0
  113. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/plot_cm_acc_multiclass.py +0 -0
  114. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/plot_example_regression.py +0 -0
  115. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/plot_stratified_kfold_reg.py +0 -0
  116. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/run_combine_pandas.py +0 -0
  117. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/run_grouped_cv.py +0 -0
  118. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/00_starting/run_simple_binary_classification.py +0 -0
  119. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/01_model_comparison/README.rst +0 -0
  120. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/01_model_comparison/plot_simple_model_comparison.py +0 -0
  121. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/02_inspection/README.rst +0 -0
  122. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/02_inspection/plot_groupcv_inspect_svm.py +0 -0
  123. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/02_inspection/plot_inspect_random_forest.py +0 -0
  124. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/02_inspection/plot_preprocess.py +0 -0
  125. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/02_inspection/run_binary_inspect_folds.py +0 -0
  126. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/README.rst +0 -0
  127. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_apply_to_target.py +0 -0
  128. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_example_pca_featsets.py +0 -0
  129. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_generate_target.py +0 -0
  130. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_hyperparameter_multiple_grids.py +0 -0
  131. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_hyperparameter_tuning.py +0 -0
  132. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_hyperparameter_tuning_bayessearch.py +0 -0
  133. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/03_complex_models/run_stacked_models.py +0 -0
  134. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/04_confounds/README.rst +0 -0
  135. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/04_confounds/plot_confound_removal_classification.py +0 -0
  136. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/04_confounds/run_return_confounds.py +0 -0
  137. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/05_customization/README.rst +0 -0
  138. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/05_customization/run_custom_scorers_regression.py +0 -0
  139. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/README.rst +0 -0
  140. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_cbpm_docs.py +0 -0
  141. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_confound_removal_docs.py +0 -0
  142. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_cv_splitters_docs.py +0 -0
  143. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_data_docs.py +0 -0
  144. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_hyperparameters_docs.py +0 -0
  145. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_model_comparison_docs.py +0 -0
  146. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_model_evaluation_docs.py +0 -0
  147. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_model_inspection_docs.py +0 -0
  148. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_pipeline_docs.py +0 -0
  149. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_stacked_models_docs.py +0 -0
  150. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/99_docs/run_target_transformer_docs.py +0 -0
  151. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/README.rst +0 -0
  152. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/XX_disabled/dis_run_n_jobs.py +0 -0
  153. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/examples/XX_disabled/dis_run_target_confound_removal.py +0 -0
  154. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/ignore_words.txt +0 -0
  155. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/__init__.py +0 -0
  156. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/api.py +0 -0
  157. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/base/__init__.py +0 -0
  158. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/base/column_types.py +0 -0
  159. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/base/estimators.py +0 -0
  160. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/base/tests/test_base_estimators.py +0 -0
  161. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/base/tests/test_column_types.py +0 -0
  162. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/config.py +0 -0
  163. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/conftest.py +0 -0
  164. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/external/optuna_searchcv.py +0 -0
  165. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/__init__.py +0 -0
  166. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/_cv.py +0 -0
  167. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/_pipeline.py +0 -0
  168. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/_preprocess.py +0 -0
  169. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/inspector.py +0 -0
  170. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/tests/test_cv.py +0 -0
  171. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/tests/test_inspector.py +0 -0
  172. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/tests/test_pipeline.py +0 -0
  173. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/inspect/tests/test_preprocess.py +0 -0
  174. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/__init__.py +0 -0
  175. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/_optuna_searcher.py +0 -0
  176. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/_skopt_searcher.py +0 -0
  177. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/available_searchers.py +0 -0
  178. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/continuous_stratified_kfold.py +0 -0
  179. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/final_model_cv.py +0 -0
  180. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/stratified_bootstrap.py +0 -0
  181. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/tests/test_available_searchers.py +0 -0
  182. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/tests/test_continous_stratified_kfold.py +0 -0
  183. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/tests/test_final_model_cv.py +0 -0
  184. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/tests/test_optuna_searcher.py +0 -0
  185. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/tests/test_skopt_searcher.py +0 -0
  186. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/tests/test_stratified_bootstrap.py +0 -0
  187. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/model_selection/utils.py +0 -0
  188. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/models/__init__.py +0 -0
  189. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/models/available_models.py +0 -0
  190. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/models/dynamic.py +0 -0
  191. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/models/tests/test_available_models.py +0 -0
  192. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/models/tests/test_dynamic.py +0 -0
  193. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/models/tests/test_models.py +0 -0
  194. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/__init__.py +0 -0
  195. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/merger.py +0 -0
  196. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/pipeline_creator.py +0 -0
  197. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/target_pipeline.py +0 -0
  198. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/target_pipeline_creator.py +0 -0
  199. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/tests/test_merger.py +0 -0
  200. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/tests/test_pipeline_creator.py +0 -0
  201. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/tests/test_target_pipeline.py +0 -0
  202. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/pipeline/tests/test_target_pipeline_creator.py +0 -0
  203. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/prepare.py +0 -0
  204. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/scoring/__init__.py +0 -0
  205. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/scoring/available_scorers.py +0 -0
  206. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/scoring/metrics.py +0 -0
  207. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/scoring/tests/test_available_scorers.py +0 -0
  208. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/scoring/tests/test_metrics.py +0 -0
  209. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/stats/__init__.py +0 -0
  210. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/stats/corrected_ttest.py +0 -0
  211. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/stats/tests/test_corrected_ttest.py +0 -0
  212. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/tests/test_api.py +0 -0
  213. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/tests/test_config.py +0 -0
  214. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/tests/test_prepare.py +0 -0
  215. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/__init__.py +0 -0
  216. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/available_transformers.py +0 -0
  217. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/cbpm.py +0 -0
  218. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/confound_remover.py +0 -0
  219. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/__init__.py +0 -0
  220. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/change_column_types.py +0 -0
  221. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/drop_columns.py +0 -0
  222. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/filter_columns.py +0 -0
  223. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/pick_columns.py +0 -0
  224. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/set_column_types.py +0 -0
  225. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/tests/test_change_column_types.py +0 -0
  226. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/tests/test_drop_columns.py +0 -0
  227. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/tests/test_filter_columns.py +0 -0
  228. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/dataframe/tests/test_set_column_types.py +0 -0
  229. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/ju_column_transformer.py +0 -0
  230. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/__init__.py +0 -0
  231. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/available_target_transformers.py +0 -0
  232. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/ju_generated_target_model.py +0 -0
  233. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/ju_target_transformer.py +0 -0
  234. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/ju_transformed_target_model.py +0 -0
  235. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/target_confound_remover.py +0 -0
  236. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/tests/test_available_target_transformers.py +0 -0
  237. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/tests/test_ju_generated_target_model.py +0 -0
  238. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/tests/test_ju_target_transformer.py +0 -0
  239. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/tests/test_ju_transformed_target_model.py +0 -0
  240. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/target/tests/test_target_confound_remover.py +0 -0
  241. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/tests/test_available_transformers.py +0 -0
  242. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/tests/test_cbpm.py +0 -0
  243. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/tests/test_confounds.py +0 -0
  244. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/transformers/tests/test_jucolumntransformers.py +0 -0
  245. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/__init__.py +0 -0
  246. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/_cv.py +0 -0
  247. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/checks.py +0 -0
  248. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/logging.py +0 -0
  249. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/testing.py +0 -0
  250. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/tests/test_logging.py +0 -0
  251. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/tests/test_version.py +0 -0
  252. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/typing.py +0 -0
  253. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/utils/versions.py +0 -0
  254. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/viz/__init__.py +0 -0
  255. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/viz/_scores.py +0 -0
  256. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn/viz/res/julearn_logo_generalization.png +0 -0
  257. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn.egg-info/dependency_links.txt +0 -0
  258. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/julearn.egg-info/top_level.txt +0 -0
  259. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/setup.cfg +0 -0
  260. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/setup.py +0 -0
  261. {julearn-0.3.6.dev33 → julearn-0.3.6.dev42}/tox.ini +0 -0
@@ -27,16 +27,23 @@ jobs:
27
27
 
28
28
  steps:
29
29
  - uses: actions/checkout@v6
30
+
30
31
  - uses: actions/setup-python@v6
31
32
  with:
32
33
  python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Install uv
36
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
37
+
33
38
  - name: Install Python dependencies
34
39
  run: |
35
- python -m pip install --upgrade pip setuptools wheel
36
- python -m pip install tox tox-gh-actions
40
+ uv sync --locked --extra dev
41
+ uv pip install tox-gh-actions
42
+
37
43
  - name: Test with tox
38
44
  run: |
39
- tox
45
+ uv run tox
46
+
40
47
  - uses: codecov/codecov-action@v6
41
48
  with:
42
49
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -24,15 +24,20 @@ jobs:
24
24
  fetch-depth: 0
25
25
  - uses: actions/setup-python@v6
26
26
  with:
27
- python-version: "3.x"
27
+ python-version-file: "pyproject.toml"
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
31
+
28
32
  - name: Install Python dependencies
29
33
  run: |
30
- python -m pip install --upgrade pip setuptools wheel
31
- python -m pip install -e .[docs,viz]
34
+ uv sync --locked --extra docs
35
+
32
36
  - name: Test build docs
33
37
  run: |
34
- BUILDDIR=_build/main make -C docs/ local
38
+ uv run make -C docs/ local
39
+
35
40
  - uses: rossjrw/pr-preview-action@v1
36
41
  with:
37
- source-dir: docs/_build/main
42
+ source-dir: docs/_build/dev
38
43
  if: github.event_name == 'pull_request'
@@ -18,13 +18,19 @@ jobs:
18
18
  with:
19
19
  # require all of history to see all tagged versions' docs
20
20
  fetch-depth: 0
21
- - uses: actions/setup-python@v6
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v6
22
24
  with:
23
- python-version: "3.x"
25
+ python-version-file: "pyproject.toml"
26
+
27
+ - name: Install uv
28
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
29
+
24
30
  - name: Install Python dependencies
25
31
  run: |
26
- python -m pip install --upgrade pip setuptools wheel
27
- python -m pip install -e .[docs,viz]
32
+ uv sync --locked --extra docs
33
+
28
34
  - name: Checkout gh-pages
29
35
  # As we already did a deploy of gh-pages above, it is guaranteed to be there
30
36
  # so check it out so we can selectively build docs below
@@ -32,10 +38,11 @@ jobs:
32
38
  with:
33
39
  ref: gh-pages
34
40
  path: docs/_build
41
+
35
42
  - name: Build docs
36
- # Use the args we normally pass to sphinx-build, but run sphinx-multiversion
43
+ # Use the args we normally pass to sphinx-build, but run sphinx-polyversion
37
44
  run: |
38
- make -C docs/ html
45
+ uv run make -C docs/ html
39
46
  touch docs/_build/.nojekyll
40
47
  cp docs/redirect.html docs/_build/index.html
41
48
  - uses: peaceiris/actions-gh-pages@v4
@@ -11,12 +11,14 @@ jobs:
11
11
  - uses: actions/checkout@v6
12
12
  - uses: actions/setup-python@v6
13
13
  with:
14
- python-version: "3.x"
14
+ python-version-file: "pyproject.toml"
15
+
16
+ - name: Install uv
17
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
15
18
  - name: Install Python dependencies
16
19
  run: |
17
- python -m pip install --upgrade pip
18
- python -m pip install tox "ruff>=0.1.0"
20
+ uv sync --locked --extra dev
19
21
  - name: Run ruff
20
- run: ruff check --output-format=github .
22
+ run: uv run ruff check --output-format=github .
21
23
  - name: Run codespell
22
- run: tox -e codespell
24
+ run: uv run tox -e codespell
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: julearn
3
- Version: 0.3.6.dev33
3
+ Version: 0.3.6.dev42
4
4
  Summary: Juelich Machine Learning Library
5
5
  Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Sami Hamdan <s.hamdan@fz-juelich.de>
6
6
  Maintainer-email: Sami Hamdan <s.hamdan@fz-juelich.de>
@@ -34,23 +34,20 @@ Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
34
34
  Provides-Extra: dev
35
35
  Requires-Dist: tox; extra == "dev"
36
36
  Requires-Dist: pre-commit; extra == "dev"
37
- Requires-Dist: ruff; extra == "dev"
38
- Requires-Dist: towncrier; extra == "dev"
39
- Provides-Extra: docs
40
- Requires-Dist: furo>=2025.7.19; extra == "docs"
41
- Requires-Dist: numpydoc>=1.9.0; extra == "docs"
42
- Requires-Dist: optuna<5.0.0,>=4.0.0; extra == "docs"
43
- Requires-Dist: optuna-integration<5.0.0,>=4.0.0; extra == "docs"
44
- Requires-Dist: scikit-optimize<0.11.0,>=0.10.2; extra == "docs"
45
- Requires-Dist: seaborn<0.14.0,>=0.13.0; extra == "docs"
46
- Requires-Dist: setuptools-scm<11.0.0,>=10.0.0; extra == "docs"
47
- Requires-Dist: sphinx<10.0.0,>=8.2.3; extra == "docs"
48
- Requires-Dist: sphinx-copybutton>=0.5.2; extra == "docs"
49
- Requires-Dist: sphinx-gallery>=0.21.0; extra == "docs"
50
- Requires-Dist: sphinx-multiversion>=0.2.4; extra == "docs"
51
- Requires-Dist: sphinx-autodoc-typehints>=3.6.1; extra == "docs"
52
- Requires-Dist: sphinxcontrib-towncrier>=0.5.0a0; extra == "docs"
53
- Requires-Dist: towncrier>=25.8.0; extra == "docs"
37
+ Requires-Dist: ruff<0.16.0,>=0.15.14; extra == "dev"
38
+ Requires-Dist: towncrier>=25.8.0; extra == "dev"
39
+ Provides-Extra: sphinx
40
+ Requires-Dist: furo>=2025.7.19; extra == "sphinx"
41
+ Requires-Dist: numpydoc>=1.9.0; extra == "sphinx"
42
+ Requires-Dist: seaborn<0.14.0,>=0.13.0; extra == "sphinx"
43
+ Requires-Dist: setuptools-scm<11.0.0,>=10.0.0; extra == "sphinx"
44
+ Requires-Dist: sphinx<10.0.0,>=8.2.3; extra == "sphinx"
45
+ Requires-Dist: sphinx-copybutton>=0.5.2; extra == "sphinx"
46
+ Requires-Dist: sphinx-gallery>=0.21.0; extra == "sphinx"
47
+ Requires-Dist: sphinx-autodoc-typehints>=3.6.1; extra == "sphinx"
48
+ Requires-Dist: sphinx-polyversion>=2.0.0; extra == "sphinx"
49
+ Requires-Dist: sphinxcontrib-towncrier>=0.5.0a0; extra == "sphinx"
50
+ Requires-Dist: towncrier>=25.8.0; extra == "sphinx"
54
51
  Provides-Extra: deslib
55
52
  Requires-Dist: deslib<0.4.0,>=0.3.5; extra == "deslib"
56
53
  Provides-Extra: viz
@@ -62,6 +59,8 @@ Requires-Dist: scikit-optimize<0.11.0,>=0.10.2; extra == "skopt"
62
59
  Provides-Extra: optuna
63
60
  Requires-Dist: optuna<5.0.0,>=4.0.0; extra == "optuna"
64
61
  Requires-Dist: optuna_integration<5.0.0,>=4.0.0; extra == "optuna"
62
+ Provides-Extra: docs
63
+ Requires-Dist: julearn[optuna,skopt,sphinx,viz]; extra == "docs"
65
64
  Provides-Extra: all
66
65
  Requires-Dist: julearn[optuna,skopt,viz]; extra == "all"
67
66
  Dynamic: license-file
@@ -0,0 +1,44 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXBUILD = sphinx-build
7
+ POLYBUILD = sphinx-polyversion
8
+ SOURCEDIR = .
9
+ BUILDDIR ?= docs/_build
10
+ SPHINXOPTS ?= -E -v
11
+
12
+
13
+ # Put it first so that "make" without argument is like "make help".
14
+ help:
15
+ @$(SPHINXBUILD) --help "$(SOURCEDIR)" "$(BUILDDIR)" $(O)
16
+
17
+ .PHONY: help Makefile clean cleanall local _build_local _html
18
+
19
+ clean:
20
+ rm -rf $(BUILDDIR)/main
21
+ rm -rf auto_examples/
22
+ rm -rf api/generated/
23
+
24
+ cleanall: clean
25
+ rm -rf $(BUILDDIR)/*
26
+
27
+ # For local build
28
+ local:
29
+ make _build_local; STATUS=$$?; exit $$STATUS
30
+
31
+ _build_local:
32
+ # $(POLYBUILD) ./poly.py -vv -l -o NO_PATCH=True -o OUTPUT_DIR="$(BUILDDIR)" -o SOURCE_DIR="$(SOURCEDIR)" -o TAG_REGEX="^$$"
33
+ $(SPHINXBUILD) "$(SOURCEDIR)" _build/dev $(SPHINXOPTS) $(O)
34
+
35
+ html:
36
+ make _html; STATUS=$$?; exit $$STATUS
37
+
38
+ _html:
39
+ $(POLYBUILD) ./poly.py -vv -o OUTPUT_DIR="$(BUILDDIR)" -o SOURCE_DIR="$(SOURCEDIR)"
40
+
41
+ # Catch-all target: route all unknown targets to Sphinx using the new
42
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
43
+ %: Makefile
44
+ $(SPHINXBUILD) "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,126 @@
1
+ /* Furo-native version selector styles.
2
+ Uses furo CSS variables for full light/dark mode compatibility. */
3
+
4
+ /* ── Sidebar version selector ────────────────────────────────────────────── */
5
+
6
+ #version-selector {
7
+ border-top: 1px solid var(--color-sidebar-search-border);
8
+ padding-top: calc(var(--sidebar-item-spacing-vertical) / 2);
9
+ }
10
+
11
+ /* Remove default browser <details> marker */
12
+ .version-details > summary {
13
+ list-style: none;
14
+ }
15
+ .version-details > summary::-webkit-details-marker {
16
+ display: none;
17
+ }
18
+
19
+ /* Summary row: looks like a furo sidebar caption */
20
+ .version-summary {
21
+ cursor: pointer;
22
+ display: flex;
23
+ align-items: center;
24
+ gap: 0.4em;
25
+ padding: var(--sidebar-item-spacing-vertical)
26
+ var(--sidebar-item-spacing-horizontal);
27
+ font-size: var(--font-size--small--2);
28
+ font-weight: bold;
29
+ text-transform: uppercase;
30
+ letter-spacing: 1px;
31
+ color: var(--color-sidebar-caption-text);
32
+ user-select: none;
33
+ }
34
+
35
+ .version-summary:hover {
36
+ background-color: var(--color-sidebar-item-background--hover);
37
+ }
38
+
39
+ /* Chevron: points right when closed, down when open */
40
+ .version-summary::after {
41
+ content: "▶";
42
+ font-size: 0.6em;
43
+ margin-left: auto;
44
+ transition: transform 0.15s ease;
45
+ color: var(--color-sidebar-caption-text);
46
+ }
47
+
48
+ .version-details[open] > .version-summary::after {
49
+ transform: rotate(90deg);
50
+ }
51
+
52
+ /* Colored status dot */
53
+ .version-status-dot {
54
+ width: 8px;
55
+ height: 8px;
56
+ border-radius: 50%;
57
+ display: inline-block;
58
+ flex-shrink: 0;
59
+ }
60
+
61
+ .version-status-dot--latest { background-color: #28a745; }
62
+ .version-status-dot--old { background-color: #dc3545; }
63
+ .version-status-dot--dev { background-color: #e67e00; }
64
+
65
+ /* Version list */
66
+ .version-details ul {
67
+ margin: 0;
68
+ padding: 0;
69
+ list-style: none;
70
+ }
71
+
72
+ .version-details .toctree-l1 > a {
73
+ display: block;
74
+ padding: var(--sidebar-item-spacing-vertical)
75
+ var(--sidebar-item-spacing-horizontal);
76
+ color: var(--color-sidebar-link-text);
77
+ font-size: var(--sidebar-item-font-size);
78
+ text-decoration: none;
79
+ }
80
+
81
+ .version-details .toctree-l1 > a:hover {
82
+ background-color: var(--color-sidebar-item-background--hover);
83
+ color: var(--color-sidebar-link-text--top-level);
84
+ }
85
+
86
+ .version-details .toctree-l1.current > a {
87
+ background-color: var(--color-sidebar-item-background--current, transparent);
88
+ color: var(--color-sidebar-link-text--top-level);
89
+ font-weight: bold;
90
+ }
91
+
92
+ .version-details .toctree-l1 > a em {
93
+ font-size: 0.85em;
94
+ opacity: 0.75;
95
+ }
96
+
97
+ /* ── Version banner (toc-drawer / right sidebar) ─────────────────────────── */
98
+
99
+ .version-banner {
100
+ padding: 0.6rem 0.75rem;
101
+ margin: 0.75rem 0.5rem 0;
102
+ border-radius: 0.2rem;
103
+ border-left: 3px solid;
104
+ font-size: var(--font-size--small--2);
105
+ line-height: 1.4;
106
+ }
107
+
108
+ .version-banner a {
109
+ font-weight: bold;
110
+ color: inherit;
111
+ }
112
+
113
+ .version-banner--latest {
114
+ background-color: rgba(40, 167, 69, 0.12);
115
+ border-left-color: #28a745;
116
+ }
117
+
118
+ .version-banner--old {
119
+ background-color: rgba(220, 53, 69, 0.12);
120
+ border-left-color: #dc3545;
121
+ }
122
+
123
+ .version-banner--dev {
124
+ background-color: rgba(230, 126, 0, 0.12);
125
+ border-left-color: #e67e00;
126
+ }
@@ -0,0 +1,11 @@
1
+ {# Furo-native version selector.
2
+ This placeholder is rendered by Sphinx at build time.
3
+ poly.py replaces it with the full multi-version list when patching. #}
4
+ <div id="version-selector" class="sidebar-tree version-selector">
5
+ <details class="version-details" open>
6
+ <summary class="version-summary">
7
+ <span class="version-status-dot version-status-dot--latest"></span>
8
+ <span class="caption-text">Version</span>
9
+ </summary>
10
+ </details>
11
+ </div>
@@ -7,30 +7,61 @@
7
7
  # https://www.sphinx-doc.org/en/master/usage/configuration.html
8
8
 
9
9
  import datetime
10
- from functools import partial
11
- from pathlib import Path
10
+ import os
12
11
  import sys
13
-
14
- from setuptools_scm import get_version
15
-
16
12
  import types
13
+ from pathlib import Path
17
14
  from typing import TypeAliasType
15
+
16
+ from setuptools_scm import get_version
18
17
  from sphinx_autodoc_typehints import format_annotation
18
+ from sphinx_polyversion.api import load
19
+ from sphinx_polyversion.git import GitRefType
20
+
21
+
22
+ if os.getenv("POLYVERSION_DATA") is None:
23
+ # If POLYVERSION_DATA is not set, we are likely building the docs locally.
24
+ # In this case, we can use setuptools_scm to get the version information.
25
+ release = get_version(root=Path(__file__).parents[1].resolve())
26
+ else:
27
+ load(globals())
28
+ # This adds the following to the global scope
29
+ # html_context = {
30
+ # "revisions": [GitRef('main', ...), GitRef('v6.8.9', ...), ...],
31
+ # "current": GitRef('v1.4.6', ...),
32
+ # }
33
+
34
+ # process the loaded version information as you wish
35
+ html_context = globals().get("html_context", {})
36
+
37
+ tag_revisions = [
38
+ rev
39
+ for rev in html_context["revisions"]
40
+ if rev.type_ == GitRefType.TAG and rev.name.startswith("v")
41
+ ]
19
42
 
20
- # Check if sphinx-multiversion is installed
21
- use_multiversion = False
22
- try:
23
- import sphinx_multiversion # noqa: F401
43
+ latest = sorted(tag_revisions, key=lambda x: x.name)[
44
+ -1
45
+ ] # latest by version
24
46
 
25
- use_multiversion = True
26
- except ImportError:
27
- pass
47
+ if (
48
+ html_context["current"].type_ == GitRefType.BRANCH
49
+ and html_context["current"].name == "main"
50
+ ):
51
+ major, minor, revision = latest.name.split("v")[-1].split(
52
+ "."
53
+ ) # get version number from tag name
54
+ next_dev_version = f"{major}.{minor}.{int(revision) + 1}.dev0"
55
+ release = next_dev_version
56
+ else:
57
+ release = html_context["current"].name
28
58
 
59
+ version = release
29
60
 
30
61
  # -- Path setup --------------------------------------------------------------
31
62
 
32
63
  PROJECT_ROOT_DIR = Path(__file__).parents[1].resolve()
33
- get_scm_version = partial(get_version, root=PROJECT_ROOT_DIR)
64
+ # get_scm_version = partial(get_version, root=PROJECT_ROOT_DIR)
34
65
 
35
66
  # -- Project information -----------------------------------------------------
36
67
 
@@ -44,11 +75,6 @@ project = github_repo_name
44
75
  author = f"{project} Contributors"
45
76
  copyright = f"{datetime.date.today().year}, {author}"
46
77
 
47
- # The version along with dev tag
48
- release = get_scm_version(
49
- version_scheme="guess-next-dev",
50
- local_scheme="no-local-version",
51
- )
52
78
 
53
79
  # -- General configuration ---------------------------------------------------
54
80
 
@@ -72,12 +98,6 @@ extensions = [
72
98
  "sphinx_autodoc_typehints", # automatically document type hints
73
99
  ]
74
100
 
75
- if use_multiversion:
76
- print("using sphinx-multiversion for documentation")
77
- extensions.append("sphinx_multiversion")
78
- else:
79
- print("sphinx-multiversion not found, building documentation without it")
80
-
81
101
  # Add any paths that contain templates here, relative to this directory.
82
102
  templates_path = [
83
103
  "_templates",
@@ -111,9 +131,20 @@ nitpick_ignore_regex = [
111
131
  ("py:class", "sklearn.metrics._scorer.*"),
112
132
  ]
113
133
 
114
- to_ignore = ["array-like", "shape", "optional", "or", "the", "options",
115
- "n_samples", "default=.*", "n_features", "n_outputs", "True",
116
- "False"]
134
+ to_ignore = [
135
+ "array-like",
136
+ "shape",
137
+ "optional",
138
+ "or",
139
+ "the",
140
+ "options",
141
+ "n_samples",
142
+ "default=.*",
143
+ "n_features",
144
+ "n_outputs",
145
+ "True",
146
+ "False",
147
+ ]
117
148
 
118
149
  for i in to_ignore:
119
150
  nitpick_ignore_regex.append(("py:class", i))
@@ -134,6 +165,7 @@ html_logo = "images/julearn_logo_it.png"
134
165
  # or fully qualified paths (eg. https://...)
135
166
  html_css_files = [
136
167
  "css/custom.css",
168
+ "css/version_selector.css",
137
169
  ]
138
170
 
139
171
  html_js_files = [
@@ -168,15 +200,15 @@ autodoc_type_aliases = {
168
200
  "ColumnTypes": "julearn.base.column_types.ColumnTypes",
169
201
  "Pipeline": "sklearn.pipeline.Pipeline",
170
202
  "RandomState": "numpy.random.RandomState",
171
- # "ColumnTypesLike": "julearn.utils.typing.ColumnTypesLike",
172
- # "DataLike": "julearn.utils.typing.DataLike",
173
- # "ScorerLike": "julearn.utils.typing.ScorerLike",
174
- # "EstimatorLike": "julearn.utils.typing.EstimatorLike",
175
- # "ModelLike": "julearn.utils.typing.ModelLike",
176
- # "TransformerLike": "julearn.utils.typing.TransformerLike",
177
- # "JuModelLike": "julearn.utils.typing.JuModelLike",
178
- # "JuTransformerLike": "julearn.utils.typing.JuTransformerLike",
179
- # "CVLike": "julearn.utils.typing.CVLike",
203
+ # "ColumnTypesLike": "julearn.utils.typing.ColumnTypesLike",
204
+ # "DataLike": "julearn.utils.typing.DataLike",
205
+ # "ScorerLike": "julearn.utils.typing.ScorerLike",
206
+ # "EstimatorLike": "julearn.utils.typing.EstimatorLike",
207
+ # "ModelLike": "julearn.utils.typing.ModelLike",
208
+ # "TransformerLike": "julearn.utils.typing.TransformerLike",
209
+ # "JuModelLike": "julearn.utils.typing.JuModelLike",
210
+ # "JuTransformerLike": "julearn.utils.typing.JuTransformerLike",
211
+ # "CVLike": "julearn.utils.typing.CVLike",
180
212
  }
181
213
 
182
214
 
@@ -288,12 +320,6 @@ sphinx_gallery_conf = {
288
320
  "download_all_examples": False,
289
321
  }
290
322
 
291
- # -- sphinx-multiversion configuration ---------------------------------------
292
-
293
- smv_rebuild_tags = False
294
- smv_tag_whitelist = r"^v\d+\.\d+.\d+$"
295
- smv_branch_whitelist = r"main"
296
- smv_released_pattern = r"^tags/v.*$"
297
323
 
298
324
  # -- sphinxcontrib-towncrier configuration -----------------------------------
299
325
 
@@ -301,7 +327,7 @@ towncrier_draft_autoversion_mode = "draft"
301
327
  towncrier_draft_include_empty = True
302
328
  towncrier_draft_working_directory = PROJECT_ROOT_DIR
303
329
 
304
- # -- sphinx_autodoc_typehints configuration ---------------------------------------
330
+ # -- sphinx_autodoc_typehints configuration ----------------------------------
305
331
  always_use_bars_union = True
306
332
  simplify_optional_unions = True
307
333
  typehints_defaults = "comma"
@@ -315,9 +341,9 @@ typehints_document_rtype_none = False
315
341
  # instead of as a separate block
316
342
  typehints_use_rtype = False
317
343
 
344
+
318
345
  def _get_canonical_type_alias_name(annotation: TypeAliasType) -> str:
319
- """
320
- Get canonical public qualified name for a TypeAliasType.
346
+ """Get canonical public qualified name for a TypeAliasType.
321
347
 
322
348
  For types defined in private modules (e.g. ``numpy._typing.ArrayLike``),
323
349
  search ``sys.modules`` for a public re-export