julearn 0.3.6.dev33__tar.gz → 0.3.6.dev47__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 (262) hide show
  1. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/workflows/ci.yml +10 -3
  2. julearn-0.3.6.dev47/.github/workflows/docs-preview.yml +48 -0
  3. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/workflows/docs.yml +13 -6
  4. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/workflows/lint.yml +7 -5
  5. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/PKG-INFO +17 -18
  6. julearn-0.3.6.dev47/docs/Makefile +44 -0
  7. julearn-0.3.6.dev47/docs/_static/css/version_selector.css +126 -0
  8. julearn-0.3.6.dev47/docs/_templates/versions.html +11 -0
  9. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/conf.py +58 -46
  10. julearn-0.3.6.dev47/docs/poly.py +618 -0
  11. julearn-0.3.6.dev47/docs/poly_files/patches/version_banner.html +24 -0
  12. julearn-0.3.6.dev47/docs/poly_files/patches/version_banner_rtd.html +5 -0
  13. julearn-0.3.6.dev47/docs/poly_files/patches/versions.html +35 -0
  14. julearn-0.3.6.dev33/docs/_templates/versions.html → julearn-0.3.6.dev47/docs/poly_files/patches/versions_rtd.html +2 -2
  15. julearn-0.3.6.dev47/docs/poly_files/templates/index.html +12 -0
  16. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/_version.py +3 -3
  17. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn.egg-info/PKG-INFO +17 -18
  18. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn.egg-info/SOURCES.txt +7 -0
  19. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn.egg-info/requires.txt +13 -13
  20. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/pyproject.toml +10 -9
  21. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/uv.lock +71 -313
  22. julearn-0.3.6.dev33/.github/workflows/docs-preview.yml +0 -38
  23. julearn-0.3.6.dev33/docs/Makefile +0 -52
  24. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  25. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  26. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/ISSUE_TEMPLATE/documentation_request.yaml +0 -0
  27. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  28. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/dependabot.yml +0 -0
  29. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/workflows/check-stale.yml +0 -0
  30. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/workflows/ci-docs.yml +0 -0
  31. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.github/workflows/publish.yml +0 -0
  32. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.gitignore +0 -0
  33. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/.pre-commit-config.yaml +0 -0
  34. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/AUTHORS.rst +0 -0
  35. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/LICENSE.md +0 -0
  36. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/README.md +0 -0
  37. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/codecov.yml +0 -0
  38. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_static/css/custom.css +0 -0
  39. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_static/js/custom.js +0 -0
  40. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_templates/class.rst +0 -0
  41. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_templates/function.rst +0 -0
  42. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_templates/function_warning.rst +0 -0
  43. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_templates/protocol.rst +0 -0
  44. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/_templates/type.rst +0 -0
  45. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/base.rst +0 -0
  46. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/config.rst +0 -0
  47. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/index.rst +0 -0
  48. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/inspect.rst +0 -0
  49. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/main.rst +0 -0
  50. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/model_selection.rst +0 -0
  51. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/models.rst +0 -0
  52. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/pipeline.rst +0 -0
  53. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/prepare.rst +0 -0
  54. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/scoring.rst +0 -0
  55. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/stats.rst +0 -0
  56. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/transformers.rst +0 -0
  57. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/utils.rst +0 -0
  58. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/api/viz.rst +0 -0
  59. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/available_pipeline_steps.rst +0 -0
  60. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/changes/contributors.inc +0 -0
  61. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/changes/newsfragments/.gitignore +0 -0
  62. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/changes/newsfragments/301.misc +0 -0
  63. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/changes/newsfragments/303.feature +0 -0
  64. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/changes/newsfragments/307.bugfix +0 -0
  65. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/changes/newsfragments/307.misc +0 -0
  66. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/configuration.rst +0 -0
  67. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/contributing.rst +0 -0
  68. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/examples.rst +0 -0
  69. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/faq.rst +0 -0
  70. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/getting_started.rst +0 -0
  71. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/corrected_ttest.png +0 -0
  72. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/final_estimator.png +0 -0
  73. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/iris_X.png +0 -0
  74. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/iris_df.png +0 -0
  75. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/iris_y.png +0 -0
  76. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/joblib_htcondor/condor_q.png +0 -0
  77. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/joblib_htcondor/ui_main.png +0 -0
  78. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/joblib_htcondor/ui_open.png +0 -0
  79. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/joblib_htcondor/ui_stacked.png +0 -0
  80. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo.png +0 -0
  81. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_calm.png +0 -0
  82. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_confbias.png +0 -0
  83. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_cv.png +0 -0
  84. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_generalization.png +0 -0
  85. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_it.png +0 -0
  86. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_ml.png +0 -0
  87. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/julearn_logo_mlit.png +0 -0
  88. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/multiple_scorers_run_cv.png +0 -0
  89. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/plot_scores.png +0 -0
  90. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/scores_run_cv.png +0 -0
  91. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/scores_run_cv_splitter.png +0 -0
  92. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/images/scores_run_cv_train.png +0 -0
  93. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/index.rst +0 -0
  94. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/links.inc +0 -0
  95. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/maintaining.rst +0 -0
  96. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/redirect.html +0 -0
  97. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/CBPM.rst +0 -0
  98. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/confound_removal.rst +0 -0
  99. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/cross_validation_splitter.rst +0 -0
  100. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/hyperparameter_tuning.rst +0 -0
  101. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/index.rst +0 -0
  102. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/joblib.rst +0 -0
  103. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/model_inspect.rst +0 -0
  104. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/stacked_models.rst +0 -0
  105. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/selected_deeper_topics/target_transformers.rst +0 -0
  106. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/what_really_need_know/cross_validation.rst +0 -0
  107. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/what_really_need_know/data.rst +0 -0
  108. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/what_really_need_know/index.rst +0 -0
  109. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/what_really_need_know/model_comparison.rst +0 -0
  110. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/what_really_need_know/model_evaluation.rst +0 -0
  111. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/what_really_need_know/pipeline.rst +0 -0
  112. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/docs/whats_new.rst +0 -0
  113. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/README.rst +0 -0
  114. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/plot_cm_acc_multiclass.py +0 -0
  115. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/plot_example_regression.py +0 -0
  116. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/plot_stratified_kfold_reg.py +0 -0
  117. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/run_combine_pandas.py +0 -0
  118. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/run_grouped_cv.py +0 -0
  119. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/00_starting/run_simple_binary_classification.py +0 -0
  120. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/01_model_comparison/README.rst +0 -0
  121. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/01_model_comparison/plot_simple_model_comparison.py +0 -0
  122. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/02_inspection/README.rst +0 -0
  123. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/02_inspection/plot_groupcv_inspect_svm.py +0 -0
  124. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/02_inspection/plot_inspect_random_forest.py +0 -0
  125. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/02_inspection/plot_preprocess.py +0 -0
  126. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/02_inspection/run_binary_inspect_folds.py +0 -0
  127. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/README.rst +0 -0
  128. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_apply_to_target.py +0 -0
  129. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_example_pca_featsets.py +0 -0
  130. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_generate_target.py +0 -0
  131. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_hyperparameter_multiple_grids.py +0 -0
  132. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_hyperparameter_tuning.py +0 -0
  133. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_hyperparameter_tuning_bayessearch.py +0 -0
  134. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/03_complex_models/run_stacked_models.py +0 -0
  135. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/04_confounds/README.rst +0 -0
  136. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/04_confounds/plot_confound_removal_classification.py +0 -0
  137. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/04_confounds/run_return_confounds.py +0 -0
  138. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/05_customization/README.rst +0 -0
  139. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/05_customization/run_custom_scorers_regression.py +0 -0
  140. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/README.rst +0 -0
  141. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_cbpm_docs.py +0 -0
  142. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_confound_removal_docs.py +0 -0
  143. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_cv_splitters_docs.py +0 -0
  144. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_data_docs.py +0 -0
  145. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_hyperparameters_docs.py +0 -0
  146. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_model_comparison_docs.py +0 -0
  147. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_model_evaluation_docs.py +0 -0
  148. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_model_inspection_docs.py +0 -0
  149. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_pipeline_docs.py +0 -0
  150. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_stacked_models_docs.py +0 -0
  151. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/99_docs/run_target_transformer_docs.py +0 -0
  152. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/README.rst +0 -0
  153. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/XX_disabled/dis_run_n_jobs.py +0 -0
  154. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/examples/XX_disabled/dis_run_target_confound_removal.py +0 -0
  155. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/ignore_words.txt +0 -0
  156. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/__init__.py +0 -0
  157. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/api.py +0 -0
  158. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/base/__init__.py +0 -0
  159. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/base/column_types.py +0 -0
  160. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/base/estimators.py +0 -0
  161. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/base/tests/test_base_estimators.py +0 -0
  162. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/base/tests/test_column_types.py +0 -0
  163. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/config.py +0 -0
  164. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/conftest.py +0 -0
  165. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/external/optuna_searchcv.py +0 -0
  166. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/__init__.py +0 -0
  167. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/_cv.py +0 -0
  168. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/_pipeline.py +0 -0
  169. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/_preprocess.py +0 -0
  170. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/inspector.py +0 -0
  171. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/tests/test_cv.py +0 -0
  172. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/tests/test_inspector.py +0 -0
  173. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/tests/test_pipeline.py +0 -0
  174. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/inspect/tests/test_preprocess.py +0 -0
  175. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/__init__.py +0 -0
  176. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/_optuna_searcher.py +0 -0
  177. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/_skopt_searcher.py +0 -0
  178. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/available_searchers.py +0 -0
  179. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/continuous_stratified_kfold.py +0 -0
  180. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/final_model_cv.py +0 -0
  181. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/stratified_bootstrap.py +0 -0
  182. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/tests/test_available_searchers.py +0 -0
  183. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/tests/test_continous_stratified_kfold.py +0 -0
  184. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/tests/test_final_model_cv.py +0 -0
  185. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/tests/test_optuna_searcher.py +0 -0
  186. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/tests/test_skopt_searcher.py +0 -0
  187. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/tests/test_stratified_bootstrap.py +0 -0
  188. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/model_selection/utils.py +0 -0
  189. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/models/__init__.py +0 -0
  190. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/models/available_models.py +0 -0
  191. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/models/dynamic.py +0 -0
  192. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/models/tests/test_available_models.py +0 -0
  193. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/models/tests/test_dynamic.py +0 -0
  194. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/models/tests/test_models.py +0 -0
  195. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/__init__.py +0 -0
  196. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/merger.py +0 -0
  197. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/pipeline_creator.py +0 -0
  198. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/target_pipeline.py +0 -0
  199. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/target_pipeline_creator.py +0 -0
  200. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/tests/test_merger.py +0 -0
  201. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/tests/test_pipeline_creator.py +0 -0
  202. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/tests/test_target_pipeline.py +0 -0
  203. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/pipeline/tests/test_target_pipeline_creator.py +0 -0
  204. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/prepare.py +0 -0
  205. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/scoring/__init__.py +0 -0
  206. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/scoring/available_scorers.py +0 -0
  207. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/scoring/metrics.py +0 -0
  208. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/scoring/tests/test_available_scorers.py +0 -0
  209. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/scoring/tests/test_metrics.py +0 -0
  210. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/stats/__init__.py +0 -0
  211. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/stats/corrected_ttest.py +0 -0
  212. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/stats/tests/test_corrected_ttest.py +0 -0
  213. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/tests/test_api.py +0 -0
  214. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/tests/test_config.py +0 -0
  215. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/tests/test_prepare.py +0 -0
  216. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/__init__.py +0 -0
  217. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/available_transformers.py +0 -0
  218. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/cbpm.py +0 -0
  219. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/confound_remover.py +0 -0
  220. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/__init__.py +0 -0
  221. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/change_column_types.py +0 -0
  222. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/drop_columns.py +0 -0
  223. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/filter_columns.py +0 -0
  224. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/pick_columns.py +0 -0
  225. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/set_column_types.py +0 -0
  226. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/tests/test_change_column_types.py +0 -0
  227. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/tests/test_drop_columns.py +0 -0
  228. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/tests/test_filter_columns.py +0 -0
  229. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/dataframe/tests/test_set_column_types.py +0 -0
  230. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/ju_column_transformer.py +0 -0
  231. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/__init__.py +0 -0
  232. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/available_target_transformers.py +0 -0
  233. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/ju_generated_target_model.py +0 -0
  234. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/ju_target_transformer.py +0 -0
  235. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/ju_transformed_target_model.py +0 -0
  236. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/target_confound_remover.py +0 -0
  237. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/tests/test_available_target_transformers.py +0 -0
  238. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/tests/test_ju_generated_target_model.py +0 -0
  239. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/tests/test_ju_target_transformer.py +0 -0
  240. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/tests/test_ju_transformed_target_model.py +0 -0
  241. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/target/tests/test_target_confound_remover.py +0 -0
  242. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/tests/test_available_transformers.py +0 -0
  243. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/tests/test_cbpm.py +0 -0
  244. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/tests/test_confounds.py +0 -0
  245. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/transformers/tests/test_jucolumntransformers.py +0 -0
  246. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/__init__.py +0 -0
  247. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/_cv.py +0 -0
  248. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/checks.py +0 -0
  249. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/logging.py +0 -0
  250. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/testing.py +0 -0
  251. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/tests/test_logging.py +0 -0
  252. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/tests/test_version.py +0 -0
  253. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/typing.py +0 -0
  254. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/utils/versions.py +0 -0
  255. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/viz/__init__.py +0 -0
  256. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/viz/_scores.py +0 -0
  257. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn/viz/res/julearn_logo_generalization.png +0 -0
  258. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn.egg-info/dependency_links.txt +0 -0
  259. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/julearn.egg-info/top_level.txt +0 -0
  260. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/setup.cfg +0 -0
  261. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/setup.py +0 -0
  262. {julearn-0.3.6.dev33 → julearn-0.3.6.dev47}/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 }}
