Skip to content

Bump actions/setup-python from 5 to 6 #1618

Bump actions/setup-python from 5 to 6

Bump actions/setup-python from 5 to 6 #1618

Workflow file for this run

name: Tests
on:
workflow_dispatch:
push:
branches:
- main
- develop
tags:
- "v*.*.*"
pull_request:
branches:
- main
- develop
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
name: (${{ matrix.os }}, Py${{ matrix.python-version }}, sk${{ matrix.scikit-learn }}, sk-only:${{ matrix.sklearn-only }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ["3.11"]
scikit-learn: ["1.3.*", "1.4.*", "1.5.*"]
os: [ubuntu-latest]
sklearn-only: ["true"]
fail-fast: false
steps:
- uses: actions/checkout@v6
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@v6
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'
run: |
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"
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"
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: |
before="${{ env.BEFORE }}"
after="$(git status --porcelain -b)"
if [[ "$before" != "$after" ]]; then
echo "git status from before: $before"
echo "git status from after: $after"
echo "Not all generated files have been deleted!"
exit 1
fi
- name: Upload coverage
if: matrix.code-cov && always()
uses: codecov/codecov-action@v4
with:
files: coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true
dummy_windows_py_sk024:
name: (windows-latest, Py, sk0.24.*, sk-only:false)
runs-on: ubuntu-latest
steps:
- name: Dummy step
run: |
echo "This is a temporary dummy job."
echo "Always succeeds."
dummy_windows_py_sk023:
name: (ubuntu-latest, Py3.8, sk0.23.1, sk-only:false)
runs-on: ubuntu-latest
steps:
- name: Dummy step
run: |
echo "This is a temporary dummy job."
echo "Always succeeds."
dummy_docker:
name: docker
runs-on: ubuntu-latest
steps:
- name: Dummy step
run: |
echo "This is a temporary dummy docker job."
echo "Always succeeds."