Skip to content

Test and declare Python 3.13 and 3.14 - #134

Merged
arpanghoshal merged 1 commit into
mainfrom
ci/python-3.13-3.14
Sep 11, 2026
Merged

Test and declare Python 3.13 and 3.14#134
arpanghoshal merged 1 commit into
mainfrom
ci/python-3.13-3.14

Conversation

@arpanghoshal

@arpanghoshal arpanghoshal commented Sep 10, 2026

Copy link
Copy Markdown
Member

What

  • CI: the check matrix runs 3.11, 3.12, 3.13, 3.14.
  • Packaging: classifiers add Python :: 3.13 and Python :: 3.14. The PyPI "Python versions" badge in the README reads these, so it updates at the next release.
  • Floor unchanged: requires-python stays >=3.11, mypy python_version and ruff target-version stay 3.11, and the single-version jobs (adapters, docs, package, release, publish, fuzz) and action.yml's default stay on the floor.
  • No library code changes. Nothing under src/.

The one test fix

tests/test_migrations.py's release fixtures built their venv with venv.create(env, with_pip=True), which copies the interpreter by default (python -m venv symlinks on POSIX). A copied binary from a shared-libpython build looks for libpython next to itself; on uv's CPython 3.14.2 for macOS it aborted with SIGABRT inside ensurepip, and all five release fixtures errored (4 failed + 2 errors). The fixture now passes symlinks=os.name != "nt". I have not confirmed whether GitHub's Linux 3.14 build hits the same abort; the change is harmless either way.

Evidence (local, macOS arm64, scripts/check.sh with CTRLRUN_REQUIRE_RELEASE_FIXTURES=1)

Python ruff format / check mypy --strict src pytest
3.12.3 (this branch) pass pass 2900 passed, 45 skipped
3.13.5 pass pass 2824 passed, 47 skipped
3.14.2 (this branch) pass pass 2824 passed, 47 skipped
3.14.2 adapter suites (langgraph 1.2.11, openai-agents 0.22.2) 76 passed

Before the fixture fix, 3.14 was 2818 passed, 4 failed, 2 errors, all in test_migrations.py. 3.14's multiprocessing default start method change does not reach tests/test_concurrency.py, which pins spawn. The only 3.14 deprecation warning seen comes from openai-agents itself (asyncio.get_event_loop_policy).

After merge

Branch protection: add check (3.13) and check (3.14) to the required status checks on main, beside check (3.11) and check (3.12). Until then a red 3.13/3.14 leg would not block a merge.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added support and package metadata for Python 3.13 and 3.14.
    • Expanded automated testing across Python 3.11–3.14.
  • Bug Fixes

    • Improved migration test virtual environment setup on POSIX platforms by linking the interpreter instead of copying it.
  • Documentation

    • Updated the unreleased changelog with Python support and migration test details.

CI's check matrix runs 3.11, 3.12, 3.13 and 3.14, and the classifiers
name all four. The floor is unchanged: requires-python stays >=3.11 and
mypy and ruff still target 3.11. No library code changes.

The migration tests' release fixtures now build their venv with
symlinks, as `python -m venv` does on POSIX. venv.create copies the
interpreter by default, and a copied shared-libpython binary (uv's
CPython 3.14 on macOS) aborted inside ensurepip, erroring all five
release fixtures.
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: fdc7a431-c606-4665-8d04-387112e7c1b5

📥 Commits

Reviewing files that changed from the base of the PR and between 6495d89 and e190782.

📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • .github/workflows/codeql.yml
  • CHANGELOG.md
  • pyproject.toml
  • tests/test_migrations.py

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

CI now tests Python 3.11 through 3.14. Package metadata and the changelog record Python 3.13 and 3.14 support. Migration fixtures use POSIX interpreter symlinks.

Changes

Python support updates

Layer / File(s) Summary
Python version coverage and metadata
.github/workflows/ci.yml, .github/workflows/codeql.yml, pyproject.toml, CHANGELOG.md
The CI matrix adds Python 3.13 and 3.14. Package classifiers and the changelog record the new versions. The CodeQL comment lists the updated checks.
Migration fixture virtual environments
tests/test_migrations.py
_release_venv passes symlinks=os.name != "nt" to venv.create, using symlinks on POSIX and copies on Windows.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to e1907

The PR consistently adds Python 3.13 and 3.14 coverage while preserving Python 3.11 support, and the migration fixture change is aligned across the supplied files.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: testing Python 3.13 and 3.14 in CI and declaring support in package metadata.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 1 functions across 1 files. (4 skipped: 4 …
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/python-3.13-3.14

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@arpanghoshal
arpanghoshal merged commit 724ae6e into main Sep 11, 2026
14 checks passed
@arpanghoshal
arpanghoshal deleted the ci/python-3.13-3.14 branch September 11, 2026 06:37
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.

1 participant