Skip to content

feat(compat): support python 3.15 and pypy 3.12 - #848

Draft
TheKevJames wants to merge 1 commit into
masterfrom
kjames/python-3.15
Draft

TheKevJames wants to merge 1 commit into
masterfrom
kjames/python-3.15

Conversation

@TheKevJames

Copy link
Copy Markdown
Owner

Adds Python 3.15 and PyPy 3.12 to the CircleCI and GitHub Actions test matrices, and moves the published Docker image to Python 3.15.

  • Python 3.15: coverage <7.0.2 fails on 3.15 ("This implementation of Python doesn't support code analysis"; bisected locally: 7.0.0/7.0.1 fail, 7.0.2+ pass). The coverage requirement is now split at 3.15 (>=7.0.2 there), and py315 only runs the cov7 factor.
  • PyPy: PyPy 8.0.0 ships 3.11 (final line, barring security fixes) and 3.12 (beta). We now test every PyPy 3.x line in PyPy's current release that satisfies requires-python. The tox factor is split into pypy311/pypy312, the CircleCI images float on pypy:3.1x-slim (they were pinned to the 7.3 series, which has ended), and GitHub Actions now runs PyPy too.
  • Docker: python:3.15-alpine3.24 with git=2.54.0-r0. The renovate repology comment was already tracking alpine 3.24, but FROM and the git pin were still on 3.22.
  • Required checks: added test-py315, test-pypy312, test (3.15), test (pypy3.11) and test (pypy3.12).

Verified locally:

  • prek run --all-files passes.
  • py315 tox envs pass on python:3.15-rc-alpine.
  • All pypy311/pypy312 tox envs pass on pypy:3.11-slim/pypy:3.12-slim (PyPy 8.0.0).
  • uv pip compile rejects coverage==7.0.1 on 3.15 and accepts it on 3.14.
  • The Dockerfile builds and runs on python:3.15-rc-alpine3.24.

Do not merge yet: python:3.15-alpine and python:3.15-alpine3.24 aren't on Docker Hub yet, so test-py315 on CircleCI will fail until they're published.

Add Python 3.15 to the CircleCI and GitHub Actions test matrices. Coverage
releases before 7.0.2 fail on 3.15 with "This implementation of Python
doesn't support code analysis", so the coverage requirement is split at
3.15 and py315 is only tested against coverage v7.

The PyPy tox factor is split into pypy311 and pypy312 so each interpreter
is selected explicitly; both are tested on CircleCI (via floating
pypy:3.1x-slim images, replacing the abandoned 7.3 series pin) and are
now also tested on GitHub Actions. We test every PyPy 3.x line included in
PyPy's current release which satisfies our requires-python.

The published Docker image moves to python:3.15-alpine3.24, with the git
pin bumped to match the alpine version the renovate comment already
tracked.

python:3.15-alpine and python:3.15-alpine3.24 had not yet been published
to Docker Hub at the time of writing; the py315 CircleCI job and Docker
build depend on them.

changelog:
Python 3.15 and PyPy 3.12 are now supported. On Python 3.15, ``coverage``
must be at least v7.0.2. The published Docker image now uses Python 3.15.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant