Repository navigation
Support Python 3.10 through 3.15 #18
Copy link
Copy link
Closed
Labels
area: ciContinuous integration and workflow configuration.Continuous integration and workflow configuration.area: packaging/releasePackaging, artifacts, compatibility, and release qualification.Packaging, artifacts, compatibility, and release qualification.gate: adversarial reviewResolve, merge, or explicitly defer before the next full adversarial review.Resolve, merge, or explicitly defer before the next full adversarial review.
Description
Motivation
Broaden codex32 compatibility from the original >=3.12,<3.14 range to Python 3.10 through 3.15.
Python 3.10 remains in security-fix support until October 2026, and Bitcoin Core uses Python 3.10 as its minimum for scripts and tests. Since codex32 has no runtime dependencies, supporting the full 3.10–3.15 range is useful and should carry little ongoing cost.
During review of #36, the project explicitly chose to promise Python 3.15 prerelease coverage rather than treat it as a permanently allowed-to-fail smoke job. Until 3.15 final is available, CI uses actions/setup-python prerelease support.
References:
- https://devguide.python.org/versions/
- https://github.com/bitcoin/bitcoin/blob/master/doc/dependencies.md
Compatibility work
- Replace
enum.StrEnum(added in 3.11) with a 3.10-compatible string enum pattern. - Replace the PEP 695
type _ProfileRules = ...statement (added in 3.12) with a 3.10-compatible type alias. - Update
requires-python, Trove classifiers, README support text, and the mypy target. - Keep the expensive cross-platform lint/build/wheel matrix on 3.12/3.13 while running the full pytest suite on Ubuntu for the remaining supported interpreters (3.10, 3.11, 3.14, and 3.15).
- Use
allow-prereleasesfor 3.15 until the final interpreter is available.
Acceptance criteria
- Package metadata advertises
>=3.10,<3.16and the 3.10–3.15 classifiers. - The package installs and the full pytest suite passes on Python 3.10 through 3.15; prerelease 3.15 is tested with prereleases enabled until final release.
- CI does not silently ignore failures on a supported Python version.
- Compatibility code remains shared across supported Python versions.
- The existing lint, type, build, wheel, and differential checks remain covered without unnecessarily multiplying expensive jobs.
Implemented by #36, which is merged into the #7 integration branch and will reach reviewability-v1 with #7.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area: ciContinuous integration and workflow configuration.Continuous integration and workflow configuration.area: packaging/releasePackaging, artifacts, compatibility, and release qualification.Packaging, artifacts, compatibility, and release qualification.gate: adversarial reviewResolve, merge, or explicitly defer before the next full adversarial review.Resolve, merge, or explicitly defer before the next full adversarial review.
Activity
Support Python 3.10 through 3.14
Support Python 3.10 through 3.14
Support Python 3.10 through 3.15
Support Python 3.10 through 3.15
Support Python 3.10 through 3.15
Support Python 3.10 through 3.15
Support Python 3.10 through 3.15
Support Python 3.10 through 3.15
Support Python 3.10 through 3.15
[-]Support Python 3.10 through 3.14[/-][+]Support Python 3.10 through 3.15[/+]Remove Python wallet test dependencies
Remove Python wallet test dependencies
BenWestgate commentedon Sep 30, 2026
Closed by
reviewability-v1merging to master