Test and declare Python 3.13 and 3.14 - #134
Conversation
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.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (5)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughCI 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. ChangesPython support updates
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~5 minutes Merge Risk: ⚪ Minimal · up to 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)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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. Comment |
What
checkmatrix runs3.11,3.12,3.13,3.14.Python :: 3.13andPython :: 3.14. The PyPI "Python versions" badge in the README reads these, so it updates at the next release.requires-pythonstays>=3.11, mypypython_versionand rufftarget-versionstay 3.11, and the single-version jobs (adapters, docs, package, release, publish, fuzz) andaction.yml's default stay on the floor.src/.The one test fix
tests/test_migrations.py's release fixtures built their venv withvenv.create(env, with_pip=True), which copies the interpreter by default (python -m venvsymlinks on POSIX). A copied binary from a shared-libpython build looks forlibpythonnext to itself; on uv's CPython 3.14.2 for macOS it aborted with SIGABRT insideensurepip, and all five release fixtures errored (4 failed + 2 errors). The fixture now passessymlinks=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.shwithCTRLRUN_REQUIRE_RELEASE_FIXTURES=1)Before the fixture fix, 3.14 was 2818 passed, 4 failed, 2 errors, all in
test_migrations.py. 3.14'smultiprocessingdefault start method change does not reachtests/test_concurrency.py, which pinsspawn. The only 3.14 deprecation warning seen comes fromopenai-agentsitself (asyncio.get_event_loop_policy).After merge
Branch protection: add
check (3.13)andcheck (3.14)to the required status checks onmain, besidecheck (3.11)andcheck (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
Bug Fixes
Documentation