A pre-commit hook for uv.
Distributed as a standalone repository to enable installing uv via prebuilt wheels from PyPI.
To ensure the lockfile is up-to-date:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
# Update the uv lockfile
- id: uv-lockTo autoexport uv.lock to requirements.txt:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
- id: uv-exportBy default, this hook uses the "quiet" output.
To export to an alternative file, modify the args:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
- id: uv-export
args: ["--frozen", "--output-file=requirements-custom.txt", "--quiet"]To compile your requirements via pre-commit, add the following to your .pre-commit-config.yaml:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
# Run the pip compile
- id: pip-compile
args: [requirements.in, -o, requirements.txt]To compile alternative files, modify the args and files:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
# Run the pip compile
- id: pip-compile
args: [requirements-dev.in, -o, requirements-dev.txt]
files: ^requirements-dev\.(in|txt)$To run the hook over multiple files at the same time:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
# Run the pip compile
- id: pip-compile
name: pip-compile requirements.in
args: [requirements.in, -o, requirements.txt]
- id: pip-compile
name: pip-compile requirements-dev.in
args: [requirements-dev.in, -o, requirements-dev.txt]
files: ^requirements-dev\.(in|txt)$To run a hook on a project within a subdirectory (i.e., in a monorepo):
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
# Update the uv lockfile
- id: uv-lock
# Change <path/to/project> to your relative path
files: <path/to/project>/pyproject.toml
args: [--project, <path/to/project>]To synchronize your dependencies upon branch checkout, pull or rebase:
default_install_hook_types:
- pre-commit
- post-checkout
- post-merge
- post-rewrite
repos:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
- id: uv-syncIn order to install this hook, you either need to specify default_install_hook_types (as above) and run pre-commit install,
or you have to install it via pre-commit install --install-hooks -t post-checkout -t post-merge -t post-rewrite.
To synchronize all dependencies in a workspace:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
- id: uv-sync
args: ["--locked", "--all-packages"]If you use keyring to authenticate to a private index,
include it as an additional sync dependency:
- repo: https://github.com/astral-sh/uv-pre-commit
# uv version.
rev: 0.9.5
hooks:
- id: uv-sync
additional_dependencies: [keyring]uv-pre-commit is licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in uv-pre-commit by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.