Skip to content

Conversation

@shenxianpeng
Copy link
Contributor

@shenxianpeng shenxianpeng commented Oct 7, 2025

Python 3.14 has been released today, so let's start supporting it.

I kept Python 3.9 even though it's EOL, since some users (including myself on AIX 7.2 🙂) are still using it.

Summary by CodeRabbit

  • New Features

    • Added support for Python 3.14.
  • Tests

    • Continuous integration now runs against Python 3.14 to ensure compatibility.
  • Chores

    • Updated project metadata to include Python 3.14 in supported versions.
    • Adjusted tooling defaults to target Python 3.14.

@github-actions github-actions bot added the enhancement New feature or request label Oct 7, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 7, 2025

Walkthrough

Bumps Python upper bound from 3.13 to 3.14 across CI workflow, nox session default, and project classifiers. No control-flow or logic changes beyond version literals.

Changes

Cohort / File(s) Summary of changes
CI workflow matrix update
.github/workflows/tests.yml
Increased MAX_PYTHON_VERSION from 3.13 to 3.14 in test job environment.
Nox config default version
noxfile.py
Updated default MAX_VERSION from "3.13" to "3.14".
Project metadata classifiers
pyproject.toml
Added Python 3.14 to supported classifiers.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Suggested reviewers

  • 2bndy5

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title clearly and concisely summarizes the primary change of adding support for Python 3.14, aligning with the updated version bounds in CI configuration, noxfile defaults, and project classifiers. It avoids vague language and gives a teammate scanning history an immediate understanding of the enhancement.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/py314

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6e0ec21 and 10fd1f9.

📒 Files selected for processing (3)
  • .github/workflows/tests.yml (1 hunks)
  • noxfile.py (1 hunks)
  • pyproject.toml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (21)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: test (ubuntu-latest, 9)
  • GitHub Check: test (ubuntu-latest, 12)
  • GitHub Check: test (ubuntu-latest, 10)
  • GitHub Check: test (ubuntu-latest, 11)
  • GitHub Check: test (windows-latest, 13)
  • GitHub Check: test (ubuntu-latest, 21)
  • GitHub Check: test (ubuntu-latest, 19)
  • GitHub Check: test (ubuntu-latest, 20)
  • GitHub Check: test (windows-latest, 14)
  • GitHub Check: test (windows-latest, 10)
  • GitHub Check: test (windows-latest, 12)
  • GitHub Check: test (windows-latest, 9)
  • GitHub Check: test (windows-latest, 11)
  • GitHub Check: test (windows-latest, 15)
  • GitHub Check: test (windows-latest, 19)
  • GitHub Check: test (windows-latest, 17)
  • GitHub Check: test (windows-latest, 16)
  • GitHub Check: test (windows-latest, 20)
  • GitHub Check: test (windows-latest, 21)
  • GitHub Check: test (windows-latest, 18)
🔇 Additional comments (3)
noxfile.py (1)

58-58: nox MAX_VERSION bumped to 3.14 — good alignment with CI and packaging.

.github/workflows/tests.yml (1)

33-33: CI MAX_PYTHON_VERSION → 3.14 — aligned with nox and pyproject.

pyproject.toml (1)

31-31: Confirm dependency compatibility for Python 3.14
pyyaml has cp314 wheels, but requests and pygit2 do not—requests will fallback to sdist (pure-Python), while pygit2 requires building libgit2. Verify installation on all target OSes or document the build requirements.


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 and usage tips.

@shenxianpeng
Copy link
Contributor Author

It seems we need to wait for a new release of libgit2/pygit2@ff64e61

@2bndy5
Copy link
Contributor

2bndy5 commented Oct 7, 2025

I also raised awareness of their ability to deploy future-compatible wheels using cffi v2, cibuildwheels, and setuptools. See libgit2/pygit2#1418 (comment). We'll see if they are intereseted...

@2bndy5
Copy link
Contributor

2bndy5 commented Oct 20, 2025

FWIW, I've been diving into the pygit2 source code... They cannot deploy future-compatible wheels because some of pygit2 C sources rely parts of the Python C API that are not exposed in its Limited API. Note, Python C extensions must only use the Python C Limited API to guarantee future compatibility.

This might change in the future when Python 3.13 becomes the minimum supported Python version, but the as_buffer() functions are not likely become part of the Python C Limited API.

Aside from that, I have submitted patches to pygit2 to improve CI and support Python free-threaded variants (3.14t). Pygit2 v1.19.0 should be out soon.

@codecov
Copy link

codecov bot commented Oct 27, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.26%. Comparing base (4d2df05) to head (a742ace).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #167   +/-   ##
=======================================
  Coverage   98.26%   98.26%           
=======================================
  Files          23       23           
  Lines        1899     1899           
=======================================
  Hits         1866     1866           
  Misses         33       33           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@2bndy5
Copy link
Contributor

2bndy5 commented Oct 27, 2025

Pygit2 v1.19.0 is out! It drops support for Python 3.10.

@shenxianpeng In the future, we have to remember to update the uv.lock file to support newer Python versions:

uv sync --all-gruops -U

@2bndy5 2bndy5 merged commit f416f75 into main Oct 27, 2025
69 of 70 checks passed
@2bndy5 2bndy5 deleted the feature/py314 branch October 27, 2025 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants