julearn 0.3.5.dev112__tar.gz → 0.3.5.dev124__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.
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/PKG-INFO +4 -4
- julearn-0.3.5.dev124/docs/changes/newsfragments/297.bugfix +1 -0
- julearn-0.3.5.dev124/docs/changes/newsfragments/297.misc +1 -0
- julearn-0.3.5.dev124/docs/changes/newsfragments/299.misc +1 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/plot_cm_acc_multiclass.py +1 -1
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_model_inspection_docs.py +1 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/_version.py +3 -3
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/external/optuna_searchcv.py +4 -7
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/prepare.py +12 -1
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/tests/test_prepare.py +10 -1
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/confound_remover.py +1 -1
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/viz/_scores.py +1 -1
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn.egg-info/PKG-INFO +4 -4
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn.egg-info/SOURCES.txt +4 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn.egg-info/requires.txt +3 -3
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/pyproject.toml +3 -3
- julearn-0.3.5.dev124/uv.lock +4047 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/ISSUE_TEMPLATE/documentation_request.yaml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/dependabot.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/check-stale.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/ci-docs.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/ci.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/docs-preview.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/docs.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/lint.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.github/workflows/publish.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.gitignore +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/.pre-commit-config.yaml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/AUTHORS.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/LICENSE.md +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/README.md +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/codecov.yml +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/Makefile +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/_static/css/custom.css +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/_static/js/custom.js +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/_templates/class.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/_templates/function.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/_templates/function_warning.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/_templates/versions.html +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/base.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/config.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/index.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/inspect.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/main.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/model_selection.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/models.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/pipeline.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/prepare.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/scoring.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/stats.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/transformers.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/utils.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/api/viz.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/available_pipeline_steps.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/contributors.inc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/.gitignore +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/226.bugfix +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/226.feature +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/254.bugfix +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/254.change +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/277.enh +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/278.doc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/279.doc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/282.doc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/283.doc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/284.misc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/285.bugfix +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/286.bugfix +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/288.bugfix +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/changes/newsfragments/291.bugfix +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/conf.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/configuration.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/contributing.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/examples.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/faq.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/getting_started.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/corrected_ttest.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/final_estimator.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/iris_X.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/iris_df.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/iris_y.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/joblib_htcondor/condor_q.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/joblib_htcondor/ui_main.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/joblib_htcondor/ui_open.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/joblib_htcondor/ui_stacked.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_calm.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_confbias.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_cv.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_generalization.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_it.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_ml.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/julearn_logo_mlit.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/multiple_scorers_run_cv.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/plot_scores.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/scores_run_cv.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/scores_run_cv_splitter.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/images/scores_run_cv_train.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/index.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/links.inc +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/maintaining.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/redirect.html +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/CBPM.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/confound_removal.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/cross_validation_splitter.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/hyperparameter_tuning.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/index.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/joblib.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/model_inspect.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/stacked_models.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/selected_deeper_topics/target_transformers.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/what_really_need_know/cross_validation.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/what_really_need_know/data.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/what_really_need_know/index.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/what_really_need_know/model_comparison.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/what_really_need_know/model_evaluation.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/what_really_need_know/pipeline.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/docs/whats_new.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/plot_example_regression.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/plot_stratified_kfold_reg.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/run_combine_pandas.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/run_grouped_cv.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/run_simple_binary_classification.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/01_model_comparison/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/01_model_comparison/plot_simple_model_comparison.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/02_inspection/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/02_inspection/plot_groupcv_inspect_svm.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/02_inspection/plot_inspect_random_forest.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/02_inspection/plot_preprocess.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/02_inspection/run_binary_inspect_folds.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_apply_to_target.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_example_pca_featsets.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_generate_target.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_hyperparameter_multiple_grids.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_hyperparameter_tuning.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_hyperparameter_tuning_bayessearch.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/03_complex_models/run_stacked_models.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/04_confounds/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/04_confounds/plot_confound_removal_classification.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/04_confounds/run_return_confounds.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/05_customization/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/05_customization/run_custom_scorers_regression.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_cbpm_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_confound_removal_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_cv_splitters_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_data_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_hyperparameters_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_model_comparison_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_model_evaluation_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_pipeline_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_stacked_models_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/99_docs/run_target_transformer_docs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/README.rst +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/XX_disabled/dis_run_n_jobs.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/XX_disabled/dis_run_target_confound_removal.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/ignore_words.txt +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/api.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/base/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/base/column_types.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/base/estimators.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/base/tests/test_base_estimators.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/base/tests/test_column_types.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/config.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/conftest.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/_cv.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/_pipeline.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/_preprocess.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/inspector.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/tests/test_cv.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/tests/test_inspector.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/tests/test_pipeline.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/inspect/tests/test_preprocess.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/_optuna_searcher.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/_skopt_searcher.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/available_searchers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/continuous_stratified_kfold.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/final_model_cv.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/stratified_bootstrap.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/tests/test_available_searchers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/tests/test_continous_stratified_kfold.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/tests/test_final_model_cv.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/tests/test_optuna_searcher.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/tests/test_skopt_searcher.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/tests/test_stratified_bootstrap.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/model_selection/utils.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/models/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/models/available_models.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/models/dynamic.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/models/tests/test_available_models.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/models/tests/test_dynamic.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/models/tests/test_models.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/merger.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/pipeline_creator.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/target_pipeline.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/target_pipeline_creator.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/tests/test_merger.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/tests/test_pipeline_creator.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/tests/test_target_pipeline.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/pipeline/tests/test_target_pipeline_creator.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/scoring/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/scoring/available_scorers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/scoring/metrics.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/scoring/tests/test_available_scorers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/scoring/tests/test_metrics.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/stats/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/stats/corrected_ttest.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/stats/tests/test_corrected_ttest.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/tests/test_api.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/tests/test_config.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/available_transformers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/cbpm.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/change_column_types.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/drop_columns.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/filter_columns.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/pick_columns.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/set_column_types.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/tests/test_change_column_types.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/tests/test_drop_columns.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/tests/test_filter_columns.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/dataframe/tests/test_set_column_types.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/ju_column_transformer.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/available_target_transformers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/ju_generated_target_model.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/ju_target_transformer.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/ju_transformed_target_model.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/target_confound_remover.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/tests/test_available_target_transformers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/tests/test_ju_generated_target_model.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/tests/test_ju_target_transformer.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/tests/test_ju_transformed_target_model.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/target/tests/test_target_confound_remover.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/tests/test_available_transformers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/tests/test_cbpm.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/tests/test_confounds.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/transformers/tests/test_jucolumntransformers.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/_cv.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/checks.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/logging.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/testing.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/tests/test_logging.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/tests/test_version.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/typing.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/utils/versions.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/viz/__init__.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn/viz/res/julearn_logo_generalization.png +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn.egg-info/dependency_links.txt +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/julearn.egg-info/top_level.txt +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/setup.cfg +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/setup.py +0 -0
- {julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: julearn
|
|
3
|
-
Version: 0.3.5.
|
|
3
|
+
Version: 0.3.5.dev124
|
|
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>
|
|
@@ -27,10 +27,10 @@ Requires-Python: >=3.9
|
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
28
28
|
License-File: LICENSE.md
|
|
29
29
|
License-File: AUTHORS.rst
|
|
30
|
-
Requires-Dist: numpy<
|
|
31
|
-
Requires-Dist: pandas<
|
|
30
|
+
Requires-Dist: numpy<3.0.0,>=1.26.0
|
|
31
|
+
Requires-Dist: pandas<4.0.0,>=2.1.0
|
|
32
32
|
Requires-Dist: statsmodels<0.15,>=0.13
|
|
33
|
-
Requires-Dist: scikit-learn<1.
|
|
33
|
+
Requires-Dist: scikit-learn<1.9.0,>=1.5.0
|
|
34
34
|
Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
|
|
35
35
|
Provides-Extra: dev
|
|
36
36
|
Requires-Dist: tox; extra == "dev"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Fix a bug in which ``OptunaSearchCV`` would fail when expecting the ``group`` parameter in the ``fit`` method by `Fede Raimondo`_.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Update julearn.viz module to support param version 2.3.0 by `Fede Raimondo`_
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Update versions of dependencies in pyproject.toml to support pandas 3.X.X, numpy 2.X.X and scikit-learn 1.8.X by `Fede Raimondo`_
|
{julearn-0.3.5.dev112 → julearn-0.3.5.dev124}/examples/00_starting/plot_cm_acc_multiclass.py
RENAMED
|
@@ -89,7 +89,7 @@ print(cm)
|
|
|
89
89
|
###############################################################################
|
|
90
90
|
# Now that we have our confusion matrix, let's build another matrix with
|
|
91
91
|
# annotations.
|
|
92
|
-
cm_sum = np.sum(cm, axis=1
|
|
92
|
+
cm_sum = np.sum(cm, axis=1)
|
|
93
93
|
cm_perc = cm / cm_sum.astype(float) * 100
|
|
94
94
|
annot = np.empty_like(cm).astype(str)
|
|
95
95
|
nrows, ncols = cm.shape
|
|
@@ -57,6 +57,7 @@ penguins_df = penguins_df.query("species != 'Chinstrap'").dropna()
|
|
|
57
57
|
penguins_df["species"] = penguins_df["species"].replace(
|
|
58
58
|
{"Adelie": 0, "Gentoo": 1}
|
|
59
59
|
)
|
|
60
|
+
penguins_df["species"] = penguins_df["species"].astype(int)
|
|
60
61
|
features = [x for x in penguins_df.columns if x != "species"]
|
|
61
62
|
|
|
62
63
|
##############################################################################
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.3.5.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 3, 5, '
|
|
31
|
+
__version__ = version = '0.3.5.dev124'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 5, 'dev124')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g90c95d23b'
|
|
@@ -58,6 +58,7 @@ with try_import() as _imports:
|
|
|
58
58
|
|
|
59
59
|
import sklearn
|
|
60
60
|
from sklearn.base import BaseEstimator
|
|
61
|
+
from sklearn.model_selection._search import BaseSearchCV
|
|
61
62
|
from sklearn.base import clone
|
|
62
63
|
from sklearn.base import is_classifier
|
|
63
64
|
from sklearn.metrics import check_scoring
|
|
@@ -402,7 +403,7 @@ class _Objective:
|
|
|
402
403
|
|
|
403
404
|
|
|
404
405
|
@experimental_class("0.17.0")
|
|
405
|
-
class OptunaSearchCV(BaseEstimator):
|
|
406
|
+
class OptunaSearchCV(BaseSearchCV, BaseEstimator):
|
|
406
407
|
"""Hyperparameter search with cross-validation.
|
|
407
408
|
|
|
408
409
|
Args:
|
|
@@ -629,7 +630,6 @@ class OptunaSearchCV(BaseEstimator):
|
|
|
629
630
|
|
|
630
631
|
return self.study_.user_attrs
|
|
631
632
|
|
|
632
|
-
@property
|
|
633
633
|
def decision_function(self) -> Callable[..., OneDimArrayLikeType | TwoDimArrayLikeType]:
|
|
634
634
|
"""Call ``decision_function`` on the best estimator.
|
|
635
635
|
|
|
@@ -641,7 +641,6 @@ class OptunaSearchCV(BaseEstimator):
|
|
|
641
641
|
|
|
642
642
|
return self.best_estimator_.decision_function
|
|
643
643
|
|
|
644
|
-
@property
|
|
645
644
|
def inverse_transform(self) -> Callable[..., TwoDimArrayLikeType]:
|
|
646
645
|
"""Call ``inverse_transform`` on the best estimator.
|
|
647
646
|
|
|
@@ -653,7 +652,7 @@ class OptunaSearchCV(BaseEstimator):
|
|
|
653
652
|
|
|
654
653
|
return self.best_estimator_.inverse_transform
|
|
655
654
|
|
|
656
|
-
|
|
655
|
+
|
|
657
656
|
def predict(self) -> Callable[..., OneDimArrayLikeType | TwoDimArrayLikeType]:
|
|
658
657
|
"""Call ``predict`` on the best estimator.
|
|
659
658
|
|
|
@@ -665,7 +664,6 @@ class OptunaSearchCV(BaseEstimator):
|
|
|
665
664
|
|
|
666
665
|
return self.best_estimator_.predict
|
|
667
666
|
|
|
668
|
-
@property
|
|
669
667
|
def predict_log_proba(self) -> Callable[..., TwoDimArrayLikeType]:
|
|
670
668
|
"""Call ``predict_log_proba`` on the best estimator.
|
|
671
669
|
|
|
@@ -677,7 +675,6 @@ class OptunaSearchCV(BaseEstimator):
|
|
|
677
675
|
|
|
678
676
|
return self.best_estimator_.predict_log_proba
|
|
679
677
|
|
|
680
|
-
@property
|
|
681
678
|
def predict_proba(self) -> Callable[..., TwoDimArrayLikeType]:
|
|
682
679
|
"""Call ``predict_proba`` on the best estimator.
|
|
683
680
|
|
|
@@ -709,7 +706,7 @@ class OptunaSearchCV(BaseEstimator):
|
|
|
709
706
|
|
|
710
707
|
return self.study_.set_user_attr
|
|
711
708
|
|
|
712
|
-
|
|
709
|
+
|
|
713
710
|
def transform(self) -> Callable[..., TwoDimArrayLikeType]:
|
|
714
711
|
"""Call ``transform`` on the best estimator.
|
|
715
712
|
|
|
@@ -395,6 +395,15 @@ def check_consistency(
|
|
|
395
395
|
# Check problem type and the target.
|
|
396
396
|
n_classes = np.unique(y.values).shape[0] # type: ignore
|
|
397
397
|
if problem_type == "classification":
|
|
398
|
+
is_numeric = isinstance(y.values.dtype, np.dtype) and np.issubdtype(
|
|
399
|
+
y.values.dtype, np.number
|
|
400
|
+
) # type: ignore
|
|
401
|
+
if not is_numeric:
|
|
402
|
+
warn_with_log(
|
|
403
|
+
f"The kind of values in y ({y.values.dtype}) is not "
|
|
404
|
+
"suitable for a classification. Values should be numeric."
|
|
405
|
+
)
|
|
406
|
+
|
|
398
407
|
# If not exactly two classes:
|
|
399
408
|
if n_classes == 1:
|
|
400
409
|
raise_error(
|
|
@@ -417,7 +426,9 @@ def check_consistency(
|
|
|
417
426
|
logger.info("Binary classification problem detected.")
|
|
418
427
|
elif problem_type == "regression":
|
|
419
428
|
# Regression
|
|
420
|
-
is_numeric =
|
|
429
|
+
is_numeric = isinstance(y.values.dtype, np.dtype) and np.issubdtype(
|
|
430
|
+
y.values.dtype, np.number
|
|
431
|
+
) # type: ignore
|
|
421
432
|
if not is_numeric:
|
|
422
433
|
warn_with_log(
|
|
423
434
|
f"The kind of values in y ({y.values.dtype}) is not "
|
|
@@ -701,7 +701,16 @@ def test_check_consistency() -> None:
|
|
|
701
701
|
with pytest.warns(RuntimeWarning, match="larger than the number"):
|
|
702
702
|
check_consistency(y=y, cv=cv, groups=groups, problem_type=problem_type)
|
|
703
703
|
|
|
704
|
-
# Test with wrong
|
|
704
|
+
# Test with wrong dtype in series
|
|
705
|
+
y = pd.Series(np.random.randint(0, 2, size=10)).astype(object)
|
|
706
|
+
problem_type = "classification"
|
|
707
|
+
groups = None
|
|
708
|
+
cv = 5
|
|
709
|
+
with pytest.warns(RuntimeWarning, match="should be numeric"):
|
|
710
|
+
check_consistency(y=y, cv=cv, groups=groups, problem_type=problem_type)
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
# Test with wrong dtype in series
|
|
705
714
|
y = pd.Series(["A"] * 10)
|
|
706
715
|
problem_type = "regression"
|
|
707
716
|
groups = None
|
|
@@ -259,7 +259,7 @@ class ConfoundRemover(JuTransformer):
|
|
|
259
259
|
if self.threshold is not None:
|
|
260
260
|
# Accounting for correlated rounding errors for very small
|
|
261
261
|
# residuals
|
|
262
|
-
residuals = residuals.
|
|
262
|
+
residuals = residuals.map( # type: ignore
|
|
263
263
|
lambda x: 0 if abs(x) <= self.threshold else x
|
|
264
264
|
)
|
|
265
265
|
return residuals
|
|
@@ -44,7 +44,7 @@ class _JulearnScoresViewer(param.Parameterized):
|
|
|
44
44
|
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
|
-
metric = param.Selector([], default=None) # type: ignore
|
|
47
|
+
metric = param.Selector(objects=[], default=None) # type: ignore
|
|
48
48
|
models: Sequence = param.ListSelector(default=None, objects=[])
|
|
49
49
|
sets: Sequence = param.ListSelector(default=None, objects=[])
|
|
50
50
|
show_stats: bool = param.Boolean(False)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: julearn
|
|
3
|
-
Version: 0.3.5.
|
|
3
|
+
Version: 0.3.5.dev124
|
|
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>
|
|
@@ -27,10 +27,10 @@ Requires-Python: >=3.9
|
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
28
28
|
License-File: LICENSE.md
|
|
29
29
|
License-File: AUTHORS.rst
|
|
30
|
-
Requires-Dist: numpy<
|
|
31
|
-
Requires-Dist: pandas<
|
|
30
|
+
Requires-Dist: numpy<3.0.0,>=1.26.0
|
|
31
|
+
Requires-Dist: pandas<4.0.0,>=2.1.0
|
|
32
32
|
Requires-Dist: statsmodels<0.15,>=0.13
|
|
33
|
-
Requires-Dist: scikit-learn<1.
|
|
33
|
+
Requires-Dist: scikit-learn<1.9.0,>=1.5.0
|
|
34
34
|
Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
|
|
35
35
|
Provides-Extra: dev
|
|
36
36
|
Requires-Dist: tox; extra == "dev"
|
|
@@ -8,6 +8,7 @@ ignore_words.txt
|
|
|
8
8
|
pyproject.toml
|
|
9
9
|
setup.py
|
|
10
10
|
tox.ini
|
|
11
|
+
uv.lock
|
|
11
12
|
.github/dependabot.yml
|
|
12
13
|
.github/ISSUE_TEMPLATE/bug_report.yaml
|
|
13
14
|
.github/ISSUE_TEMPLATE/config.yml
|
|
@@ -69,6 +70,9 @@ docs/changes/newsfragments/285.bugfix
|
|
|
69
70
|
docs/changes/newsfragments/286.bugfix
|
|
70
71
|
docs/changes/newsfragments/288.bugfix
|
|
71
72
|
docs/changes/newsfragments/291.bugfix
|
|
73
|
+
docs/changes/newsfragments/297.bugfix
|
|
74
|
+
docs/changes/newsfragments/297.misc
|
|
75
|
+
docs/changes/newsfragments/299.misc
|
|
72
76
|
docs/images/corrected_ttest.png
|
|
73
77
|
docs/images/final_estimator.png
|
|
74
78
|
docs/images/iris_X.png
|
|
@@ -34,10 +34,10 @@ classifiers = [
|
|
|
34
34
|
"Programming Language :: Python :: 3.13",
|
|
35
35
|
]
|
|
36
36
|
dependencies = [
|
|
37
|
-
"numpy>=1.26.0,<
|
|
38
|
-
"pandas>=2.
|
|
37
|
+
"numpy>=1.26.0,<3.0.0",
|
|
38
|
+
"pandas>=2.1.0,<4.0.0",
|
|
39
39
|
"statsmodels>=0.13,<0.15",
|
|
40
|
-
"scikit-learn>=1.5.0,<1.
|
|
40
|
+
"scikit-learn>=1.5.0,<1.9.0",
|
|
41
41
|
"looseversion==1.3.0; python_version>='3.12'",
|
|
42
42
|
]
|
|
43
43
|
dynamic = ["version"]
|