From fd062f7840be5d0fd3a3d3e26cd4fdc14aa82dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 16:55:05 +0100 Subject: [PATCH 1/8] Update test.yml --- .github/workflows/test.yml | 93 ++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 49 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 31cdff602..b3108ff59 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,6 @@ on: branches: - main - develop - concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true @@ -23,70 +22,48 @@ jobs: test: name: (${{ matrix.os }}, Py${{ matrix.python-version }}, sk${{ matrix.scikit-learn }}, sk-only:${{ matrix.sklearn-only }}) runs-on: ${{ matrix.os }} + strategy: + fail-fast: false matrix: - python-version: ["3.9"] - scikit-learn: ["1.0.*", "1.1.*", "1.2.*", "1.3.*", "1.4.*", "1.5.*"] + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + scikit-learn: ["1.2.*", "1.3.*", "1.4.*", "1.5.*"] os: [ubuntu-latest] sklearn-only: ["true"] + include: - - os: ubuntu-latest - python-version: "3.8" # no scikit-learn 0.23 release for Python 3.9 - scikit-learn: "0.23.1" - sklearn-only: "true" - # scikit-learn 0.24 relies on scipy defaults, so we need to fix the version - # c.f. https://github.com/openml/openml-python/pull/1267 - - os: ubuntu-latest - python-version: "3.9" - scikit-learn: "0.24" - scipy: "1.10.0" - sklearn-only: "true" - # Do a Windows and Ubuntu test for _all_ openml functionality - # I am not sure why these are on 3.8 and older scikit-learn + # Full test run on Windows - os: windows-latest - python-version: "3.8" - scikit-learn: 0.24.* - scipy: "1.10.0" - sklearn-only: 'false' - # Include a code cov version + python-version: "3.12" + scikit-learn: "1.5.*" + sklearn-only: "false" + + # Coverage run - os: ubuntu-latest + python-version: "3.12" + scikit-learn: "1.5.*" + sklearn-only: "false" code-cov: true - python-version: "3.8" - scikit-learn: 0.23.1 - sklearn-only: 'false' - fail-fast: false steps: - uses: actions/checkout@v4 with: fetch-depth: 2 + - name: Setup Python ${{ matrix.python-version }} - if: matrix.os != 'windows-latest' # windows-latest only uses preinstalled Python (3.9.13) uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + - name: Install test dependencies run: | python -m pip install --upgrade pip pip install -e .[test] + - name: Install scikit-learn ${{ matrix.scikit-learn }} run: | pip install scikit-learn==${{ matrix.scikit-learn }} - - name: Install numpy for Python 3.8 - # Python 3.8 & scikit-learn<0.24 requires numpy<=1.23.5 - if: ${{ matrix.python-version == '3.8' && matrix.scikit-learn == '0.23.1' }} - run: | - pip install numpy==1.23.5 - - name: "Install NumPy 1.x and SciPy <1.11 for scikit-learn < 1.4" - if: ${{ contains(fromJSON('["1.0.*", "1.1.*", "1.2.*", "1.3.*"]'), matrix.scikit-learn) }} - run: | - # scipy has a change to the 'mode' behavior which breaks scikit-learn < 1.4 - # numpy 2.0 has several breaking changes - pip install "numpy<2.0" "scipy<1.11" - - name: Install scipy ${{ matrix.scipy }} - if: ${{ matrix.scipy }} - run: | - pip install scipy==${{ matrix.scipy }} + - name: Store repository status id: status-before if: matrix.os != 'windows-latest' @@ -94,28 +71,45 @@ jobs: git_status=$(git status --porcelain -b) echo "BEFORE=$git_status" >> $GITHUB_ENV echo "Repository status before tests: $git_status" + - name: Show installed dependencies run: python -m pip list + - name: Run tests on Ubuntu Test if: matrix.os == 'ubuntu-latest' run: | - if [ ${{ matrix.code-cov }} ]; then codecov='--cov=openml --long --cov-report=xml'; fi - # Most of the time, running only the scikit-learn tests is sufficient - if [ ${{ matrix.sklearn-only }} = 'true' ]; then marks='sklearn and not production'; else marks='not production'; fi - echo pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks" + if [ "${{ matrix.code-cov }}" = "true" ]; then + codecov="--cov=openml --long --cov-report=xml" + fi + + if [ "${{ matrix.sklearn-only }}" = "true" ]; then + marks="sklearn and not production" + else + marks="not production" + fi + pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks" + - name: Run tests on Ubuntu Production if: matrix.os == 'ubuntu-latest' run: | - if [ ${{ matrix.code-cov }} ]; then codecov='--cov=openml --long --cov-report=xml'; fi - # Most of the time, running only the scikit-learn tests is sufficient - if [ ${{ matrix.sklearn-only }} = 'true' ]; then marks='sklearn and production'; else marks='production'; fi - echo pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks" + if [ "${{ matrix.code-cov }}" = "true" ]; then + codecov="--cov=openml --long --cov-report=xml" + fi + + if [ "${{ matrix.sklearn-only }}" = "true" ]; then + marks="sklearn and production" + else + marks="production" + fi + pytest -n 4 --durations=20 --dist load -sv $codecov -o log_cli=true -m "$marks" + - name: Run tests on Windows if: matrix.os == 'windows-latest' run: | # we need a separate step because of the bash-specific if-statement in the previous one. pytest -n 4 --durations=20 --dist load -sv --reruns 5 --reruns-delay 1 + - name: Check for files left behind by test if: matrix.os != 'windows-latest' && always() run: | @@ -127,6 +121,7 @@ jobs: echo "Not all generated files have been deleted!" exit 1 fi + - name: Upload coverage if: matrix.code-cov && always() uses: codecov/codecov-action@v4 From ac4c670375dbf6e4e79c6142ee5853a3e53e327e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 16:55:26 +0100 Subject: [PATCH 2/8] identifiers --- pyproject.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2bf762b09..ede204ca0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,12 +50,11 @@ classifiers = [ "Operating System :: Unix", "Operating System :: MacOS", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] license = { file = "LICENSE" } From 04c473afbda501b308f0cacae13a53a793c2b063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 17:07:48 +0100 Subject: [PATCH 3/8] Update test.yml --- .github/workflows/test.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b3108ff59..0df538fa9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -55,14 +55,10 @@ jobs: with: python-version: ${{ matrix.python-version }} - - name: Install test dependencies + - name: Install test dependencies and scikit-learn run: | python -m pip install --upgrade pip - pip install -e .[test] - - - name: Install scikit-learn ${{ matrix.scikit-learn }} - run: | - pip install scikit-learn==${{ matrix.scikit-learn }} + pip install -e .[test] scikit-learn==${{ matrix.scikit-learn }} - name: Store repository status id: status-before From af041915b27f8023b8956630ecdc05d3572d5626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 17:15:31 +0100 Subject: [PATCH 4/8] Update test.yml --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0df538fa9..9d41436d0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,8 +26,8 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] - scikit-learn: ["1.2.*", "1.3.*", "1.4.*", "1.5.*"] + python-version: ["3.10", "3.11", "3.12", "3.13"] + scikit-learn: ["1.3.*", "1.4.*", "1.5.*", "1.6.*", "1.7.*"] os: [ubuntu-latest] sklearn-only: ["true"] From 16309a68fa27712d0cb7d0b86a1720a3e46b93fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 21:59:10 +0100 Subject: [PATCH 5/8] Update test.yml --- .github/workflows/test.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 54fbc7a72..32d3602e1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,11 @@ jobs: os: [ubuntu-latest] sklearn-only: ["true"] + exclude: + # incompatible version combinations + - python-version: "3.13" + scikit-learn: ["1.3.*", "1.4.*"] + include: # Full test run on Windows - os: windows-latest From 62c0651e1409bfda07fd2c3668fcf10af88cd49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 22:18:29 +0100 Subject: [PATCH 6/8] Update test.yml --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 32d3602e1..5ffe08fae 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,9 @@ jobs: exclude: # incompatible version combinations - python-version: "3.13" - scikit-learn: ["1.3.*", "1.4.*"] + scikit-learn: "1.3.*" + - python-version: "3.13" + scikit-learn: "1.4.*" include: # Full test run on Windows From e902465e9bfb598d5ee3b66f2d531c23004e13aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Mon, 29 Dec 2025 23:30:09 +0100 Subject: [PATCH 7/8] Update test.yml --- .github/workflows/test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5ffe08fae..3d7998f24 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,14 +43,14 @@ jobs: - os: windows-latest python-version: "3.12" scikit-learn: "1.5.*" - sklearn-only: "false" + sklearn-only: "true" # Coverage run - os: ubuntu-latest python-version: "3.12" scikit-learn: "1.5.*" - sklearn-only: "false" - code-cov: true + sklearn-only: "true" + # code-cov: true steps: - uses: actions/checkout@v4 From 00f1b29d71d27e1106416f76a1239587b95e773c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franz=20Kir=C3=A1ly?= Date: Tue, 30 Dec 2025 00:04:53 +0100 Subject: [PATCH 8/8] Update test.yml --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3d7998f24..7940f4a7e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -40,7 +40,8 @@ jobs: include: # Full test run on Windows - - os: windows-latest + - os: ubuntu-latest + # - os: windows-latest python-version: "3.12" scikit-learn: "1.5.*" sklearn-only: "true"