Skip to content

Merge pull request #273 from crate-py/dependabot/cargo/pyo3-0.29.0 #2093

Merge pull request #273 from crate-py/dependabot/cargo/pyo3-0.29.0

Merge pull request #273 from crate-py/dependabot/cargo/pyo3-0.29.0 #2093

Workflow file for this run

name: CI
on:
push:
branches-ignore:
- "wip*"
tags:
- "v[0-9].*"
pull_request:
schedule:
# Daily at 5:33
- cron: "33 5 * * *"
workflow_dispatch:
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/') }}
jobs:
list:
name: List nox sessions
runs-on: ubuntu-latest
outputs:
noxenvs: ${{ steps.noxenvs-matrix.outputs.noxenvs }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- id: noxenvs-matrix
run: |
echo >>$GITHUB_OUTPUT noxenvs=$(
uvx nox --list-sessions --json | jq '[.[] | {session, python}]'
)
test:
name: Test (${{ matrix.session }})
needs: list
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.list.outputs.noxenvs) }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y libenchant-2-dev
if: runner.os == 'Linux' && startsWith(matrix.session, 'docs')
- name: Install dependencies
run: brew install enchant
if: runner.os == 'macOS' && startsWith(matrix.session, 'docs')
- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python }}
allow-prereleases: true
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
with:
enable-cache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Run nox
run: uvx nox -s "${{ matrix.session }}" # zizmor: ignore[template-injection]
manylinux:
name: Build manylinux wheels
needs: test
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
target:
[
x86_64,
x86,
aarch64,
armv7,
s390x,
ppc64le,
riscv64gc-unknown-linux-gnu,
]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: |
3.11
3.12
3.13
3.14
3.14t
3.15
3.15t
pypy3.11
allow-prereleases: true
- name: Build wheels
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.11 3.12 3.13 3.14 3.14t 3.15 3.15t pypy3.11'
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}-${{ matrix.target }}
path: dist
musllinux:
name: Build musllinux wheels
needs: test
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
target:
- aarch64-unknown-linux-musl
- i686-unknown-linux-musl
- x86_64-unknown-linux-musl
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: |
3.11
3.12
3.13
3.14
3.14t
3.15
3.15t
pypy3.11
allow-prereleases: true
- name: Build wheels
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.11 3.12 3.13 3.14 3.14t 3.15 3.15t pypy3.11'
manylinux: musllinux_1_2
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Upload wheels
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}-${{ matrix.target }}
path: dist
windows:
name: Build Windows wheels
needs: test
runs-on: windows-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
target: [x64, x86] # x86 is not supported by pypy
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: |
3.11
3.12
3.13
3.14
3.15
allow-prereleases: true
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.11 3.12 3.13 3.14 3.15'
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Upload wheels
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}-${{ matrix.target }}
path: dist
windows-arm:
name: Build Windows ARM wheels
needs: test
runs-on: windows-11-arm
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
target:
- aarch64-pc-windows-msvc
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
# Install each python version seperatly so that the paths can be passed to maturin. (otherwise finds pre-installed x64 versions)
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
id: cp311
with:
python-version: "3.11"
allow-prereleases: true
architecture: arm64
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
id: cp312
with:
python-version: "3.12"
allow-prereleases: true
architecture: arm64
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
id: cp313
with:
python-version: "3.13"
allow-prereleases: true
architecture: arm64
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
id: cp314
with:
python-version: "3.14"
allow-prereleases: true
architecture: arm64
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
id: cp315
with:
python-version: "3.15"
allow-prereleases: true
architecture: arm64
- name: Build wheels
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter ${{ steps.cp311.outputs.python-path }} ${{ steps.cp312.outputs.python-path }} ${{ steps.cp313.outputs.python-path }} ${{ steps.cp314.outputs.python-path }} ${{ steps.cp315.outputs.python-path }}
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Upload wheels
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}-${{ matrix.target }}
path: dist
# free-threaded and normal builds share a site-packages folder on Windows so
# we must build free-threaded separately
windows-free-threaded:
name: Build Windows free-threaded wheels
needs: test
runs-on: windows-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
target: [x64, x86] # x86 is not supported by pypy
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: |
3.14t
3.15t
allow-prereleases: true
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.14t 3.15t'
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Upload wheels
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}-${{ matrix.target }}-free-threaded
path: dist
macos:
name: Build macOS wheels
needs: test
runs-on: macos-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: |
3.11
3.12
3.13
3.14
3.14t
3.15
3.15t
pypy3.11
allow-prereleases: true
- name: Build wheels
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter '3.11 3.12 3.13 3.14 3.14t 3.15 3.15t pypy3.11'
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
- name: Upload wheels
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}-${{ matrix.target }}
path: dist
sdist:
name: Build sdist
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: "3.13"
- name: Build an sdist
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: dist-${{ github.job }}
path: dist
release:
name: Publish release
needs:
[manylinux, musllinux, windows, windows-arm, windows-free-threaded, macos]
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
environment:
name: PyPI
url: https://pypi.org/p/rpds-py
permissions:
contents: write # needed to create the GitHub Release
id-token: write # needed for trusted publishing to PyPI
steps:
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
pattern: dist-*
merge-multiple: true
path: dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
with:
skip-existing: true
print-hash: true
packages-dir: dist
- name: Create a GitHub Release
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/')
env:
GH_TOKEN: ${{ github.token }}
REF_NAME: ${{ github.ref_name }}
run: gh release create "$REF_NAME" --generate-notes dist/*