Use uv to create virtual environments and install packages for pre-commit.
With pipx:
pipx install pre-commit
pipx inject pre-commit pre-commit-uvWith uv:
uv tool install pre-commit --with pre-commit-uv --force-reinstallpre-commit-uv uses uv to create and seed hook environments. Caching the pre-commit directory avoids this work on later
runs, but the first install still needs it. This benchmark used this project's hooks with a warm uv cache:
❯ hyperfine 'pre-commit install-hooks' 'pre-commit-uv install-hooks'
Benchmark 1: pre-commit install-hooks
Time (mean ± σ): 54.132 s ± 8.827 s [User: 15.424 s, System: 9.359 s]
Range (min … max): 45.972 s … 66.506 s 10 runs
Benchmark 2: pre-commit-uv install-hooks
Time (mean ± σ): 41.695 s ± 7.395 s [User: 7.614 s, System: 6.133 s]
Range (min … max): 32.198 s … 58.467 s 10 runs
Summary
pre-commit-uv install-hooks ran 1.30 ± 0.31 times faster than pre-commit install-hooksOnce installed, pre-commit-uv uses uv by default. Set DISABLE_PRE_COMMIT_UV_PATCH to use pre-commit's normal
installation path instead.
The patch loads when the process appears to be running pre-commit. If detection misses a call, set
FORCE_PRE_COMMIT_UV_PATCH and report the value of sys.argv in an issue. DISABLE_PRE_COMMIT_UV_PATCH takes
precedence when both variables are set.