Background
As of May 2026, Python 3.15 is in alpha/early beta (following the standard annual release cycle: 3.13 stable Oct 2024, 3.14 stable Oct 2025, 3.15 alpha from roughly Jan 2026). The test-published matrix currently covers 3.11–3.14.
typedframes uses a Rust extension module compiled via PyO3 and maturin. PyO3's support for new CPython releases sometimes lags by a release cycle — catching ABI compatibility issues early gives time to fix them before 3.15 reaches stable.
Fix
Add 3.15-dev to the test-published matrix with continue-on-error: true so failures don't block the release but are visible:
test-published:
needs: [publish]
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.11', '3.12', '3.13', '3.14', '3.15-dev']
continue-on-error: ${{ matrix.python-version == '3.15-dev' }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
# ... rest of steps unchanged
The allow-prereleases: true flag on actions/setup-python is required for pre-release Python versions to be resolved correctly.
Note on maturin wheel availability
Pre-release Python versions require a wheel built with abi3 targeting the correct minimum version, or a source build. The pyo3 = { version = "0.23", features = ["abi3-py311"] } feature in Cargo.toml means the existing abi3 wheel should work on any Python >= 3.11 including 3.15-dev, as long as the CPython stable ABI is maintained (which it is, by design). If PyO3 itself has not yet been validated against 3.15, there may be link errors — this is exactly the signal the continue-on-error lane provides.
Background
As of May 2026, Python 3.15 is in alpha/early beta (following the standard annual release cycle: 3.13 stable Oct 2024, 3.14 stable Oct 2025, 3.15 alpha from roughly Jan 2026). The
test-publishedmatrix currently covers 3.11–3.14.typedframes uses a Rust extension module compiled via PyO3 and maturin. PyO3's support for new CPython releases sometimes lags by a release cycle — catching ABI compatibility issues early gives time to fix them before 3.15 reaches stable.
Fix
Add
3.15-devto thetest-publishedmatrix withcontinue-on-error: trueso failures don't block the release but are visible:The
allow-prereleases: trueflag onactions/setup-pythonis required for pre-release Python versions to be resolved correctly.Note on maturin wheel availability
Pre-release Python versions require a wheel built with
abi3targeting the correct minimum version, or a source build. Thepyo3 = { version = "0.23", features = ["abi3-py311"] }feature inCargo.tomlmeans the existingabi3wheel should work on any Python >= 3.11 including 3.15-dev, as long as the CPython stable ABI is maintained (which it is, by design). If PyO3 itself has not yet been validated against 3.15, there may be link errors — this is exactly the signal thecontinue-on-errorlane provides.