ci: run lint, mypy and tests on Python 3.12 to 3.14 - #285
Merged
Merged
Conversation
The release workflow runs its checks on Python 3.14, but pull requests only ran them on 3.8 to 3.11. A break specific to 3.14 therefore passed review and failed on the tag, as the flake8 crash did for v2.45.1. The matrix now covers the release interpreter.
klotty
approved these changes
Sep 15, 2026
klotty
left a comment
There was a problem hiding this comment.
No issues found across 1 file
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
Auto-approved: Expands CI test matrix to include Python 3.12 through 3.14 to match the release workflow.
Re-trigger cubic
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Maintainers now learn about a Python 3.14 break while a pull request is in review, not after the release tag is pushed.
Before, pull requests ran lint, mypy and tests on Python 3.8 to 3.11 only, while the Release workflow runs the same checks on 3.14. A break specific to 3.14 passed every review and failed on the tag. That is what happened to
v2.45.1, which needed a fix pull request and a second tag.Now every pull request also runs the checks on 3.12, 3.13 and 3.14, the same interpreter the release uses. Supported versions do not change. 3.8 to 3.11 stay in the matrix, and the package metadata is untouched.
How to reach it. Open any pull request and look at the checks. Each of the two jobs lists seven Python versions.
Not covered. The classifiers in
setup.pystill stop at 3.11, so PyPI does not yet advertise 3.12 to 3.14. Adding them is a separate, deliberate decision.Summary by cubic
Runs lint, mypy, and tests on Python 3.12 to 3.14 in every pull request so release-only breakage is caught during review.
Before, PRs only ran those checks on Python 3.8 to 3.11, while the release workflow used 3.14. A 3.14-specific break could pass review and then fail on the tag. The CI matrix now includes 3.12, 3.13, and 3.14 as well. The package's supported Python versions don't change, and
setup.pyclassifiers still stop at 3.11.Written for commit fec3aa4. Summary will update on new commits.