Skip to content

Commit b6fc758

Browse files
committed
Merge branch 'main' into pr/1566
2 parents f533844 + 3a05157 commit b6fc758

24 files changed

Lines changed: 248 additions & 170 deletions

.github/workflows/dist.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
dist:
2424
runs-on: ubuntu-latest
2525
steps:
26-
- uses: actions/checkout@v4
26+
- uses: actions/checkout@v6
2727
- name: Setup Python
2828
uses: actions/setup-python@v5
2929
with:

.github/workflows/docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
build-and-deploy:
2323
runs-on: ubuntu-latest
2424
steps:
25-
- uses: actions/checkout@v4
25+
- uses: actions/checkout@v6
2626
with:
2727
fetch-depth: 0
2828
- name: Setup Python

.github/workflows/release_docker.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
password: ${{ secrets.DOCKERHUB_TOKEN }}
3535

3636
- name: Check out the repo
37-
uses: actions/checkout@v4
37+
uses: actions/checkout@v6
3838

3939
- name: Extract metadata (tags, labels) for Docker Hub
4040
id: meta_dockerhub

.github/workflows/test.yml

Lines changed: 125 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -24,123 +24,141 @@ jobs:
2424
test:
2525
name: (${{ matrix.os }},Py${{ matrix.python-version }},sk${{ matrix.scikit-learn }},sk-only:${{ matrix.sklearn-only }})
2626
runs-on: ${{ matrix.os }}
27+
2728
strategy:
2829
fail-fast: false
2930
matrix:
30-
include:
31-
- os: ubuntu-latest
32-
python-version: "3.10"
33-
scikit-learn: "1.0.*"
34-
scipy: "1.10.0"
35-
sklearn-only: true
36-
- os: ubuntu-latest
37-
python-version: "3.11"
31+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
32+
scikit-learn: ["1.3.*", "1.4.*", "1.5.*", "1.6.*", "1.7.*"]
33+
os: [ubuntu-latest]
34+
sklearn-only: ["true"]
35+
36+
exclude:
37+
# incompatible version combinations
38+
- python-version: "3.13"
3839
scikit-learn: "1.3.*"
39-
scipy: "1.10.0"
40-
sklearn-only: true
41-
- os: ubuntu-latest
42-
python-version: "3.12"
43-
scikit-learn: "1.5.*"
44-
scipy: ">=1.11"
45-
sklearn-only: true
46-
- os: ubuntu-latest
47-
python-version: "3.13"
48-
scikit-learn: "1.6.*"
49-
scipy: ">=1.10"
50-
sklearn-only: true
51-
- os: ubuntu-latest
52-
python-version: "3.14"
53-
scikit-learn: "1.7.*"
54-
scipy: ">=1.10"
55-
sklearn-only: true
40+
- python-version: "3.13"
41+
scikit-learn: "1.4.*"
42+
43+
include:
44+
# Full test run on Windows
5645
- os: windows-latest
57-
python-version: "3.10"
46+
python-version: "3.12"
5847
scikit-learn: "1.5.*"
59-
scipy: "1.10.1"
60-
sklearn-only: false
61-
- os: windows-latest
62-
python-version: "3.13"
63-
scikit-learn: "1.6.*"
64-
scipy: ">=1.10"
65-
sklearn-only: false
48+
sklearn-only: "false"
49+
50+
# Coverage run
6651
- os: ubuntu-latest
67-
code-cov: false
68-
python-version: "3.10"
52+
python-version: "3.12"
6953
scikit-learn: "1.5.*"
70-
scipy: ">=1.10"
71-
sklearn-only: false
54+
sklearn-only: "false"
55+
code-cov: true
56+
7257
steps:
73-
- uses: actions/checkout@v4
74-
with:
75-
fetch-depth: 2
76-
- name: Setup Python ${{ matrix.python-version }}
77-
uses: actions/setup-python@v5
78-
with:
79-
python-version: ${{ matrix.python-version }}
80-
allow-prereleases: true
81-
- name: Install test dependencies
82-
run: |
83-
python -m pip install --upgrade pip
84-
pip install -e .[test]
85-
- name: Install scikit-learn ${{ matrix.scikit-learn }}
86-
run: |
87-
pip install scikit-learn==${{ matrix.scikit-learn }}
88-
- name: "Install NumPy 1.x and SciPy <1.11 for scikit-learn < 1.4"
89-
if: ${{ contains(fromJSON('["1.0.*", "1.1.*", "1.2.*", "1.3.*"]'), matrix.scikit-learn) }}
90-
shell: bash
91-
run: |
92-
# scipy has a change to the 'mode' behavior which breaks scikit-learn < 1.4
93-
# numpy 2.0 has several breaking changes
94-
pip install "numpy<2.0" "scipy<1.11"
95-
- name: Install scipy ${{ matrix.scipy }}
96-
if: ${{ matrix.scipy }}
97-
run: |
98-
pip install scipy${{ matrix.scipy }}
99-
- name: Store repository status
100-
id: status-before
101-
if: matrix.os != 'windows-latest'
102-
run: |
103-
git_status=$(git status --porcelain -b)
104-
echo "BEFORE=$git_status" >> $GITHUB_ENV
105-
echo "Repository status before tests: $git_status"
106-
- name: Show installed dependencies
107-
run: python -m pip list
108-
- name: Run tests on Ubuntu Test
109-
if: matrix.os == 'ubuntu-latest'
110-
run: |
111-
if [ "${{ matrix.code-cov }}" = "true" ]; then codecov='--cov=openml --long --cov-report=xml'; fi
112-
# Most of the time, running only the scikit-learn tests is sufficient
113-
if [ "${{ matrix.sklearn-only }}" = "true" ]; then marks='sklearn and not production'; else marks='not production'; fi
114-
echo pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks"
115-
pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks"
116-
- name: Run tests on Ubuntu Production
117-
if: matrix.os == 'ubuntu-latest'
118-
run: |
119-
if [ "${{ matrix.code-cov }}" = "true" ]; then codecov='--cov=openml --long --cov-report=xml'; fi
120-
# Most of the time, running only the scikit-learn tests is sufficient
121-
if [ "${{ matrix.sklearn-only }}" = "true" ]; then marks='sklearn and production'; else marks='production'; fi
122-
echo pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks"
123-
pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks"
124-
- name: Run tests on Windows
125-
if: matrix.os == 'windows-latest'
126-
run: |
127-
pytest -n 4 --durations=20 --dist load -sv --reruns 5 --reruns-delay 1
128-
- name: Check for files left behind by test
129-
if: matrix.os != 'windows-latest' && always()
130-
run: |
131-
before="${{ env.BEFORE }}"
132-
after="$(git status --porcelain -b)"
133-
if [[ "$before" != "$after" ]]; then
58+
- uses: actions/checkout@v6
59+
with:
60+
fetch-depth: 2
61+
62+
- name: Setup Python ${{ matrix.python-version }}
63+
uses: actions/setup-python@v5
64+
with:
65+
python-version: ${{ matrix.python-version }}
66+
67+
- name: Install test dependencies and scikit-learn
68+
run: |
69+
python -m pip install --upgrade pip
70+
pip install -e .[test] scikit-learn==${{ matrix.scikit-learn }}
71+
72+
- name: Store repository status
73+
id: status-before
74+
if: matrix.os != 'windows-latest'
75+
run: |
76+
git_status=$(git status --porcelain -b)
77+
echo "BEFORE=$git_status" >> $GITHUB_ENV
78+
echo "Repository status before tests: $git_status"
79+
80+
- name: Show installed dependencies
81+
run: python -m pip list
82+
83+
- name: Run tests on Ubuntu Test
84+
if: matrix.os == 'ubuntu-latest'
85+
run: |
86+
if [ "${{ matrix.code-cov }}" = "true" ]; then
87+
codecov="--cov=openml --long --cov-report=xml"
88+
fi
89+
90+
if [ "${{ matrix.sklearn-only }}" = "true" ]; then
91+
marks="sklearn and not production"
92+
else
93+
marks="not production"
94+
fi
95+
96+
pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks"
97+
98+
- name: Run tests on Ubuntu Production
99+
if: matrix.os == 'ubuntu-latest'
100+
run: |
101+
if [ "${{ matrix.code-cov }}" = "true" ]; then
102+
codecov="--cov=openml --long --cov-report=xml"
103+
fi
104+
105+
if [ "${{ matrix.sklearn-only }}" = "true" ]; then
106+
marks="sklearn and production"
107+
else
108+
marks="production"
109+
fi
110+
111+
pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks"
112+
113+
- name: Run tests on Windows
114+
if: matrix.os == 'windows-latest'
115+
run: | # we need a separate step because of the bash-specific if-statement in the previous one.
116+
pytest -n 4 --durations=20 --dist load -sv --reruns 5 --reruns-delay 1
117+
118+
- name: Check for files left behind by test
119+
if: matrix.os != 'windows-latest' && always()
120+
run: |
121+
before="${{ env.BEFORE }}"
122+
after="$(git status --porcelain -b)"
123+
if [[ "$before" != "$after" ]]; then
134124
echo "git status from before: $before"
135125
echo "git status from after: $after"
136126
echo "Not all generated files have been deleted!"
137127
exit 1
138-
fi
139-
- name: Upload coverage
140-
if: matrix.code-cov && always()
141-
uses: codecov/codecov-action@v4
142-
with:
143-
files: coverage.xml
144-
token: ${{ secrets.CODECOV_TOKEN }}
145-
fail_ci_if_error: true
146-
verbose: true
128+
fi
129+
130+
- name: Upload coverage
131+
if: matrix.code-cov && always()
132+
uses: codecov/codecov-action@v4
133+
with:
134+
files: coverage.xml
135+
token: ${{ secrets.CODECOV_TOKEN }}
136+
fail_ci_if_error: true
137+
verbose: true
138+
139+
dummy_windows_py_sk024:
140+
name: (windows-latest, Py, sk0.24.*, sk-only:false)
141+
runs-on: ubuntu-latest
142+
steps:
143+
- name: Dummy step
144+
run: |
145+
echo "This is a temporary dummy job."
146+
echo "Always succeeds."
147+
148+
dummy_windows_py_sk023:
149+
name: (ubuntu-latest, Py3.8, sk0.23.1, sk-only:false)
150+
runs-on: ubuntu-latest
151+
steps:
152+
- name: Dummy step
153+
run: |
154+
echo "This is a temporary dummy job."
155+
echo "Always succeeds."
156+
157+
dummy_docker:
158+
name: docker
159+
runs-on: ubuntu-latest
160+
steps:
161+
- name: Dummy step
162+
run: |
163+
echo "This is a temporary dummy docker job."
164+
echo "Always succeeds."

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ target/
8888
.idea
8989
*.swp
9090
.vscode
91+
.cursorignore
92+
.cursorindexingignore
9193

9294
# MYPY
9395
.mypy_cache
@@ -96,14 +98,17 @@ dmypy.sock
9698

9799
# Tests
98100
.pytest_cache
99-
.venv
100101

101102
# Virtual environments
102103
oenv/
103104
venv/
104105
.env/
106+
.venv
105107
.venv/
106108

107109
# Python cache
108110
__pycache__/
109111
*.pyc
112+
113+
# Ruff
114+
.ruff-cache/

mkdocs.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ plugins:
127127
docstring_options:
128128
ignore_init_summary: true
129129
trim_doctest_flags: true
130-
returns_multiple_items: false
131130
show_docstring_attributes: true
132131
show_docstring_description: true
133132
show_root_heading: true
@@ -138,7 +137,7 @@ plugins:
138137
merge_init_into_class: true
139138
show_symbol_type_heading: true
140139
show_symbol_type_toc: true
141-
docstring_style: google
140+
docstring_style: numpy
142141
inherited_members: true
143142
show_if_no_docstring: false
144143
show_bases: true

0 commit comments

Comments
 (0)