Skip to content

Support Python 3.10 through 3.15 - #36

Merged
BenWestgate merged 1 commit into
3-remove-python-bip32-dependencyfrom
codex/python-3.10-3.14
Sep 27, 2026
Merged

BenWestgate merged 1 commit into
3-remove-python-bip32-dependencyfrom
codex/python-3.10-3.14

Conversation

@BenWestgate

@BenWestgate BenWestgate commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Closes #18.

This extends the supported interpreter range through Python 3.15 and makes 3.15 blocking CI coverage.

  • support Python 3.10 through 3.15 in package metadata and documentation
  • replace the few 3.11+/3.12-only runtime conveniences with 3.10-compatible equivalents
  • preserve Profile string behavior
  • run the full test suite on every supported Python version: 3.12/3.13 across Ubuntu, macOS, and Windows; 3.10/3.11/3.14/3.15 on Ubuntu
  • keep the existing lint, type, differential, build, and wheel checks on the cross-platform matrix without multiplying those expensive checks across every OS/version pair
  • make the create CLI test terminal double robust to interpreter-level argparse TTY probes; production create preflight still requires only interactive stdin/stdout and still runs before Bitcoin Core initialization or entropy

The split CI matrix is deliberate: 3.12/3.13 exercise platform differences across Ubuntu, macOS, and Windows, while the Ubuntu compatibility job fills the remaining supported interpreters (3.10, 3.11, 3.14, and 3.15). Every supported Python therefore gets a full pytest run at least once. The 3.15 setup step permits prerelease resolution only for that matrix leg because GitHub's hosted Python toolcache does not yet expose a stable 3.15 build; the 3.15 job itself remains blocking.

Validation:

  • python -m pytest -q tests/test_cli.py — 223 passed
  • python -m pytest -q — 864 passed
  • strict mypy targeting Python 3.10
  • Ruff check/format targeting Python 3.10
  • package build and Twine checks
  • GitHub Actions pull-request matrix — all 10 jobs passed, including blocking Python 3.15 coverage

Stacked on #7. The branch is one commit ahead of the current #7 head and zero behind.

Disclosure: AI tools were used while implementing and checking this user-requested branch-to-branch contribution.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bb2d628a0a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread pyproject.toml Outdated
@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch from bb2d628 to f49f06b Compare September 23, 2026 22:35

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f49f06b8ad

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/python-package.yml
@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch from f49f06b to f7049e3 Compare September 23, 2026 22:53
Comment thread .github/workflows/python-package.yml Outdated

@BenWestgate BenWestgate left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good except for python-package.yml

@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch from f7049e3 to 3e25979 Compare September 24, 2026 01:38
@BenWestgate BenWestgate changed the title Support Python 3.10 through 3.14 Support Python 3.10 through 3.15 Sep 24, 2026
@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch from 3e25979 to 6fc90d5 Compare September 24, 2026 01:39
@BenWestgate BenWestgate added gate: adversarial review Resolve, merge, or explicitly defer before the next full adversarial review. area: ci Continuous integration and workflow configuration. area: packaging/release Packaging, artifacts, compatibility, and release qualification. enhancement New feature or request labels Sep 24, 2026
@BenWestgate

Copy link
Copy Markdown
Owner Author

The python-package.yml split is deliberate: 3.12/3.13 keep the full cross-platform matrix plus mypy/Ruff/differential/build/wheel checks, while 3.10/3.11/3.14/3.15 run the full pytest suite as required Ubuntu compatibility jobs. That exercises every advertised interpreter without multiplying the expensive platform/tooling matrix. All six supported versions are green at the current head.

Disclosure: AI-assisted verification of the current workflow and check results.

@chatgpt-codex-connector

This comment has been minimized.

@BenWestgate

Copy link
Copy Markdown
Owner Author

Stack refresh completed at 1b2e9c9: merged the current #7 head into this branch without rewriting history. Fresh .[dev] installation succeeds; 864 pytest tests pass, along with Ruff check/format, strict mypy, and git diff --check. The earlier PR-description warning that this branch still needed refresh is now satisfied.

@BenWestgate

Copy link
Copy Markdown
Owner Author

Correction to my preceding refresh note: this branch is now refreshed to the current #7 head, but integration preflight against today’s reviewability-v1 still finds a pyproject.toml conflict caused by base-branch drift outside #7. After #7 is merged, retarget #36 to reviewability-v1 and do one final refresh/range-diff before merge. The compatibility commit itself and its fresh .[dev]/864-test validation remain clean.

@BenWestgate BenWestgate left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI-generated review (Claude), posted at the maintainer's request.

Concept ACK. Code looks right; not ACKing 1b2e9c9 until it's rebased.

  • The head is a merge of #7 (1b2e9c9). CONTRIBUTING asks for no merge commits, so rebase 6fc90d5 onto #7's head, as the PR body already says.
  • I found no other 3.11+ APIs in src. Profile(str, Enum) with __str__ = str.__str__ also gives "ms" from format()/f-strings on 3.10/3.11.
  • 3.15 classifier/cap ahead of the 3.15.0 final is fine given allow-prereleases CI.

Copy link
Copy Markdown
Owner Author

Release-gate recheck: the earlier “rebase before ACK” review condition is still real. Although the branch compares as 2 commits ahead / 0 behind #7 head 90e5460, current head 1b2e9c9 is itself Merge updated wallet test boundary and preserves the refresh merge. Please rebase the compatibility delta onto 90e5460 so the PR becomes a linear #7 → Python-compatibility stack with no merge commit, then rerun the matrix. Until that rewrite, treat this as Concept ACK rather than final ACK.

@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch from 1b2e9c9 to 860ffb0 Compare September 27, 2026 03:19
@chatgpt-codex-connector

This comment has been minimized.

@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch 2 times, most recently from 71f77a9 to 012e562 Compare September 27, 2026 13:29
Use Python 3.10-compatible enum, typing, and integer conversion forms while preserving existing behavior. Advertise and test Python 3.10 through 3.15, and make create tests robust to interpreter-level terminal probes.

Security: no intended change to codex32 encoding, recovery, creation preflight, or wallet behavior.

Validation:
- python -m pytest -q tests/test_cli.py (223 passed)
- python -m pytest -q (864 passed)
- python -m mypy src/codex32
- python -m ruff check --target-version py310 .
- python -m ruff format --check .
- python -m build --no-isolation
- python -m twine check built artifacts

Refs #18.
@BenWestgate
BenWestgate force-pushed the codex/python-3.10-3.14 branch from 012e562 to 5361df5 Compare September 27, 2026 13:32

@BenWestgate BenWestgate left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@BenWestgate
BenWestgate merged commit 8338c72 into 3-remove-python-bip32-dependency Sep 27, 2026
20 checks passed
@BenWestgate
BenWestgate deleted the codex/python-3.10-3.14 branch September 27, 2026 13:54
BenWestgate added a commit that referenced this pull request Sep 27, 2026
Refresh the dependency-removal branch onto the current reviewability-v1 base. Preserve Python 3.10-3.15 support from #36 and the MIT/BSD license metadata from #15.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci Continuous integration and workflow configuration. area: packaging/release Packaging, artifacts, compatibility, and release qualification. enhancement New feature or request gate: adversarial review Resolve, merge, or explicitly defer before the next full adversarial review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant