Skip to content

build: drop Python 3.10 and require filelock 4.2.1 - #322

Merged
shenxianpeng merged 1 commit into
mainfrom
claude/project-thread-vtucf2
Nov 5, 2026
Merged

shenxianpeng merged 1 commit into
mainfrom
claude/project-thread-vtucf2

Conversation

@shenxianpeng

@shenxianpeng shenxianpeng commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Why

Dependabot reports 17 advisories on filelock 4.1.0 in uv.lock (1 high, 12 medium, 4 low). All are fixed in filelock 4.2.1.

filelock 4.1.1 and later need Python 3.11, so as long as the hooks support Python 3.10, uv.lock has to keep filelock 4.1.0 for 3.10 and the alerts stay open. Python 3.10 reached end of life in October 2026.

What changes

  • requires-python = ">=3.11"; the 3.10 classifier and the 3.10 CI job are removed.
  • filelock>=4.2.1 instead of >=3.16.
  • uv.lock pins filelock 4.2.4, the newest release older than the 7-day Dependabot cooldown. tomli, exceptiongroup and typing-extensions drop out (3.10 only).
  • AGENTS.md, CONTRIBUTING.md and the _install_lock docstring no longer mention Python 3.10 or filelock 3.x.

Impact

The hooks only use FileLock to serialize installs. Most of the advisories are in ReadWriteLock, SoftReadWriteLock and StrictSoftFileLock, which the hooks do not use. The rest need another local user with write access to the pre-commit environment directory. Users on Python 3.11+ already got a fixed filelock, because the dependency was not capped.

Users still on Python 3.10 can keep using the current release.

Testing

  • 398 tests pass on Python 3.11 and 3.13, coverage 100%.
  • An OSV scan of the new uv.lock finds no known vulnerabilities.

Summary by CodeRabbit

  • Compatibility
    • Python 3.10 is no longer supported. Python 3.11 or newer is now required.
    • Automated tests run on Python 3.11 through 3.15.
  • Documentation
    • Updated project setup and support information to reflect the Python version requirement.

filelock 4.2.1 fixes the 17 advisories Dependabot reports on 4.1.0.
filelock 4.2 needs Python 3.11, and Python 3.10 reached end of life
in October 2026, so the hooks now need Python 3.11 too.

uv.lock now pins filelock 4.2.4, the newest release older than the
7-day Dependabot cooldown.
@shenxianpeng shenxianpeng self-assigned this Nov 5, 2026
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Nov 5, 2026
@sonarqubecloud

sonarqubecloud Bot commented Nov 5, 2026

Copy link
Copy Markdown

@codecov

codecov Bot commented Nov 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (377efa7) to head (d798760).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #322   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            4         4           
  Lines          611       611           
=========================================
  Hits           611       611           

☔ View full report in Codecov by Harness.
📢 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.

@coderabbitai

coderabbitai Bot commented Nov 5, 2026

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Walkthrough

The project now requires Python 3.11 or newer, and its test matrix starts at Python 3.11. The minimum filelock version is now 4.2.1, and the _install_lock documentation has been updated.

Changes

Compatibility updates

Layer / File(s) Summary
Python support range
pyproject.toml, .github/workflows/test.yml, AGENTS.md, CONTRIBUTING.md
The minimum supported Python version changes from 3.10 to 3.11. The Python 3.10 classifier and test matrix entry are removed. The support and setup documentation now states the updated minimum and tested range.
Filelock requirement and lock documentation
pyproject.toml, cpp_linter_hooks/util.py
The minimum filelock version changes from 3.16 to 4.2.1. The _install_lock documentation removes its statement about the unlocked fallback for filelock 3.x and retains the stale-lock-file case.

Estimated code review effort: 2 (Simple) | ~5 minutes

Possibly related PRs

Merge Risk: Minimal · up to d7987

No actionable merge-blocking issue is established. The Python minimum and dependency updates appear consistent and mergeable subject to normal checks.

Pre-merge checks: Passed 5

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title "build: drop Python 3.10 and require filelock 4.2.1" matches the main changes. The raw summary and objectives show the minimum Python version moves from 3.10 to 3.11, the 3.10 classifier and…
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 with cyclomatic complexity of at least 2. Documentat…
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.
Full details: Title check

Explanation

The title "build: drop Python 3.10 and require filelock 4.2.1" matches the main changes. The raw summary and objectives show the minimum Python version moves from 3.10 to 3.11, the 3.10 classifier and CI matrix entry are removed, and the filelock minimum rises from 3.16 to 4.2.1. The title is specific, concise, and follows the conventional commit style. It omits the docs cleanup and the removal of tomli, exceptiongroup, and typing-extensions, which is acceptable because a title does not need every detail.

Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 1 functions across 1 files. (4 skipped: 4 unsupported.)

Finishing Touches

Generate docstrings

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 27a152aa-faf8-4938-871e-0f567cd07f24
Commits

Reviewing files that changed from the base of the PR and between 161a0a3 and d798760.

Files ignored due to path filters: 1

  • uv.lock is excluded by !**/*.lock
Files selected for processing: 5

  • .github/workflows/test.yml
  • AGENTS.md
  • CONTRIBUTING.md
  • cpp_linter_hooks/util.py
  • pyproject.toml

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

@shenxianpeng shenxianpeng added maintenance Targets chores, refactors and cleanups and removed documentation Improvements or additions to documentation labels Nov 5, 2026
@shenxianpeng
shenxianpeng merged commit b085939 into main Nov 5, 2026
32 checks passed
@shenxianpeng
shenxianpeng deleted the claude/project-thread-vtucf2 branch November 5, 2026 21:00
@shenxianpeng shenxianpeng added the breaking This is a breaking change label Nov 5, 2026
@codspeed

codspeed Bot commented Nov 5, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

1 warning

⚠️ 58 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

✅ 92 untouched benchmarks
⏩ 54 skipped benchmarks1


Comparing claude/project-thread-vtucf2 (d798760) with main (377efa7)2

Open in CodSpeed

Footnotes

  1. 54 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

  2. No successful run was found on main (161a0a3) during the generation of this report, so 377efa7 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@shenxianpeng shenxianpeng removed the maintenance Targets chores, refactors and cleanups label Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking This is a breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant