Repository navigation
Release 4.3.3 #227
This file contains hidden or 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: Python Tests | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| types: [opened, synchronize] | |
| jobs: | |
| format: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | |
| with: | |
| enable-cache: true | |
| - name: Validate formatting | |
| run: | | |
| uv run ruff check src tests | |
| uv run ruff format --check src tests | |
| test: | |
| runs-on: ${{ matrix.platform }} | |
| strategy: | |
| fail-fast: false | |
| max-parallel: 4 | |
| matrix: | |
| platform: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Install system dependencies | |
| if: matrix.platform == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install libssl-dev libxmlsec1 libxmlsec1-dev libxmlsec1-openssl libxslt1-dev pkg-config | |
| - name: Install system dependencies | |
| if: matrix.platform == 'macos-latest' | |
| run: | | |
| brew install libxmlsec1 libxslt pkgconfig | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | |
| with: | |
| enable-cache: true | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| # xmlsec has no wheels for Windows / Python 3.14, so it is only installed | |
| # on mac/linux for Python <= 3.13 (matching the system deps above). | |
| run: >- | |
| uv sync --frozen --extra async | |
| ${{ (matrix.platform != 'windows-latest' && matrix.python-version != '3.14') && '--extra xmlsec' || '' }} | |
| - name: Test with pytest | |
| run: uv run --frozen coverage run --parallel -m pytest | |
| env: | |
| PLATFORM: ${{ matrix.platform }} | |
| - name: Prepare artifacts | |
| run: mkdir .coverage-data && mv .coverage.* .coverage-data/ | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: coverage-data-${{ matrix.platform }}-${{ matrix.python-version }} | |
| path: .coverage-data/.coverage.* | |
| include-hidden-files: true | |
| retention-days: 1 | |
| coverage: | |
| runs-on: ubuntu-latest | |
| needs: [test] | |
| steps: | |
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 | |
| - uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 | |
| with: | |
| pattern: coverage-data-* | |
| merge-multiple: true | |
| path: . | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 | |
| with: | |
| enable-cache: true | |
| - name: Prepare Coverage report | |
| run: | | |
| uv run --frozen coverage combine | |
| uv run --frozen coverage xml | |
| uv run --frozen coverage report |