Skip to content

Switch to just and uv, remove Python 3.8, add Python 3.13 (#805) #374

Switch to just and uv, remove Python 3.8, add Python 3.13 (#805)

Switch to just and uv, remove Python 3.8, add Python 3.13 (#805) #374

Workflow file for this run

name: Test
on:
push:
branches: ["main"]
pull_request:
concurrency:
group: test-${{ github.head_ref }}
cancel-in-progress: true
jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: chartboost/ruff-action@v1
tests_matrix:
runs-on: ubuntu-latest
needs: [ ruff ]
strategy:
matrix:
python-version: [3.9, "3.10", 3.11, 3.12, 3.13]
django-version: [4.2, 5.0, 5.1, "main"]
exclude:
# Django 5.0
- python-version: 3.9
django-version: 5.0
# Django 5.1
- python-version: 3.9
django-version: 5.1
# Django main
- python-version: 3.9
django-version: "main"
steps:
- uses: actions/checkout@v4
- name: Update repositories
run: sudo apt-get update
- name: Install GDAL binaries
run: sudo apt-get install binutils libproj-dev gdal-bin
- name: Set up Python with uv
uses: drivendataorg/setup-python-uv-action@main
with:
python-version: ${{ matrix.python-version }}
cache: packages
cache-dependency-path: >-
pyproject.toml
- name: Install dependencies
run: uv sync --all-extras --all-groups --upgrade
- name: Install Django ${{ matrix.django-version }}
run: uv pip install Django==${{ matrix.django-version }}
if: matrix.django-version != 'main'
- name: Install Django main branch
run: uv pip install -U https://github.com/django/django/archive/master.tar.gz
if: matrix.django-version == 'main'
- name: Run tests
run: |
uv run coverage run manage.py test
uv run coverage report
- name: Upload coveralls (parallel)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
run: |
uv pip install coveralls
uv run coveralls --service=github
docs:
runs-on: ubuntu-latest
needs: [ tests_matrix ]
steps:
- uses: actions/checkout@v4
- name: Set up Python with uv
uses: drivendataorg/setup-python-uv-action@main
with:
python-version: 3.12
cache: packages
cache-dependency-path: >-
pyproject.toml
- name: Set up just
uses: extractions/setup-just@v2
- name: Build documentation
run: just docs
build:
runs-on: ubuntu-latest
needs: [ tests_matrix ]
steps:
- uses: actions/checkout@v4
- name: Set up Python with uv
uses: drivendataorg/setup-python-uv-action@main
with:
python-version: 3.12
cache: packages
cache-dependency-path: >-
pyproject.toml
- name: Set up just
uses: extractions/setup-just@v2
- name: Build package
run: just build
tests:
if: always()
runs-on: ubuntu-latest
needs: [ tests_matrix, ruff, docs, build ]
steps:
- name: Check tests matrix status
if: needs.tests_matrix.result != 'success'
run: exit 1
- name: Finish parallel build
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
github-token: ${{ secrets.GITHUB_TOKEN }}