julearn 0.3.6.dev17__tar.gz → 0.3.6.dev33__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 (255) hide show
  1. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/ci-docs.yml +1 -3
  2. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/ci.yml +2 -4
  3. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/docs.yml +0 -1
  4. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/PKG-INFO +21 -20
  5. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/Makefile +15 -1
  6. julearn-0.3.6.dev33/docs/_templates/protocol.rst +17 -0
  7. julearn-0.3.6.dev33/docs/_templates/type.rst +15 -0
  8. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/base.rst +0 -1
  9. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/model_selection.rst +1 -0
  10. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/utils.rst +25 -7
  11. julearn-0.3.6.dev33/docs/changes/newsfragments/307.bugfix +1 -0
  12. julearn-0.3.6.dev33/docs/changes/newsfragments/307.misc +1 -0
  13. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/conf.py +101 -2
  14. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/_version.py +3 -3
  15. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/api.py +39 -40
  16. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/base/__init__.py +0 -1
  17. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/base/column_types.py +117 -119
  18. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/base/estimators.py +20 -26
  19. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/base/tests/test_base_estimators.py +3 -3
  20. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/base/tests/test_column_types.py +4 -3
  21. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/config.py +1 -0
  22. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/conftest.py +6 -6
  23. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/_cv.py +2 -4
  24. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/_pipeline.py +17 -9
  25. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/_preprocess.py +1 -3
  26. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/inspector.py +8 -20
  27. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/tests/test_inspector.py +4 -2
  28. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/tests/test_pipeline.py +2 -2
  29. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/tests/test_preprocess.py +2 -2
  30. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/available_searchers.py +2 -3
  31. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/continuous_stratified_kfold.py +14 -16
  32. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/final_model_cv.py +2 -3
  33. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/stratified_bootstrap.py +2 -2
  34. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/tests/test_continous_stratified_kfold.py +10 -6
  35. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/models/available_models.py +5 -5
  36. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/models/dynamic.py +5 -5
  37. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/models/tests/test_models.py +1 -1
  38. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/pipeline_creator.py +32 -29
  39. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/target_pipeline.py +2 -4
  40. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/target_pipeline_creator.py +2 -4
  41. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/tests/test_pipeline_creator.py +33 -24
  42. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/prepare.py +16 -16
  43. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/scoring/available_scorers.py +5 -5
  44. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/stats/corrected_ttest.py +2 -3
  45. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/tests/test_api.py +5 -0
  46. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/cbpm.py +2 -2
  47. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/confound_remover.py +9 -13
  48. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/change_column_types.py +6 -8
  49. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/drop_columns.py +7 -11
  50. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/filter_columns.py +6 -9
  51. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/pick_columns.py +8 -15
  52. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/set_column_types.py +8 -9
  53. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/tests/test_set_column_types.py +2 -3
  54. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/ju_column_transformer.py +9 -9
  55. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/available_target_transformers.py +2 -2
  56. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/ju_generated_target_model.py +2 -2
  57. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/target_confound_remover.py +4 -5
  58. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/tests/test_available_transformers.py +1 -2
  59. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/tests/test_confounds.py +4 -4
  60. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/logging.py +8 -13
  61. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/testing.py +46 -39
  62. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/typing.py +28 -36
  63. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/versions.py +8 -5
  64. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn.egg-info/PKG-INFO +21 -20
  65. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn.egg-info/SOURCES.txt +4 -0
  66. julearn-0.3.6.dev33/julearn.egg-info/requires.txt +47 -0
  67. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/pyproject.toml +57 -20
  68. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/tox.ini +19 -20
  69. julearn-0.3.6.dev33/uv.lock +2538 -0
  70. julearn-0.3.6.dev17/julearn.egg-info/requires.txt +0 -45
  71. julearn-0.3.6.dev17/uv.lock +0 -4047
  72. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  73. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  74. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/ISSUE_TEMPLATE/documentation_request.yaml +0 -0
  75. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  76. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/dependabot.yml +0 -0
  77. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/check-stale.yml +0 -0
  78. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/docs-preview.yml +0 -0
  79. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/lint.yml +0 -0
  80. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.github/workflows/publish.yml +0 -0
  81. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.gitignore +0 -0
  82. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/.pre-commit-config.yaml +0 -0
  83. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/AUTHORS.rst +0 -0
  84. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/LICENSE.md +0 -0
  85. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/README.md +0 -0
  86. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/codecov.yml +0 -0
  87. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/_static/css/custom.css +0 -0
  88. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/_static/js/custom.js +0 -0
  89. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/_templates/class.rst +0 -0
  90. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/_templates/function.rst +0 -0
  91. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/_templates/function_warning.rst +0 -0
  92. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/_templates/versions.html +0 -0
  93. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/config.rst +0 -0
  94. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/index.rst +0 -0
  95. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/inspect.rst +0 -0
  96. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/main.rst +0 -0
  97. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/models.rst +0 -0
  98. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/pipeline.rst +0 -0
  99. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/prepare.rst +0 -0
  100. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/scoring.rst +0 -0
  101. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/stats.rst +0 -0
  102. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/transformers.rst +0 -0
  103. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/api/viz.rst +0 -0
  104. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/available_pipeline_steps.rst +0 -0
  105. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/changes/contributors.inc +0 -0
  106. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/changes/newsfragments/.gitignore +0 -0
  107. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/changes/newsfragments/301.misc +0 -0
  108. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/changes/newsfragments/303.feature +0 -0
  109. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/configuration.rst +0 -0
  110. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/contributing.rst +0 -0
  111. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/examples.rst +0 -0
  112. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/faq.rst +0 -0
  113. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/getting_started.rst +0 -0
  114. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/corrected_ttest.png +0 -0
  115. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/final_estimator.png +0 -0
  116. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/iris_X.png +0 -0
  117. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/iris_df.png +0 -0
  118. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/iris_y.png +0 -0
  119. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/joblib_htcondor/condor_q.png +0 -0
  120. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/joblib_htcondor/ui_main.png +0 -0
  121. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/joblib_htcondor/ui_open.png +0 -0
  122. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/joblib_htcondor/ui_stacked.png +0 -0
  123. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo.png +0 -0
  124. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_calm.png +0 -0
  125. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_confbias.png +0 -0
  126. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_cv.png +0 -0
  127. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_generalization.png +0 -0
  128. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_it.png +0 -0
  129. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_ml.png +0 -0
  130. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/julearn_logo_mlit.png +0 -0
  131. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/multiple_scorers_run_cv.png +0 -0
  132. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/plot_scores.png +0 -0
  133. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/scores_run_cv.png +0 -0
  134. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/scores_run_cv_splitter.png +0 -0
  135. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/images/scores_run_cv_train.png +0 -0
  136. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/index.rst +0 -0
  137. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/links.inc +0 -0
  138. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/maintaining.rst +0 -0
  139. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/redirect.html +0 -0
  140. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/CBPM.rst +0 -0
  141. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/confound_removal.rst +0 -0
  142. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/cross_validation_splitter.rst +0 -0
  143. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/hyperparameter_tuning.rst +0 -0
  144. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/index.rst +0 -0
  145. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/joblib.rst +0 -0
  146. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/model_inspect.rst +0 -0
  147. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/stacked_models.rst +0 -0
  148. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/selected_deeper_topics/target_transformers.rst +0 -0
  149. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/what_really_need_know/cross_validation.rst +0 -0
  150. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/what_really_need_know/data.rst +0 -0
  151. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/what_really_need_know/index.rst +0 -0
  152. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/what_really_need_know/model_comparison.rst +0 -0
  153. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/what_really_need_know/model_evaluation.rst +0 -0
  154. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/what_really_need_know/pipeline.rst +0 -0
  155. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/docs/whats_new.rst +0 -0
  156. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/README.rst +0 -0
  157. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/plot_cm_acc_multiclass.py +0 -0
  158. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/plot_example_regression.py +0 -0
  159. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/plot_stratified_kfold_reg.py +0 -0
  160. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/run_combine_pandas.py +0 -0
  161. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/run_grouped_cv.py +0 -0
  162. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/00_starting/run_simple_binary_classification.py +0 -0
  163. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/01_model_comparison/README.rst +0 -0
  164. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/01_model_comparison/plot_simple_model_comparison.py +0 -0
  165. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/02_inspection/README.rst +0 -0
  166. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/02_inspection/plot_groupcv_inspect_svm.py +0 -0
  167. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/02_inspection/plot_inspect_random_forest.py +0 -0
  168. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/02_inspection/plot_preprocess.py +0 -0
  169. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/02_inspection/run_binary_inspect_folds.py +0 -0
  170. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/README.rst +0 -0
  171. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_apply_to_target.py +0 -0
  172. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_example_pca_featsets.py +0 -0
  173. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_generate_target.py +0 -0
  174. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_hyperparameter_multiple_grids.py +0 -0
  175. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_hyperparameter_tuning.py +0 -0
  176. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_hyperparameter_tuning_bayessearch.py +0 -0
  177. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/03_complex_models/run_stacked_models.py +0 -0
  178. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/04_confounds/README.rst +0 -0
  179. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/04_confounds/plot_confound_removal_classification.py +0 -0
  180. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/04_confounds/run_return_confounds.py +0 -0
  181. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/05_customization/README.rst +0 -0
  182. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/05_customization/run_custom_scorers_regression.py +0 -0
  183. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/README.rst +0 -0
  184. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_cbpm_docs.py +0 -0
  185. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_confound_removal_docs.py +0 -0
  186. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_cv_splitters_docs.py +0 -0
  187. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_data_docs.py +0 -0
  188. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_hyperparameters_docs.py +0 -0
  189. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_model_comparison_docs.py +0 -0
  190. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_model_evaluation_docs.py +0 -0
  191. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_model_inspection_docs.py +0 -0
  192. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_pipeline_docs.py +0 -0
  193. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_stacked_models_docs.py +0 -0
  194. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/99_docs/run_target_transformer_docs.py +0 -0
  195. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/README.rst +0 -0
  196. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/XX_disabled/dis_run_n_jobs.py +0 -0
  197. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/examples/XX_disabled/dis_run_target_confound_removal.py +0 -0
  198. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/ignore_words.txt +0 -0
  199. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/__init__.py +0 -0
  200. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/external/optuna_searchcv.py +0 -0
  201. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/__init__.py +0 -0
  202. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/inspect/tests/test_cv.py +0 -0
  203. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/__init__.py +0 -0
  204. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/_optuna_searcher.py +0 -0
  205. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/_skopt_searcher.py +0 -0
  206. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/tests/test_available_searchers.py +0 -0
  207. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/tests/test_final_model_cv.py +0 -0
  208. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/tests/test_optuna_searcher.py +0 -0
  209. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/tests/test_skopt_searcher.py +0 -0
  210. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/tests/test_stratified_bootstrap.py +0 -0
  211. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/model_selection/utils.py +0 -0
  212. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/models/__init__.py +0 -0
  213. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/models/tests/test_available_models.py +0 -0
  214. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/models/tests/test_dynamic.py +0 -0
  215. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/__init__.py +0 -0
  216. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/merger.py +0 -0
  217. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/tests/test_merger.py +0 -0
  218. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/tests/test_target_pipeline.py +0 -0
  219. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/pipeline/tests/test_target_pipeline_creator.py +0 -0
  220. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/scoring/__init__.py +0 -0
  221. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/scoring/metrics.py +0 -0
  222. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/scoring/tests/test_available_scorers.py +0 -0
  223. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/scoring/tests/test_metrics.py +0 -0
  224. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/stats/__init__.py +0 -0
  225. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/stats/tests/test_corrected_ttest.py +0 -0
  226. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/tests/test_config.py +0 -0
  227. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/tests/test_prepare.py +0 -0
  228. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/__init__.py +0 -0
  229. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/available_transformers.py +0 -0
  230. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/__init__.py +0 -0
  231. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/tests/test_change_column_types.py +0 -0
  232. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/tests/test_drop_columns.py +0 -0
  233. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/dataframe/tests/test_filter_columns.py +0 -0
  234. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/__init__.py +0 -0
  235. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/ju_target_transformer.py +0 -0
  236. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/ju_transformed_target_model.py +0 -0
  237. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/tests/test_available_target_transformers.py +0 -0
  238. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/tests/test_ju_generated_target_model.py +0 -0
  239. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/tests/test_ju_target_transformer.py +0 -0
  240. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/tests/test_ju_transformed_target_model.py +0 -0
  241. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/target/tests/test_target_confound_remover.py +0 -0
  242. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/tests/test_cbpm.py +0 -0
  243. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/transformers/tests/test_jucolumntransformers.py +0 -0
  244. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/__init__.py +0 -0
  245. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/_cv.py +0 -0
  246. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/checks.py +0 -0
  247. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/tests/test_logging.py +0 -0
  248. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/utils/tests/test_version.py +0 -0
  249. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/viz/__init__.py +0 -0
  250. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/viz/_scores.py +0 -0
  251. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn/viz/res/julearn_logo_generalization.png +0 -0
  252. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn.egg-info/dependency_links.txt +0 -0
  253. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/julearn.egg-info/top_level.txt +0 -0
  254. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/setup.cfg +0 -0
  255. {julearn-0.3.6.dev17 → julearn-0.3.6.dev33}/setup.py +0 -0
@@ -22,11 +22,9 @@ jobs:
22
22
  fail-fast: false
23
23
  matrix:
24
24
  python-version:
25
- - '3.9'
26
- - '3.10'
27
- - '3.11'
28
25
  - '3.12'
29
26
  - '3.13'
27
+ - '3.14'
30
28
  steps:
31
29
  - run: 'echo "No build required"'
32
30
  - name: Create mock coverage.xml file
@@ -21,11 +21,9 @@ jobs:
21
21
  fail-fast: false
22
22
  matrix:
23
23
  python-version:
24
- - '3.9'
25
- - '3.10'
26
- - '3.11'
27
24
  - '3.12'
28
25
  - '3.13'
26
+ - '3.14'
29
27
 
30
28
  steps:
31
29
  - uses: actions/checkout@v6
@@ -44,4 +42,4 @@ jobs:
44
42
  token: ${{ secrets.CODECOV_TOKEN }}
45
43
  fail_ci_if_error: true
46
44
  flags: julearn
47
- if: success() && matrix.python-version == 3.12
45
+ if: success() && matrix.python-version == 3.13
@@ -25,7 +25,6 @@ jobs:
25
25
  run: |
26
26
  python -m pip install --upgrade pip setuptools wheel
27
27
  python -m pip install -e .[docs,viz]
28
- python -m pip install git+https://github.com/dls-controls/sphinx-multiversion@only-arg
29
28
  - name: Checkout gh-pages
30
29
  # As we already did a deploy of gh-pages above, it is guaranteed to be there
31
30
  # so check it out so we can selectively build docs below
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: julearn
3
- Version: 0.3.6.dev17
3
+ Version: 0.3.6.dev33
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>
@@ -18,17 +18,16 @@ Classifier: Natural Language :: English
18
18
  Classifier: Topic :: Software Development
19
19
  Classifier: Topic :: Scientific/Engineering
20
20
  Classifier: Operating System :: OS Independent
21
- Classifier: Programming Language :: Python :: 3.9
22
- Classifier: Programming Language :: Python :: 3.10
23
21
  Classifier: Programming Language :: Python :: 3.11
24
22
  Classifier: Programming Language :: Python :: 3.12
25
23
  Classifier: Programming Language :: Python :: 3.13
26
- Requires-Python: >=3.9
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Requires-Python: >=3.12
27
26
  Description-Content-Type: text/markdown
28
27
  License-File: LICENSE.md
29
28
  License-File: AUTHORS.rst
30
- Requires-Dist: numpy<3.0.0,>=1.26.0
31
- Requires-Dist: pandas<4.0.0,>=2.1.0
29
+ Requires-Dist: numpy<3.0.0,>=2.3.0
30
+ Requires-Dist: pandas<4.0.0,>=2.2.0
32
31
  Requires-Dist: statsmodels<0.15,>=0.13
33
32
  Requires-Dist: scikit-learn<1.9.0,>=1.5.0
34
33
  Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
@@ -38,18 +37,20 @@ Requires-Dist: pre-commit; extra == "dev"
38
37
  Requires-Dist: ruff; extra == "dev"
39
38
  Requires-Dist: towncrier; extra == "dev"
40
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"
41
45
  Requires-Dist: seaborn<0.14.0,>=0.13.0; extra == "docs"
42
- Requires-Dist: sphinx<8.1.0,>=7.3.0; extra == "docs"
43
- Requires-Dist: sphinx-gallery<=0.19.0,>=0.17.0; extra == "docs"
44
- Requires-Dist: furo<=2025.7.19,>=2024.4.27; extra == "docs"
45
- Requires-Dist: numpydoc<=1.9.0,>=1.6.0; extra == "docs"
46
- Requires-Dist: sphinx-copybutton<0.5.3,>=0.5.1; extra == "docs"
47
- Requires-Dist: towncrier<24.7.0,>=23.10.0; extra == "docs"
48
- Requires-Dist: sphinxcontrib-towncrier==0.4.0a0; extra == "docs"
49
- Requires-Dist: scikit-optimize<0.11,>=0.10.0; extra == "docs"
50
- Requires-Dist: optuna<3.7,>=3.6.0; extra == "docs"
51
- Requires-Dist: optuna_integration<4.1,>=3.6.0; extra == "docs"
52
- Requires-Dist: setuptools-scm>=8; 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"
53
54
  Provides-Extra: deslib
54
55
  Requires-Dist: deslib<0.4.0,>=0.3.5; extra == "deslib"
55
56
  Provides-Extra: viz
@@ -57,10 +58,10 @@ Requires-Dist: panel>=1.3.0; extra == "viz"
57
58
  Requires-Dist: bokeh>=3.0.0; extra == "viz"
58
59
  Requires-Dist: param>=2.0.0; extra == "viz"
59
60
  Provides-Extra: skopt
60
- Requires-Dist: scikit-optimize<0.11,>=0.10.0; extra == "skopt"
61
+ Requires-Dist: scikit-optimize<0.11.0,>=0.10.2; extra == "skopt"
61
62
  Provides-Extra: optuna
62
- Requires-Dist: optuna<3.7,>=3.6.0; extra == "optuna"
63
- Requires-Dist: optuna_integration<4.1,>=3.6.0; extra == "optuna"
63
+ Requires-Dist: optuna<5.0.0,>=4.0.0; extra == "optuna"
64
+ Requires-Dist: optuna_integration<5.0.0,>=4.0.0; extra == "optuna"
64
65
  Provides-Extra: all
65
66
  Requires-Dist: julearn[optuna,skopt,viz]; extra == "all"
66
67
  Dynamic: license-file
@@ -23,14 +23,28 @@ clean:
23
23
  local:
24
24
  make _build_local; STATUS=$$?; exit $$STATUS
25
25
 
26
+ ## First build will create warnings for auto_examples. Second one will work correctly.
26
27
  _build_local:
28
+ sphinx-build "$(SOURCEDIR)" "$(BUILDDIR)" "-E" $(O)
27
29
  sphinx-build "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
28
30
 
29
31
  html:
30
32
  make _html; STATUS=$$?; exit $$STATUS
31
33
 
34
+
35
+ ## Build only tags that are not already built, and ignore dev tags. This is useful for CI to avoid building all tags on every push, but still build new tags when they are created.
32
36
  _html:
33
- $(SPHINXBUILD) "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
37
+ @regex=$$( \
38
+ for tag in $$(git tag -l); do \
39
+ if [ ! -d "$(BUILDDIR)/$$tag" ]; then \
40
+ echo "$$tag"; \
41
+ fi; \
42
+ done | \
43
+ grep -v dev | \
44
+ paste -sd'|' - \
45
+ ); \
46
+ echo "$$regex"; \
47
+ $(SPHINXBUILD) "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) -D "smv_tag_whitelist='^($$regex)$$'" $(O)
34
48
 
35
49
  # Catch-all target: route all unknown targets to Sphinx using the new
36
50
  # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
@@ -0,0 +1,17 @@
1
+ .. note::
2
+
3
+ This page is a reference documentation. It only explains the function signature, and not how to use it.
4
+ Please refer to the :ref:`What you really need to know <need_to_know>` section for the big picture.
5
+
6
+
7
+ {{ fullname | underline(line="-") }}
8
+
9
+ .. currentmodule:: {{ module }}
10
+
11
+ .. autoclass:: {{ objname }}
12
+ :members:
13
+
14
+
15
+ .. raw:: html
16
+
17
+ <div style='clear:both'></div>
@@ -0,0 +1,15 @@
1
+ .. note::
2
+
3
+ This page is a reference documentation. It only explains the function signature, and not how to use it.
4
+ Please refer to the :ref:`What you really need to know <need_to_know>` section for the big picture.
5
+
6
+
7
+ {{ fullname | underline(line="-") }}
8
+
9
+ .. currentmodule:: {{ module }}
10
+
11
+ .. autotype:: {{ objname }}
12
+
13
+ .. raw:: html
14
+
15
+ <div style='clear:both'></div>
@@ -19,7 +19,6 @@ Classes
19
19
  JuTransformer
20
20
  WrapModel
21
21
  ColumnTypes
22
- ColumnTypesLike
23
22
 
24
23
  Functions
25
24
  ---------
@@ -22,6 +22,7 @@ Classes
22
22
  ContinuousStratifiedGroupKFold
23
23
  RepeatedContinuousStratifiedGroupKFold
24
24
  StratifiedBootstrap
25
+ final_model_cv._JulearnFinalModelCV
25
26
 
26
27
  Functions
27
28
  ---------
@@ -5,16 +5,15 @@ Utils
5
5
  :no-members:
6
6
  :no-inherited-members:
7
7
 
8
- Classes
8
+ Members
9
9
  -------
10
10
 
11
11
  .. currentmodule:: julearn.utils
12
12
 
13
13
  .. autosummary::
14
14
  :toctree: generated/
15
- :template: class.rst
16
15
 
17
- logger
16
+ logger
18
17
 
19
18
  Functions
20
19
  ---------
@@ -36,17 +35,36 @@ Typing
36
35
  :no-members:
37
36
  :no-inherited-members:
38
37
 
39
- Classes
40
- -------
38
+
39
+ Types
40
+ -----
41
41
 
42
42
  .. currentmodule:: julearn.utils.typing
43
43
 
44
44
  .. autosummary::
45
45
  :toctree: generated/
46
- :template: class.rst
46
+ :template: type.rst
47
47
 