@@ -0,0 +1,48 @@
1
+ name: Build and preview docs
2
+
3
+ on:
4
+ push:
5
+ branches-ignore:
6
+ - "main"
7
+ tags-ignore:
8
+ - v*
9
+ pull_request:
10
+ types:
11
+ - opened
12
+ - reopened
13
+ - synchronize
14
+ - closed
15
+
16
+ concurrency: preview-${{ github.ref }}
17
+
18
+ jobs:
19
+ build-docs:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v6
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - uses: actions/setup-python@v6
27
+ if: github.event.action != 'closed' # We don't need the build if we know the preview will be removed
28
+ with:
29
+ python-version-file: "pyproject.toml"
30
+
31
+ - name: Install uv
32
+ if: github.event.action != 'closed' # We don't need the build if we know the preview will be removed
33
+ uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
34
+
35
+ - name: Install Python dependencies
36
+ if: github.event.action != 'closed' # We don't need the build if we know the preview will be removed
37
+ run: |
38
+ uv sync --locked --extra docs
39
+
40
+ - name: Test build docs
41
+ if: github.event.action != 'closed' # We don't need the build if we know the preview will be removed
42
+ run: |
43
+ uv run make -C docs/ local
44
+
45
+ - uses: rossjrw/pr-preview-action@v1
46
+ with:
47
+ source-dir: docs/_build/dev
48
+ 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.dev47
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,47 @@
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
18
- from sphinx_autodoc_typehints import format_annotation
19
15
 
