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
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions | |
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions | |
name: CI | |
# define when this workflow is triggered | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- main | |
# cancel any currently running workflows in this same PR | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
# Many color libraries just need this to be set to any value, but at least | |
# one distinguishes color depth, where "3" -> "256-bit color". | |
FORCE_COLOR: 3 | |
# Use bash by default in all jobs | |
defaults: | |
run: | |
shell: bash -el {0} | |
jobs: | |
# Run tests and upload to codecov | |
test: | |
name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }} | |
runs-on: ${{ matrix.runs-on }} | |
# don't run tests if any commits in push contain "docs:" or "style:" | |
if: | | |
${{!startsWith(github.event.head_commit.message, 'docs:') }} || | |
${{!startsWith(github.event.head_commit.message, 'style:') }} | |
strategy: | |
# Otherwise, the workflow would stop if a single job fails. We want to | |
# run all of them to catch failures in different combinations. | |
fail-fast: false | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
runs-on: [ubuntu-latest, macos-latest, windows-latest] | |
env: | |
NUMBA_DISABLE_JIT: "1" | |
timeout-minutes: 10 | |
steps: | |
# Checkout current git repository | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Switch to Current Branch | |
run: git checkout ${{ env.BRANCH }} | |
- name: Get current week number of year | |
id: date | |
run: echo "date=$(date +%Y-W%W)" >> $GITHUB_OUTPUT # e.g., 2024-W19 | |
# Install Micromamba with conda-forge dependencies | |
- name: Setup Micromamba | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-file: env/testing_env.yml | |
create-args: >- | |
python=${{ matrix.python-version }} | |
post-cleanup: "all" | |
cache-downloads: false | |
# environment cache is persistent for one week. | |
cache-environment-key: | |
micromamba-environment-${{ steps.date.outputs.date }} | |
# Install the package that we want to test | |
- name: Install the package | |
run: pip install --no-deps -e . | |
- name: Run the tests | |
run: >- | |
pytest -ra --cov --cov-report=xml --cov-report=term --durations=20 | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v4.5.0 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} |