Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
256 changes: 256 additions & 0 deletions .github/workflows/ci-python.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,256 @@
# This file is autogenerated by maturin v1.13.3
# To update, run
#
# maturin generate-ci github
#
name: CI - Python Bindings

on:
push:
branches:
- main
paths:
- "crates/**"
- ".github/workflows/ci-python.yml"
tags:
- "python@**"
pull_request:
paths:
- "crates/**"
- ".github/workflows/ci-python.yml"
workflow_dispatch:

permissions:
contents: read

jobs:
stubs:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry and build
uses: Swatinem/rust-cache@v2
with:
workspaces: crates/statembed-py
- name: Generate Python stubs
working-directory: crates/statembed-py
run: |
python3 -m venv .venv
source .venv/bin/activate
export PYO3_PYTHON=$(which python3)
cargo run --bin stub_gen
- name: Upload stubs
uses: actions/upload-artifact@v6
with:
name: python-stubs
path: crates/statembed-py/*.pyi

linux:
runs-on: ${{ matrix.platform.runner }}
needs: [stubs]
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: x86
- runner: ubuntu-22.04
target: aarch64
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Download stubs
uses: actions/download-artifact@v7
with:
name: python-stubs
path: crates/statembed-py/
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter python3.10 python3.11 python3.12 python3.13
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto
working-directory: crates/statembed-py
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-linux-${{ matrix.platform.target }}
path: crates/statembed-py/dist

musllinux:
needs: [stubs]
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: x86
- runner: ubuntu-22.04
target: aarch64
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Download stubs
uses: actions/download-artifact@v7
with:
name: python-stubs
path: crates/statembed-py/
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --interpreter python3.10 python3.11 python3.12 python3.13
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: musllinux_1_2
working-directory: crates/statembed-py
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: crates/statembed-py/dist

windows:
runs-on: ${{ matrix.platform.runner }}
needs: [stubs]
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
python_arch: x64
- runner: windows-latest
target: x86
python_arch: x86
- runner: windows-11-arm
target: aarch64
python_arch: arm64
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: "3.13"
architecture: ${{ matrix.platform.python_arch }}
- name: Download stubs
uses: actions/download-artifact@v7
with:
name: python-stubs
path: crates/statembed-py/
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
working-directory: crates/statembed-py
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-windows-${{ matrix.platform.target }}
path: crates/statembed-py/dist

macos:
needs: [stubs]
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-15-intel
target: x86_64
- runner: macos-latest
target: aarch64
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: "3.x"
- name: Download stubs
uses: actions/download-artifact@v7
with:
name: python-stubs
path: crates/statembed-py/
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
working-directory: crates/statembed-py
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-macos-${{ matrix.platform.target }}
path: crates/statembed-py/dist

sdist:
needs: [stubs]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- name: Download stubs
uses: actions/download-artifact@v7
with:
name: python-stubs
path: crates/statembed-py/
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
working-directory: crates/statembed-py
- name: Upload sdist
uses: actions/upload-artifact@v6
with:
name: wheels-sdist
path: crates/statembed-py/dist

publish:
name: Publish - Python Bindings
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') }}
needs: [linux, musllinux, windows, macos, sdist]
permissions:
# Use to sign the release artifacts
id-token: write
# Used to upload release artifacts
contents: write
# Used to generate artifact attestation
attestations: write
steps:
- uses: actions/download-artifact@v7
- name: Generate artifact attestation
uses: actions/attest@v4
with:
subject-path: "wheels-*/*"
- name: Install uv
if: ${{ startsWith(github.ref, 'refs/tags/') }}
uses: astral-sh/setup-uv@v7
- name: Publish to PyPI
if: ${{ startsWith(github.ref, 'refs/tags/') }}
run: uv publish 'wheels-*/*'
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ jobs:
CARGO_API_TOKEN: ${{ secrets.CARGO_API_TOKEN }}

- name: Publish to crates
run: cargo publish
run: cargo publish -p statembed
env:
CARGO_API_TOKEN: ${{ secrets.CARGO_API_TOKEN }}

Expand Down
Loading
Loading