20
- # Check if sphinx-multiversion is installed
21
- use_multiversion = False
22
- try:
23
- import sphinx_multiversion # noqa: F401
16
+ from setuptools_scm import get_version
17
+ from sphinx_autodoc_typehints import format_annotation
18
+ from sphinx_polyversion.api import load
19
+ from sphinx_polyversion.git import GitRefType
24
20
 
25
- use_multiversion = True
26
- except ImportError:
27
- pass
28
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
+ if (
38
+ html_context["current"].type_ == GitRefType.BRANCH
39
+ and html_context["current"].name == "main"
40
+ ):
41
+ release = os.getenv("SETUPTOOLS_SCM_PRETEND_VERSION_FOR_JULEARN")
42
+ else:
43
+ release = html_context["current"].name
44
+
45
+ version = release
29
46
 
30
47
  # -- Path setup --------------------------------------------------------------
31
48
 
32
49
  PROJECT_ROOT_DIR = Path(__file__).parents[1].resolve()
33
- get_scm_version = partial(get_version, root=PROJECT_ROOT_DIR)
50
+ # get_scm_version = partial(get_version, root=PROJECT_ROOT_DIR)
34
51
 
35
52
  # -- Project information -----------------------------------------------------
36
53
 
@@ -44,11 +61,6 @@ project = github_repo_name
44
61
  author = f"{project} Contributors"
