Fix parallel optimisation and increase coverage #1182
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pull Request | |
on: | |
workflow_dispatch: | |
pull_request: | |
concurrency: | |
# github.workflow: name of the workflow, so that we don't cancel other workflows | |
# github.event.pull_request.number || github.ref: pull request number or branch name if not a pull request | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
# Cancel in-progress runs when a new workflow with the same group name is triggered | |
# This avoids workflow runs on both pushes and PRs | |
cancel-in-progress: true | |
jobs: | |
style: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.11 | |
- name: Check formatting with pre-commit | |
run: | | |
python -m pip install pre-commit | |
pre-commit run ruff | |
integration_tests: | |
needs: style | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest, macos-14] | |
python-version: ["3.12"] | |
name: Integration tests (${{ matrix.os }} / Python ${{ matrix.python-version }}) | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip "nox[uv]" | |
- name: Integration tests | |
run: | | |
nox -s integration | |
unit_tests: | |
needs: style | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
exclude: # We run the coverage tests on Ubuntu with Python 3.12 | |
- os: ubuntu-latest | |
python-version: "3.12" | |
# Include MacOS M-series Runners | |
include: | |
- os: macos-14 | |
python-version: "3.10" | |
- os: macos-14 | |
python-version: "3.11" | |
- os: macos-14 | |
python-version: "3.12" | |
name: Unit tests (${{ matrix.os }} / Python ${{ matrix.python-version }}) | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip nox[uv] | |
- name: Unit tests | |
run: | | |
nox -s unit | |
example_tests: | |
needs: style | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest, macos-14] | |
python-version: ["3.12"] | |
name: Test examples (${{ matrix.os }} / Python ${{ matrix.python-version }}) | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip nox[uv] | |
- name: Run examples | |
run: | | |
nox -s examples | |
# Runs only on Ubuntu with Python 3.12 | |
check_coverage: | |
needs: style | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
name: Coverage tests (ubuntu-latest / Python 3.12) | |
steps: | |
- name: Check out PyBOP repository | |
uses: actions/checkout@v4 | |
- name: Set up Python 3.12 | |
id: setup-python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3.12 | |
cache: 'pip' | |
cache-dependency-path: setup.py | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip "nox[uv]" | |
- name: Run coverage tests for Ubuntu with Python 3.12 and generate report | |
run: nox -s coverage | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
verbose: true | |
token: ${{ secrets.CODECOV_TOKEN }} |