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
48 changes: 27 additions & 21 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,35 +22,41 @@ jobs:
platform:
- runner: ubuntu-latest
target: x86_64
interpreters: &full-interpreters '["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15", "3.15t"]'
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
interpreters: *full-interpreters
# A native arm64 runner, so maturin-action uses the official
# quay.io/pypa/manylinux2014_aarch64 image (same as x86_64/x86 above), rather than
# the ghcr.io/rust-cross/manylinux2014-cross cross-compilation image used for the
# remaining targets below, which doesn't yet bundle Python 3.15/3.15t.
- runner: ubuntu-24.04-arm
target: aarch64
interpreters: *full-interpreters
# ghcr.io/rust-cross/manylinux2014-cross (used for these targets, since there's no
# official manylinux2014 image for them, and no native GitHub-hosted runner for
# their architectures) doesn't yet bundle Python 3.15/3.15t - it only goes up to
# 3.14/3.14t.
- runner: ubuntu-latest
target: armv7
interpreters: &cross-interpreters '["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]'
- runner: ubuntu-latest
target: s390x
interpreters: *cross-interpreters
- runner: ubuntu-latest
target: ppc64le
interpreters: *cross-interpreters
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: |
3.10
3.11
3.12
3.13
3.14
3.14t
3.15
3.15t
python-version: ${{ join(fromJSON(matrix.platform.interpreters), fromJSON('"\n"')) }}
allow-prereleases: true
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
args: --release --out dist --interpreter ${{ join(fromJSON(matrix.platform.interpreters), ' ') }}
sccache: 'true'
manylinux: auto
- name: Upload wheels
Expand All @@ -64,33 +70,33 @@ jobs:
strategy:
matrix:
platform:
# Unlike the `linux` job, all musllinux targets - including aarch64, even on a
# native arm64 runner - build inside ghcr.io/rust-cross/rust-musl-cross images
# (there's no official musllinux image for maturin-action to use natively), which
# don't yet bundle Python 3.15/3.15t - they only go up to 3.14/3.14t.
- runner: ubuntu-latest
target: x86_64
interpreters: *cross-interpreters
- runner: ubuntu-latest
target: x86
interpreters: *cross-interpreters
- runner: ubuntu-latest
target: aarch64
interpreters: *cross-interpreters
- runner: ubuntu-latest
target: armv7
interpreters: *cross-interpreters
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: |
3.10
3.11
3.12
3.13
3.14
3.14t
3.15
3.15t
python-version: ${{ join(fromJSON(matrix.platform.interpreters), fromJSON('"\n"')) }}
allow-prereleases: true
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
args: --release --out dist --interpreter ${{ join(fromJSON(matrix.platform.interpreters), ' ') }}
sccache: 'true'
manylinux: musllinux_1_2
- name: Upload wheels
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ latest

* Fix missing macOS wheels for regular (non-freethreaded) Python 3.14+
(https://github.com/python-grimp/grimp/issues/317).
* Fix missing Linux aarch64 wheels for Python 3.15 by building on a native arm64 runner.
* No Python 3.15 wheels are published for Linux armv7, s390x or ppc64le, or for any musllinux
target, since the Docker images used to build those don't yet support Python 3.15. Previously
the release workflow silently skipped these wheels; now it does so explicitly.
* Fix imports in the ``else`` (or non-type checking ``elif``) branch of an ``if TYPE_CHECKING:``
statement being excluded by ``exclude_type_checking_imports``, even though they run at runtime.
* Fix panic when a module declares its encoding using a name that Python accepts but that isn't a
Expand Down
Loading