45
62
  copyright = f"{datetime.date.today().year}, {author}"
46
63
 
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
64
 
53
65
  # -- General configuration ---------------------------------------------------
54
66
 
@@ -72,12 +84,6 @@ extensions = [
72
84
  "sphinx_autodoc_typehints", # automatically document type hints
73
85
  ]
74
86
 
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
87
  # Add any paths that contain templates here, relative to this directory.
82
88
  templates_path = [
83
89
  "_templates",
@@ -111,9 +117,20 @@ nitpick_ignore_regex = [
111
117
  ("py:class", "sklearn.metrics._scorer.*"),
112
118
  ]
113
119
 
114
- to_ignore = ["array-like", "shape", "optional", "or", "the", "options",
115
- "n_samples", "default=.*", "n_features", "n_outputs", "True",
116
- "False"]
120
+ to_ignore = [
121
+ "array-like",
122
+ "shape",
123
+ "optional",
124
+ "or",
125
+ "the",
126
+ "options",
127
+ "n_samples",
128
+ "default=.*",
129
+ "n_features",
130
+ "n_outputs",
131
+ "True",
132
+ "False",
133
+ ]
117
134
 
118
135
  for i in to_ignore:
119
136
  nitpick_ignore_regex.append(("py:class", i))
@@ -134,6 +151,7 @@ html_logo = "images/julearn_logo_it.png"
134
151
  # or fully qualified paths (eg. https://...)
135
152
  html_css_files = [
136
153
  "css/custom.css",
154
+ "css/version_selector.css",
137
155
  ]
138
156
 
139
157
  html_js_files = [
@@ -168,15 +186,15 @@ autodoc_type_aliases = {
168
186
  "ColumnTypes": "julearn.base.column_types.ColumnTypes",
169
187
  "Pipeline": "sklearn.pipeline.Pipeline",
170
188
  "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",
189
+ # "ColumnTypesLike": "julearn.utils.typing.ColumnTypesLike",
190
+ # "DataLike": "julearn.utils.typing.DataLike",
191
+ # "ScorerLike": "julearn.utils.typing.ScorerLike",
192
+ # "EstimatorLike": "julearn.utils.typing.EstimatorLike",
193
+ # "ModelLike": "julearn.utils.typing.ModelLike",
194
+ # "TransformerLike": "julearn.utils.typing.TransformerLike",
195
+ # "JuModelLike": "julearn.utils.typing.JuModelLike",
196
+ # "JuTransformerLike": "julearn.utils.typing.JuTransformerLike",
197
+ # "CVLike": "julearn.utils.typing.CVLike",
180
198
  }
181
199
 
182
200
 
@@ -288,12 +306,6 @@ sphinx_gallery_conf = {
288
306
  "download_all_examples": False,
289
307
  }
290
308
 
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
309
 
298
310
  # -- sphinxcontrib-towncrier configuration -----------------------------------
299
311
 
@@ -301,7 +313,7 @@ towncrier_draft_autoversion_mode = "draft"
301
313
  towncrier_draft_include_empty = True
302
314
  towncrier_draft_working_directory = PROJECT_ROOT_DIR
303
315
 
304
- # -- sphinx_autodoc_typehints configuration ---------------------------------------
316
+ # -- sphinx_autodoc_typehints configuration ----------------------------------
305
317
  always_use_bars_union = True
306
318
  simplify_optional_unions = True
307
319
  typehints_defaults = "comma"
@@ -315,9 +327,9 @@ typehints_document_rtype_none = False
315
327
  # instead of as a separate block
316
328
  typehints_use_rtype = False
317
329
 
330
+
318
331
  def _get_canonical_type_alias_name(annotation: TypeAliasType) -> str:
319
- """
320
- Get canonical public qualified name for a TypeAliasType.
332
+ """Get canonical public qualified name for a TypeAliasType.
321
333
 
322
334
  For types defined in private modules (e.g. ``numpy._typing.ArrayLike``),
323
335
  search ``sys.modules`` for a public re-export