Skip to content

Merge pull request #143 from DanCardin/dc/uv #308

Merge pull request #143 from DanCardin/dc/uv

Merge pull request #143 from DanCardin/dc/uv #308

Workflow file for this run

name: Test
on:
pull_request:
branches:
- main
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
pydantic-version: ["1.0", "2.0"]
# No need to matrix test pydantic versions. But the matrix syntax still
# keeps the file DRY.
exclude:
- python-version: "3.8"
pydantic-version: "1.0"
- python-version: "3.9"
pydantic-version: "1.0"
- python-version: "3.11"
pydantic-version: "1.0"
- python-version: "3.12"
pydantic-version: "1.0"
- python-version: "3.13"
pydantic-version: "1.0"
env:
UV_CACHE_DIR: /tmp/.uv-cache
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: x64
allow-prereleases: true
- name: Set up uv
run: curl -LsSf https://astral.sh/uv/install.sh | sh
- name: Restore uv cache
uses: actions/cache@v4
with:
path: /tmp/.uv-cache
key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
restore-keys: |
uv-${{ runner.os }}-${{ hashFiles('uv.lock') }}
uv-${{ runner.os }}
- name: Install dependencies
run: make install
- name: Minimize uv cache
run: uv cache prune --ci
- name: Install pydantic matrix version
run: uv pip install 'pydantic~=${{ matrix.pydantic-version }}'
- name: Run Linters
run: make lint
if: ${{ !endsWith(matrix.python-version, '-dev') }}
- name: Run tests
run: make test
- name: Store test result artifacts
uses: actions/upload-artifact@v3
with:
path: coverage.xml
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
name: python=${{ matrix.python-version }}-pydantic=${{matrix.pydantic-version}}
files: coverage.xml
finish:
needs:
- test
runs-on: ubuntu-latest
steps:
- name: Join
run: echo Done