Skip to content

Bump pytest from 7.4.4 to 9.0.3 (#244) #487

Bump pytest from 7.4.4 to 9.0.3 (#244)

Bump pytest from 7.4.4 to 9.0.3 (#244) #487

Workflow file for this run

---
name: CI
on:
push:
branches:
- master
- v2
tags:
- "**"
pull_request:
branches:
- master
- v2
workflow_dispatch: {}
env:
COLUMNS: 150
jobs:
test:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
python-version:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
- '3.14'
runs-on: "${{ matrix.os }}"
continue-on-error: false
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust
uses: Swatinem/rust-cache@v2
- name: Install uv
uses: astral-sh/setup-uv@v2
- name: Sync project environment
run: uv sync --all-groups --python "${{ matrix.python-version }}"
- name: test
run: uv run pytest
- name: upload coverage to codecov
uses: codecov/codecov-action@v3
with:
# TODO(tonybaloney): move token to `secrets.CODECOV_TOKEN`
token: 48f9ff3a-6358-4607-aa5d-9cb7cada539c
files: .tests-reports/coverage.xml
fail_ci_if_error: true
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v2
- run: uv tool run ruff check .
# Rust linting
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache Rust
uses: Swatinem/rust-cache@v2
- name: Run clippy
run: cargo clippy --manifest-path backend/Cargo.toml -- -D warnings
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --manifest-path backend/Cargo.toml --check
# Build source distribution
build-sdist:
name: build sdist
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
rust-toolchain: stable
- uses: actions/upload-artifact@v4
with:
name: pypi_files_sdist
path: dist
# Build wheels for all supported platforms
build:
name: build on ${{ matrix.os }} (${{ matrix.target }})
strategy:
fail-fast: false
matrix:
include:
# Linux x86_64
- os: linux
target: x86_64
runs-on: ubuntu-latest
manylinux: auto
# Linux aarch64
- os: linux
target: aarch64
runs-on: ubuntu-latest
manylinux: auto
# macOS aarch64 (Apple Silicon)
- os: macos
target: aarch64
runs-on: macos-latest
# Windows x86_64
- os: windows
target: x86_64
runs-on: windows-latest
# Windows aarch64
- os: windows
target: aarch64
python-architecture: arm64
runs-on: windows-11-arm
runs-on: ${{ matrix.runs-on }}
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.13"
architecture: ${{ matrix.python-architecture || 'x64' }}
- name: Install twine
run: pip install -U twine
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: ${{ matrix.manylinux || 'auto' }}
args: --release --out dist --interpreter 3.10 3.11 3.12 3.13 3.14
rust-toolchain: stable
docker-options: -e CI
before-script-linux: |
if command -v yum &> /dev/null; then
yum install -y openssl-devel cmake3 perl-IPC-Cmd perl-Time-Piece
which cmake3 && ln -sf $(which cmake3) /usr/local/bin/cmake || true
elif command -v apk &> /dev/null; then
apk add --no-cache openssl-dev cmake make perl
elif command -v apt-get &> /dev/null; then
apt-get update && apt-get install -y libssl-dev cmake perl
fi
- name: List dist files
run: ls -lh dist/
shell: bash
- name: Check wheels
run: twine check --strict dist/*
- uses: actions/upload-artifact@v4
with:
name: pypi_files_${{ matrix.os }}_${{ matrix.target }}
path: dist
# Publish to PyPI on tagged releases
release:
needs: [test, ruff, clippy, rustfmt, build-sdist, build]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
environment:
name: release
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v4
- name: Get dist artifacts
uses: actions/download-artifact@v4
with:
pattern: pypi_files_*
merge-multiple: true
path: dist
- name: List dist files
run: |
ls -lh dist/
echo "Total files: $(ls dist | wc -l)"
- name: Test wheels integrity
run: for whl in dist/*.whl; do unzip -qt "$whl"; done
- name: Install uv
uses: astral-sh/setup-uv@v2
- name: Publish to PyPI
run: uv publish --trusted-publishing always
- name: Upload to GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
dist/*
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') }}