diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e2515a4d6..c30a6931b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,9 +115,13 @@ jobs: run: cargo build --target wasm32-unknown-unknown --workspace --exclude ppvm-python-native --exclude ppvm-cli --exclude ppvm-tui python-tests: - name: Python tests + name: Python tests (${{ matrix.python-version }}) needs: pre-commit runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -125,10 +129,16 @@ jobs: - uses: Swatinem/rust-cache@v2 - - uses: astral-sh/setup-uv@v5 + - uses: astral-sh/setup-uv@v7 + + - name: Install Python ${{ matrix.python-version }} + run: uv python install ${{ matrix.python-version }} + + - name: Show test interpreter + run: uv run --project ppvm-python --python ${{ matrix.python-version }} python --version - name: Run Python tests - run: uv run --project ppvm-python --group dev pytest ppvm-python/test/ docs/examples/ + run: uv run --project ppvm-python --python ${{ matrix.python-version }} --group dev pytest ppvm-python/test/ docs/examples/ # The pure-Rust crates are platform-agnostic and fully verified on Linux by # the jobs above. The PyO3 extension is the only OS-sensitive artifact (macOS diff --git a/crates/ppvm-python-native/Cargo.toml b/crates/ppvm-python-native/Cargo.toml index 69204227d..0918fe813 100644 --- a/crates/ppvm-python-native/Cargo.toml +++ b/crates/ppvm-python-native/Cargo.toml @@ -28,11 +28,11 @@ ppvm-pauli-sum = { version = "0.3.0", path = "../ppvm-pauli-sum" } ppvm-stim = { version = "0.3.0", path = "../ppvm-stim", features = ["rayon"] } ppvm-tableau = { version = "0.3.0", path = "../ppvm-tableau" } ppvm-tableau-sum = { version = "0.3.0", path = "../ppvm-tableau-sum", features = ["rayon"] } -# abi3-py310: build a single stable-ABI wheel that loads on CPython 3.10+, +# abi3-py311: build a single stable-ABI wheel that loads on CPython 3.11+, # instead of one wheel per Python version. pyo3 = { version = "0.29.0", features = [ "extension-module", "multiple-pymethods", - "abi3-py310", + "abi3-py311", ] } rand = "0.10.3" diff --git a/docs/src/pages/develop.astro b/docs/src/pages/develop.astro index acdf7f0f3..f063c3587 100644 --- a/docs/src/pages/develop.astro +++ b/docs/src/pages/develop.astro @@ -673,7 +673,7 @@ chore: restore lockfile consistency ppvm.