48
- JuEstimatorLike
48
+ DataLike
49
+ ScorerLike
49
50
  EstimatorLike
51
+ CVLike
52
+ ColumnTypesLike
53
+
54
+
55
+ Protocols
56
+ ---------
57
+
58
+ .. currentmodule:: julearn.utils.typing
59
+
60
+ .. autosummary::
61
+ :toctree: generated/
62
+ :template: protocol.rst
63
+
50
64
  EstimatorLikeFit1
51
65
  EstimatorLikeFit2
52
66
  EstimatorLikeFity
67
+ TransformerLike
68
+ ModelLike
69
+ JuEstimatorLike
70
+ JuModelLike
@@ -0,0 +1 @@
1
+ Fix a bug in which RandomizedSearchCV using uniform distributions specifications used an extended search space `Fede Raimondo`_
@@ -0,0 +1 @@
1
+ Configure the project to support uv as a package manager and bump minimum Python version to 3.12 `Fede Raimondo`_
@@ -9,9 +9,13 @@
9
9
  import datetime
10
10
  from functools import partial
11
11
  from pathlib import Path
12
+ import sys
12
13
 
13
14
  from setuptools_scm import get_version
14
15
 
16
+ import types
17
+ from typing import TypeAliasType
18
+ from sphinx_autodoc_typehints import format_annotation
15
19
 
16
20
  # Check if sphinx-multiversion is installed
17
21
  use_multiversion = False
@@ -65,10 +69,14 @@ extensions = [
65
69
  "sphinx_copybutton", # copy button for code blocks
66
70
  "sphinxcontrib.towncrier.ext", # towncrier fragment support
67
71
  "bokeh.sphinxext.bokeh_plot", # bokeh plot support
72
+ "sphinx_autodoc_typehints", # automatically document type hints
68
73
  ]
69
74
 
70
75
  if use_multiversion:
76
+ print("using sphinx-multiversion for documentation")
71
77
  extensions.append("sphinx_multiversion")
78
+ else:
79
+ print("sphinx-multiversion not found, building documentation without it")
72
80
 
73
81
  # Add any paths that contain templates here, relative to this directory.
74
82
  templates_path = [
@@ -99,8 +107,19 @@ nitpick_ignore_regex = [
99
107
  ("py:class", "pipeline.Pipeline"),
100
108
  ("py:class", "sklearn.utils.metadata_routing.MetadataRequest"),
101
109
  ("py:class", "julearn.inspect._pipeline.PipelineInspector"),
110
+ ("py:class", "sklearn.model_selection._split.*"),
111
+ ("py:class", "sklearn.metrics._scorer.*"),
102
112
  ]
103
113
 
114
+ to_ignore = ["array-like", "shape", "optional", "or", "the", "options",
115
+ "n_samples", "default=.*", "n_features", "n_outputs", "True",
116
+ "False"]
117
+
118
+ for i in to_ignore:
119
+ nitpick_ignore_regex.append(("py:class", i))
120
+
121
+ suppress_warnings = ["sphinx_autodoc_typehints", "config.cache"]
122
+
104
123
 
105
124
  # -- Options for HTML output -------------------------------------------------
106
125
 
@@ -143,8 +162,23 @@ html_sidebars = {
143
162
  # -- sphinx.ext.autodoc configuration ----------------------------------------
144
163
 
145
164
  autoclass_content = "both"
146
- autodoc_typehints = "description"
147
- autodoc_typehints_description_target = "documented"
165
+ # autodoc_typehints = "description"
166
+ # autodoc_typehints_description_target = "documented"
167
+ autodoc_type_aliases = {
168
+ "ColumnTypes": "julearn.base.column_types.ColumnTypes",
169
+ "Pipeline": "sklearn.pipeline.Pipeline",
170
+ "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",
180
+ }
181
+
148
182
 
149
183
  # -- sphinx.ext.autosummary configuration ------------------------------------
150
184
 
@@ -178,6 +212,7 @@ intersphinx_mapping = {
178
212
  "https://optuna-integration.readthedocs.io/en/stable",
179
213
  None,
180
214
  ),
215
+ "panel": ("https://panel.holoviz.org/", None),
181
216
  }
182
217
 
183
218
  # -- sphinx.ext.extlinks configuration ---------------------------------------
@@ -265,3 +300,67 @@ smv_released_pattern = r"^tags/v.*$"
265
300
  towncrier_draft_autoversion_mode = "draft"
266
301
  towncrier_draft_include_empty = True
267
302
  towncrier_draft_working_directory = PROJECT_ROOT_DIR
303
+
304
+ # -- sphinx_autodoc_typehints configuration ---------------------------------------
305
+ always_use_bars_union = True
306
+ simplify_optional_unions = True
307
+ typehints_defaults = "comma"
308
+ # Don't show return types at all
309
+ typehints_document_rtype = False
310
+
311
+ # Don't show "None" return types, but show all others
312
+ typehints_document_rtype_none = False
313
+
314
+ # Show the return type inline with the return description
315
+ # instead of as a separate block
316
+ typehints_use_rtype = False
317
+
318
+ def _get_canonical_type_alias_name(annotation: TypeAliasType) -> str:
319
+ """
320
+ Get canonical public qualified name for a TypeAliasType.
321
+
322
+ For types defined in private modules (e.g. ``numpy._typing.ArrayLike``),
323
+ search ``sys.modules`` for a public re-export
324
+ (e.g. ``numpy.typing.ArrayLike``).
325
+ """
326
+ module = getattr(annotation, "__module__", "") or ""
327
+ name = getattr(annotation, "__name__", "") or ""
328
+ if not module or not name:
329
+ return ""
330
+ if not any(part.startswith("_") for part in module.split(".")):
331
+ return f"{module}.{name}"
332
+ top_pkg = module.split(".")[0]
333
+ for mod_name in sorted(sys.modules):
334
+ if not mod_name.startswith(top_pkg):
335
+ continue
336
+ mod = sys.modules[mod_name]
337
+ if not isinstance(mod, types.ModuleType):
338
+ continue
339
+ if any(part.startswith("_") for part in mod_name.split(".")):
340
+ continue
341
+ if getattr(mod, name, None) is annotation:
342
+ return f"{mod_name}.{name}"
343
+ return f"{module}.{name}"
344
+
345
+
346
+ def _typehints_formatter(annotation, config):
347
+ """Handle formatting of PEP695 type aliases in sphinx-autodoc-typehints."""
348
+ if isinstance(annotation, TypeAliasType):
349
+ module = getattr(annotation, "__module__", "") or ""
350
+ name = getattr(annotation, "__name__", "") or ""
351
+ intersphinx_mapping = getattr(config, "intersphinx_mapping", {})
352
+ is_external = module and any(
353
+ module == pkg or module.startswith(f"{pkg}.")
354
+ for pkg in intersphinx_mapping
355
+ )
356
+ # Handle external PEP695 type aliases
357
+ if is_external and name:
358
+ canonical = _get_canonical_type_alias_name(annotation)
359
+ if canonical:
360
+ return f":py:obj:`~{canonical}`"
361
+ # Unwrap internal PEP695 type aliases to their underlying types
362
+ return format_annotation(annotation.__value__, config)
363
+ return None
364
+
365
+
366
+ typehints_formatter = _typehints_formatter
@@ -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.3.6.dev17'
22
- __version_tuple__ = version_tuple = (0, 3, 6, 'dev17')
21
+ __version__ = version = '0.3.6.dev33'
22
+ __version_tuple__ = version_tuple = (0, 3, 6, 'dev33')
23
23
 
24
- __commit_id__ = commit_id = 'g591f6791b'
24
+ __commit_id__ = commit_id = 'gd95c8f6d1'
@@ -5,7 +5,6 @@
5
5
  # License: AGPL
6
6
 
7
7
  import inspect
8
- from typing import Optional, Union
9
8
 
10
9
  import numpy as np
11
10
  import pandas as pd
@@ -36,24 +35,24 @@ sklearn.set_config(enable_metadata_routing=True)
36
35
  def _validate_api_params( # noqa: C901
37
36
  X: list[str], # noqa: N803
38
37
  y: str,
39
- model: Union[str, PipelineCreator, BaseEstimator, list[PipelineCreator]],
38
+ model: str | PipelineCreator | BaseEstimator | list[PipelineCreator],
40
39
  data: pd.DataFrame,
41
- X_types: Optional[dict] = None, # noqa: N803
42
- problem_type: Optional[str] = None,
43
- preprocess: Union[None, str, list[str]] = None,
44
- return_estimator: Optional[str] = None,
40
+ X_types: dict | None = None, # noqa: N803
41
+ problem_type: str | None = None,
42
+ preprocess: None | str | list[str] = None,
43
+ return_estimator: str | None = None,
45
44
  return_inspector: bool = False,
46
- groups: Optional[str] = None,
47
- pos_labels: Union[str, list[str], None] = None,
48
- model_params: Optional[dict] = None,
49
- search_params: Optional[dict] = None,
50
- seed: Optional[int] = None,
45
+ groups: str | None = None,
46
+ pos_labels: str | list[str] | None = None,
47
+ model_params: dict | None = None,
48
+ search_params: dict | None = None,
49
+ seed: int | None = None,
51
50
  ) -> tuple[
52
51
  pd.DataFrame,
53
52
  pd.Series,
54
- Optional[pd.Series],
55
- Union[Pipeline, BaseSearchCV],
56
- Optional[str],
53
+ pd.Series | None,
54
+ Pipeline | BaseSearchCV,
55
+ str | None,
57
56
  bool,
58
57
  bool,
59
58
  str,
@@ -215,7 +214,7 @@ def _validate_api_params( # noqa: C901
215
214
  )
216
215
 
217
216
  wrap_score = False
218
- if isinstance(model, (PipelineCreator, list)):
217
+ if isinstance(model, PipelineCreator | list):
219
218
  logger.debug(
220
219
  "Generating pipeline from PipelineCreator or list of them"
221
220
  )
@@ -278,7 +277,7 @@ def _validate_api_params( # noqa: C901
278
277
  wrap_score = True
279
278
  problem_type = model[0].problem_type
280
279
 
281
- elif not isinstance(model, (str, BaseEstimator)):
280
+ elif not isinstance(model, str | BaseEstimator):
282
281
  raise_error(
283
282
  "Model has to be a PipelineCreator, a string or a "
284
283
  "scikit-learn compatible model."
@@ -409,23 +408,23 @@ def _check_configure_joblib_backend() -> None:
409
408
  def run_cross_validation(
410
409
  X: list[str], # noqa: N803
411
410
  y: str,
412
- model: Union[str, PipelineCreator, BaseEstimator, list[PipelineCreator]],
411
+ model: str | PipelineCreator | BaseEstimator | list[PipelineCreator],
413
412
  data: pd.DataFrame,
414
- X_types: Optional[dict] = None, # noqa: N803
415
- problem_type: Optional[str] = None,
416
- preprocess: Union[None, str, list[str]] = None,
417
- return_estimator: Optional[str] = None,
413
+ X_types: dict | None = None, # noqa: N803
414
+ problem_type: str | None = None,
415
+ preprocess: None | str | list[str] = None,
416
+ return_estimator: str | None = None,
418
417
  return_inspector: bool = False,
419
418
  return_train_score: bool = False,
420
- cv: Optional[CVLike] = None,
421
- groups: Optional[str] = None,
422
- scoring: Union[str, list[str], None] = None,
423
- pos_labels: Union[str, list[str], None] = None,
424
- model_params: Optional[dict] = None,
425
- search_params: Optional[dict] = None,
426
- seed: Optional[int] = None,
427
- n_jobs: Optional[int] = None,
428
- verbose: Optional[int] = 0,
419
+ cv: CVLike | None = None,
420
+ groups: str | None = None,
421
+ scoring: str | list[str] | None = None,
422
+ pos_labels: str | list[str] | None = None,
423
+ model_params: dict | None = None,
424
+ search_params: dict | None = None,
425
+ seed: int | None = None,
426
+ n_jobs: int | None = None,
427
+ verbose: int | None = 0,
429
428
  ):
430
429
  """Run cross validation and score.
431
430
 
@@ -706,17 +705,17 @@ def run_cross_validation(
706
705
  def run_fit(
707
706
  X: list[str], # noqa: N803
708
707
  y: str,
709
- model: Union[str, PipelineCreator, BaseEstimator, list[PipelineCreator]],
708
+ model: str | PipelineCreator | BaseEstimator | list[PipelineCreator],
710
709
  data: pd.DataFrame,
711
- X_types: Optional[dict] = None, # noqa: N803
712
- problem_type: Optional[str] = None,
713
- preprocess: Union[None, str, list[str]] = None,
714
- groups: Optional[str] = None,
715
- pos_labels: Union[str, list[str], None] = None,
716
- model_params: Optional[dict] = None,
717
- search_params: Optional[dict] = None,
718
- seed: Optional[int] = None,
719
- verbose: Optional[int] = 0,
710
+ X_types: dict | None = None, # noqa: N803
711
+ problem_type: str | None = None,
712
+ preprocess: None | str | list[str] = None,
713
+ groups: str | None = None,
714
+ pos_labels: str | list[str] | None = None,
715
+ model_params: dict | None = None,
716
+ search_params: dict | None = None,
717
+ seed: int | None = None,
718
+ verbose: int | None = 0,
720
719
  ):
721
720
  """Fit the model on all the data.
722
721
 
@@ -9,7 +9,6 @@ from .column_types import (
9
9
  get_column_type,
10
10
  make_type_selector,
11
11
  ColumnTypes,
12
- ColumnTypesLike,
13
12
  ensure_column_types,
14
13
  )
15
14