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:
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-prereleases for 3.15 until the final interpreter is available.
Acceptance criteria
- Package metadata advertises
>=3.10,<3.16 and 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.
Motivation
Broaden codex32 compatibility from the original
>=3.12,<3.14range 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-pythonprerelease support.References:
Compatibility work
enum.StrEnum(added in 3.11) with a 3.10-compatible string enum pattern.type _ProfileRules = ...statement (added in 3.12) with a 3.10-compatible type alias.requires-python, Trove classifiers, README support text, and the mypy target.allow-prereleasesfor 3.15 until the final interpreter is available.Acceptance criteria
>=3.10,<3.16and the 3.10–3.15 classifiers.Implemented by #36, which is merged into the #7 integration branch and will reach
reviewability-v1with #7.