Skip to content

feat: add Python 3.13 and Node 26 support - #87

Merged
anchildress1 merged 4 commits into
mainfrom
feat/support-python313-node26
Jun 27, 2026
Merged

anchildress1 merged 4 commits into
mainfrom
feat/support-python313-node26

Conversation

@anchildress1

Copy link
Copy Markdown
Owner

What

Extend the supported runtime matrix to Python 3.13 and Node 26.

Python

  • requires-python upper bound <3.13 → <3.14
  • Add Programming Language :: Python :: 3.13 classifier
  • Add py313 to Black target-version
  • Regenerate uv.lock with cp313 wheels (black, coverage, pytokens, tomli)

Node

  • engines.node >=20 <25 → >=20 <27 (root + node-commitlint)
  • Propagated into package-lock.json

CI

  • Python test matrix: ["3.11", "3.12"] → + "3.13"
  • Node test matrix: [20, 22, 24] → + 26

Verification (local)

check Python 3.13 Node 26
lint black + isort eslint
tests 25 pass, 100% cov 21 pass, 100% cov
build uv build tsc

uv sync --locked resolves clean against the regenerated lock; no dependency version regressions.

Generated-by: Claude Opus 4.8 noreply@anthropic.com

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings June 27, 2026 03:40
@codecov

codecov Bot commented Jun 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Extend the supported runtime matrix:
- Python: requires-python upper bound 3.13 -> 3.14, add 3.13 classifier
  and Black py313 target; regenerate uv.lock with cp313 wheels.
- Node: bump engines >=20 <25 -> >=20 <27 (root + node-commitlint).
- CI: add 3.13 to the Python test matrix, 26 to the Node test matrix.

Generated-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@anchildress1
anchildress1 force-pushed the feat/support-python313-node26 branch from 0d7124c to e44da73 Compare June 27, 2026 03:42

@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: 0d7124ca13

ℹ️ 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 package-lock.json Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Extends the repo’s declared/runtime-tested support matrix to include Python 3.13 and Node 26, updating packaging metadata, lockfiles, and CI matrices accordingly.

Changes:

  • Python: relax requires-python upper bound to <3.14, add Python 3.13 classifier, and include py313 in Black’s target versions (plus regenerated uv.lock for cp313 wheels).
  • Node: broaden engines.node to >=20 <27 (root + workspace) and propagate into package-lock.json.
  • CI: add Python 3.13 and Node 26 to the GitHub Actions test matrix.

Reviewed changes

Copilot reviewed 4 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/python-gitlint/uv.lock Updates lock metadata and adds cp313 wheel entries to support Python 3.13 resolution.
packages/python-gitlint/pyproject.toml Updates Python version constraints, classifiers, and Black target versions for 3.13.
packages/node-commitlint/package.json Expands Node engine constraint to allow Node 26.
package.json Expands root Node engine constraint to allow Node 26.
package-lock.json Propagates engine range changes and updates resolved dependency graph/metadata.
.github/workflows/test-and-build.yml Adds Node 26 and Python 3.13 to the CI matrix.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 6 changed files in this pull request and generated no new comments.

anchildress1 and others added 2 commits June 27, 2026 05:36
The root devDependency pinned @checkmarkdevtools/commitlint-plugin-rai at
^0.0.0, which only satisfies 0.0.x and cannot import the published 0.1.6
plugin outside the workspace symlink. Pin to ^0.1.6 so registry installs
resolve the latest version.

Also bump the documented Node range to < 27.0.0 to match the engines
change in this PR.

Generated-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Trivy: drop the `license` scanner from the Scorecard job. License
  detection (MIT/ISC/PolyForm) is not a vulnerability and duplicated the
  dedicated license-scan job, flooding code-scanning with 19 noise alerts.
- lockfile-refresh: harden the workflow_run privileged jobs against the
  CodeQL untrusted-checkout finding — persist-credentials: false on
  checkout, guard jobs on a release-please-- ref allowlist, and push with
  an explicit scoped token instead of git-auto-commit-action.
- uv.lock: bump Pygments 2.19.2 -> 2.20.0 (GHSA-5239-wwwm-4pmq).
- security-audit: quote $GITHUB_OUTPUT to clear an actionlint SC2086 nit.

Generated-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread .github/workflows/lockfile-refresh.yml Fixed
@anchildress1
anchildress1 force-pushed the feat/support-python313-node26 branch 2 times, most recently from ed3533a to 229286a Compare June 27, 2026 12:10
The previous single privileged job both executed the resolved branch
(npm/uv) and held contents: write, which CodeQL flags as
untrusted-checkout (critical: checkout + execution; high: privileged
checkout) and cache-poisoning. persist-credentials and disabling the
cache could not clear the findings on their own.

Split the work along the privilege boundary, per GitHub's documented
mitigation, and avoid actions/checkout of the resolved (untrusted) ref
in this workflow_run context entirely — both jobs clone the branch tip
over public HTTPS instead:

- refresh-lockfiles (contents: read): clones and executes the branch
  (npm install --package-lock-only, uv lock) and uploads both lockfiles
  as an artifact. Read-only token; caching disabled so the untrusted run
  cannot poison the default-branch cache scope.
- commit-lockfiles (contents: write): never executes branch code. It
  clones only the branch tip, applies the artifact lockfiles as data, and
  pushes with a scoped token. No privileged checkout, no execution.

Also collapses the two near-duplicate npm/uv commit jobs into a single
atomic "chore: refresh lockfiles" commit.

Generated-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@anchildress1
anchildress1 force-pushed the feat/support-python313-node26 branch from 229286a to df6e7f0 Compare June 27, 2026 12:14
@anchildress1
anchildress1 merged commit 705977c into main Jun 27, 2026
18 checks passed
@anchildress1
anchildress1 deleted the feat/support-python313-node26 branch June 27, 2026 13:55
This was referenced Jul 5, 2026
@github-actions github-actions Bot mentioned this pull request Jul 31, 2026
@github-actions github-actions Bot mentioned this pull request Sep 14, 2026
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.

3 participants