Skip to content

chore(ci): use python 3.13 #870

chore(ci): use python 3.13

chore(ci): use python 3.13 #870

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags:
- v*
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
run-clippy:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- run: cargo +stable clippy --all-targets --all-features -- -Dwarnings -Wclippy::pedantic
run-pre-commit:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: astral-sh/setup-uv@v3
- run: uv tool run --from pre-commit@latest --with pre-commit-uv --no-cache --python 3.13 pre-commit run --all-files
run-rustfmt:
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- run: rustup toolchain install nightly --profile minimal --component rustfmt --no-self-update --allow-downgrade
- run: cargo +nightly fmt --check
linux:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- i686-unknown-linux-gnu
- aarch64-unknown-linux-gnu
- armv7-unknown-linux-gnueabihf
- powerpc64le-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
- s390x-unknown-linux-gnu
- x86_64-unknown-linux-musl
- i686-unknown-linux-musl
- aarch64-unknown-linux-musl
- armv7-unknown-linux-musleabihf
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: |
3.9
3.10
3.11
3.12
pypy3.9
pypy3.10
3.13
check-latest: true
- uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10'
sccache: "true"
manylinux: auto
- uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
path: dist
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: pytest
if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-unknown-linux-gnu' }}
run: |
set -e
uv sync --no-install-project --frozen
uv pip install --find-links ../dist --no-index pyromark
uv run --no-sync pytest
working-directory: ./tests
windows:
runs-on: windows-latest
strategy:
matrix:
include:
- target: x86_64-pc-windows-msvc
architecture: x64
- target: i686-pc-windows-msvc
architecture: x86
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: |
3.9
3.10
3.11
3.12
3.13
architecture: ${{ matrix.architecture }}
check-latest: true
- uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.9 3.10 3.11 3.12 3.13'
sccache: "true"
- uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}
path: dist
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: pytest
if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-pc-windows-msvc' }}
shell: bash
run: |
set -e
uv sync --no-install-project --frozen
uv pip install --find-links ../dist --no-index pyromark
uv run --no-sync pytest
working-directory: ./tests
macos:
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- runner: macos-13
target: x86_64-apple-darwin
- runner: macos-14
target: aarch64-apple-darwin
fail-fast: false
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: |
3.9
3.10
3.11
3.12
pypy3.9
pypy3.10
3.13
check-latest: true
- uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.9 3.10 3.11 3.12 3.13 pypy3.9 pypy3.10'
sccache: "true"
- uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: dist
- uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: pytest
if: ${{ !startsWith(github.ref, 'refs/tags/') && matrix.target == 'x86_64-apple-darwin' }}
run: |
set -e
uv sync --no-install-project --frozen
uv pip install --find-links ../dist --no-index pyromark
uv run --no-sync pytest
working-directory: ./tests
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist
release:
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'monosans' && startsWith(github.ref, 'refs/tags/') }}
needs:
- linux
- windows
- macos
- sdist
permissions:
id-token: write
attestations: write
steps:
- uses: actions/download-artifact@v4
- uses: actions/attest-build-provenance@v1
with:
subject-path: wheels-*/*
- uses: PyO3/maturin-action@v1
with:
command: upload
args: --non-interactive --skip-existing wheels-*/*