Skip to content

Make Python 3.15 primary, add PyPy 3.12, and modernize CI - #535

Merged
jaypantone merged 5 commits into
developfrom
update-github-actions-tests
Oct 27, 2026
Merged

jaypantone merged 5 commits into
developfrom
update-github-actions-tests

Conversation

@jaypantone

@jaypantone jaypantone commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Make Python 3.15 the primary version for linting, type checking, packaging, and Linux/macOS/Windows tests. Keep Linux compatibility coverage for CPython 3.11–3.14 and PyPy 3.11, and add a required PyPy 3.12 job. PyPy 3.12 is already stable (PyPy 8.0.1), so this uses the normal stable version selector.

Drop CPython and PyPy 3.10 support for the next release: require Python >=3.11, remove the 3.10 jobs and tox environments, update classifiers, target Python 3.11 in Black, and document the change in the README and changelog.

The previous workflow installed development dependencies outside tox, where isolated environments could not use them, while tox unconditionally reinstalled development CSS even for release checks. Select both CSS and Permuta inside tox instead: master and PRs targeting it use PyPI releases; other branches use both development branches. Apply this consistently to pytest, mypy, and pylint. Install pycparser and setuptools only in PyPy test environments to satisfy the dependencies of its bundled cffi and HPy packages; the first hosted run exposed this during pip check.

Also update checkout and setup-python to v7 in both workflows, enable pip caching and cancellation of superseded runs, add manual dispatch and a job timeout, configure weekly Dependabot updates for Actions, and align the Black pre-commit pin with tox. Remove obsolete pylint configuration and use ValueError for three invalid-input paths without suppressing the exception checks.

Validation:

  • All four lint/type checks pass on Python 3.15; actionlint passes.
  • Python 3.15 builds both the wheel and source distribution; twine check passes for both. Wheel metadata confirms Python >=3.11.
  • Full suites passed earlier in this PR on Python 3.14 with development dependencies and Python 3.15 with released dependencies: 3,719 tests each.
  • All 28 tests covering the invalid-input exception cleanup passed.
  • Verified that all 13 workflow jobs map to tox environments and that development dependencies are actually installed from their Git branches inside tox.
  • Stable PyPy 3.12 with development dependencies: all 3,719 tests passed locally.
  • All 13 jobs in the hosted PR matrix pass, including Python 3.15 on Linux/macOS/Windows and PyPy 3.11/3.12. The push run also passed.
  • The PR PyPy 3.12 job needed one retry after a TLS-handshake timeout contacting permpal.com; the same commit passed on the retry, in the parallel push run, and locally.

Remove the obsolete suggestion-mode option and qualify the configured exception names. Use ValueError for three invalid-input paths so the enabled exception checks pass.
Require Python 3.11 or newer, remove CPython and PyPy 3.10 environments, and run linting, packaging, and cross-platform tests on 3.15. Supply the dependencies of bundled PyPy packages so pip check succeeds in isolated tox environments.
@jaypantone jaypantone changed the title Modernize GitHub Actions tests and fix tox dependency selection Make Python 3.15 primary, add PyPy 3.12, and modernize CI Oct 23, 2026

@ulfarsson ulfarsson left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks good, except for all the testing stuff in the readme

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@jaypantone
jaypantone merged commit 1967e5a into develop Oct 27, 2026
26 checks passed
@jaypantone
jaypantone deleted the update-github-actions-tests branch October 27, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants