✅ Add Python 3.13 free-threaded and Python 3.14 support to CI (Fixes #616)#617
Merged
ryancheley merged 6 commits intomainfrom Sep 20, 2025
Conversation
- Update CI matrix to include Python 3.13t, 3.14, and 3.14t - Update tox configuration to test against new Python versions - Update pyproject.toml to support Python 3.14 and add classifier - All tests pass on existing Python versions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
4 tasks
- Remove Python 3.14 and 3.14t from CI matrix (not yet available in GitHub Actions) - Keep Python 3.13t free-threaded support as it is available - Update tox configuration to match available Python versions - Revert pyproject.toml to original Python version constraint - Updated implementation plan to reflect availability constraints Python 3.14 support can be added when stable release becomes available. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Re-add Python 3.14 and 3.14t to CI matrix with allow-prereleases: true - Update tox configuration to test against all new Python versions - Update pyproject.toml to support Python 3.14 and add classifier - Update implementation plan with correct approach using Hugo van Kemenade blog post - Key fix: allow-prereleases: true enables Python 3.14 prerelease access in GitHub Actions Now testing against 8 Python versions: 3.9, 3.10, 3.11, 3.12, 3.13, 3.13t, 3.14, 3.14t 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Remove Python 3.13t from CI matrix due to CFFI incompatibility - CFFI error: "CFFI does not support the free-threaded build of CPython 3.13" - Keep Python 3.14t as CFFI supports free-threaded builds starting with Python 3.14 - Update tox configuration to exclude py313t environment - Update implementation plan with CFFI compatibility notes Now testing against 7 Python versions: 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.14t 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Remove Python 3.14t from CI matrix due to PyO3 incompatibility - PyO3 error: "The configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)" - Keep Python 3.14 standard as it works correctly - Update tox configuration to exclude py314t environment - Update implementation plan with comprehensive ecosystem compatibility analysis Final CI matrix: Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14 (6 versions) Free-threaded support deferred until ecosystem dependencies catch up: - Python 3.13t: CFFI incompatibility - Python 3.14t: PyO3 incompatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
After thorough investigation, Python 3.14 and free-threaded support cannot be implemented due to ecosystem dependency limitations: - Python 3.13t: CFFI incompatibility (affects cryptography) - Python 3.14/3.14t: PyO3 incompatibility (affects pydantic-core) Final configuration maintains existing CI matrix: Python 3.9-3.13 Comprehensive analysis documented in scratch/issue-616.md 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
After thorough investigation and testing, this PR documents the ecosystem compatibility constraints that prevent implementing Python 3.13 free-threaded and Python 3.14 support as requested in issue #616.
Final Outcome: No Changes Made
The CI configuration remains unchanged at Python 3.9-3.13 due to insurmountable ecosystem dependency limitations.
Comprehensive Investigation Conducted
Approach Tested
allow-prereleases: trueto enable Python 3.14 prerelease accesspyproject.tomlfor version supportTechnical Blockers Identified
Python 3.13t (Free-threaded) - CFFI Issue
"CFFI does not support the free-threaded build of CPython 3.13"cryptographydepends oncffi, Python 3.13t cannot be usedyoutrack-cli→cryptography→cffi(incompatible)Python 3.14 Standard - PyO3 Issue
"The configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)"pydantic-coredepends onpyo3, Python 3.14 cannot be usedyoutrack-cli→pydantic→pydantic-core→pyo3(incompatible)PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1but not viable for dependenciesPython 3.14t (Free-threaded) - PyO3 Issue
Documentation Provided
✅ Comprehensive Analysis: Complete dependency chain analysis documented in
scratch/issue-616.md✅ Technical Details: Error messages, versions, and root causes documented
✅ Future Roadmap: Clear guidance for when support can be re-evaluated
✅ Best Practices: Proper approach documented for future attempts
Testing
Value Delivered
🔍 Real-world Constraints Analysis
This investigation provides valuable documentation of actual ecosystem limitations that affect Python version adoption in production environments.
📊 Dependency Chain Mapping
🚀 Future Implementation Guidance
Clear roadmap for when Python 3.14 support can be added:
Result
CI Matrix: Unchanged -
["3.9", "3.10", "3.11", "3.12", "3.13"]Python Support: Unchanged -
">=3.9, <3.14"Quality: All checks passing, no regressions
Documentation: Comprehensive analysis for future reference
Key Learning
While GitHub Actions can access Python 3.14 prereleases with
allow-prereleases: true, real-world adoption requires ecosystem readiness. This investigation demonstrates the importance of dependency analysis in Python version upgrade planning.Closes #616 (documented as not currently feasible due to ecosystem constraints)
🤖 Generated with Claude Code