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

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@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

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@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