177 lines
6.0 KiB
YAML
177 lines
6.0 KiB
YAML
default_install_hook_types:
|
|
- pre-commit
|
|
- commit-msg
|
|
default_stages:
|
|
- pre-commit # Run locally
|
|
- manual # Run in CI
|
|
exclude: 'vllm/third_party/.*'
|
|
repos:
|
|
- repo: https://github.com/google/yapf
|
|
rev: v0.43.0
|
|
hooks:
|
|
- id: yapf
|
|
args: [--in-place, --verbose]
|
|
# Keep the same list from yapfignore here to avoid yapf failing without any inputs
|
|
exclude: '(.buildkite|benchmarks|build|examples)/.*'
|
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
rev: v0.11.7
|
|
hooks:
|
|
- id: ruff
|
|
args: [--output-format, github, --fix]
|
|
- id: ruff-format
|
|
files: ^(.buildkite|benchmarks|examples)/.*
|
|
- repo: https://github.com/crate-ci/typos
|
|
rev: v1.34.0
|
|
hooks:
|
|
- id: typos
|
|
- repo: https://github.com/PyCQA/isort
|
|
rev: 6.0.1
|
|
hooks:
|
|
- id: isort
|
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
|
rev: v20.1.3
|
|
hooks:
|
|
- id: clang-format
|
|
exclude: 'csrc/(moe/topk_softmax_kernels.cu|quantization/gguf/(ggml-common.h|dequantize.cuh|vecdotq.cuh|mmq.cuh|mmvq.cuh))|vllm/third_party/.*'
|
|
types_or: [c++, cuda]
|
|
args: [--style=file, --verbose]
|
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
|
rev: v0.45.0
|
|
hooks:
|
|
- id: markdownlint-fix
|
|
exclude: '.*\.inc\.md'
|
|
- repo: https://github.com/rhysd/actionlint
|
|
rev: v1.7.7
|
|
hooks:
|
|
- id: actionlint
|
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
rev: 0.6.17
|
|
hooks:
|
|
- id: pip-compile
|
|
args: [requirements/test.in, -o, requirements/test.txt, --index-strategy, unsafe-best-match, --torch-backend, cu128]
|
|
files: ^requirements/test\.(in|txt)$
|
|
- repo: local
|
|
hooks:
|
|
- id: format-torch-nightly-test
|
|
name: reformat nightly_torch_test.txt to be in sync with test.in
|
|
language: python
|
|
entry: python tools/generate_nightly_torch_test.py
|
|
files: ^requirements/test\.(in|txt)$
|
|
- id: mypy-local
|
|
name: Run mypy for local Python installation
|
|
entry: tools/mypy.sh 0 "local"
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: &mypy_deps [mypy==1.11.1, types-cachetools, types-setuptools, types-PyYAML, types-requests, pydantic]
|
|
stages: [pre-commit] # Don't run in CI
|
|
- id: mypy-3.9 # TODO: Use https://github.com/pre-commit/mirrors-mypy when mypy setup is less awkward
|
|
name: Run mypy for Python 3.9
|
|
entry: tools/mypy.sh 1 "3.9"
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: *mypy_deps
|
|
stages: [manual] # Only run in CI
|
|
- id: mypy-3.10 # TODO: Use https://github.com/pre-commit/mirrors-mypy when mypy setup is less awkward
|
|
name: Run mypy for Python 3.10
|
|
entry: tools/mypy.sh 1 "3.10"
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: *mypy_deps
|
|
stages: [manual] # Only run in CI
|
|
- id: mypy-3.11 # TODO: Use https://github.com/pre-commit/mirrors-mypy when mypy setup is less awkward
|
|
name: Run mypy for Python 3.11
|
|
entry: tools/mypy.sh 1 "3.11"
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: *mypy_deps
|
|
stages: [manual] # Only run in CI
|
|
- id: mypy-3.12 # TODO: Use https://github.com/pre-commit/mirrors-mypy when mypy setup is less awkward
|
|
name: Run mypy for Python 3.12
|
|
entry: tools/mypy.sh 1 "3.12"
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: *mypy_deps
|
|
stages: [manual] # Only run in CI
|
|
- id: shellcheck
|
|
name: Lint shell scripts
|
|
entry: tools/shellcheck.sh
|
|
language: script
|
|
types: [shell]
|
|
- id: png-lint
|
|
name: Lint PNG exports from excalidraw
|
|
entry: tools/png-lint.sh
|
|
language: script
|
|
types: [png]
|
|
- id: signoff-commit
|
|
name: Sign-off Commit
|
|
entry: bash
|
|
args:
|
|
- -c
|
|
- |
|
|
if ! grep -q "^Signed-off-by: $(git config user.name) <$(git config user.email)>" "$(git rev-parse --git-path COMMIT_EDITMSG)"; then
|
|
printf "\nSigned-off-by: $(git config user.name) <$(git config user.email)>\n" >> "$(git rev-parse --git-path COMMIT_EDITMSG)"
|
|
fi
|
|
language: system
|
|
verbose: true
|
|
stages: [commit-msg]
|
|
- id: check-spdx-header
|
|
name: Check SPDX headers
|
|
entry: python tools/check_spdx_header.py
|
|
language: python
|
|
types: [python]
|
|
- id: check-root-lazy-imports
|
|
name: Check root lazy imports
|
|
entry: python tools/check_init_lazy_imports.py
|
|
language: python
|
|
types: [python]
|
|
- id: check-filenames
|
|
name: Check for spaces in all filenames
|
|
entry: bash
|
|
args:
|
|
- -c
|
|
- 'git ls-files | grep " " && echo "Filenames should not contain spaces!" && exit 1 || exit 0'
|
|
language: system
|
|
always_run: true
|
|
pass_filenames: false
|
|
- id: update-dockerfile-graph
|
|
name: Update Dockerfile dependency graph
|
|
entry: tools/update-dockerfile-graph.sh
|
|
language: script
|
|
- id: enforce-import-regex-instead-of-re
|
|
name: Enforce import regex as re
|
|
entry: python tools/enforce_regex_import.py
|
|
language: python
|
|
types: [python]
|
|
pass_filenames: false
|
|
additional_dependencies: [regex]
|
|
# forbid directly import triton
|
|
- id: forbid-direct-triton-import
|
|
name: "Forbid direct 'import triton'"
|
|
entry: python tools/check_triton_import.py
|
|
language: python
|
|
types: [python]
|
|
pass_filenames: false
|
|
additional_dependencies: [regex]
|
|
- id: check-pickle-imports
|
|
name: Prevent new pickle/cloudpickle imports
|
|
entry: python tools/check_pickle_imports.py
|
|
language: python
|
|
types: [python]
|
|
pass_filenames: false
|
|
additional_dependencies: [pathspec, regex]
|
|
- id: validate-config
|
|
name: Validate configuration has default values and that each field has a docstring
|
|
entry: python tools/validate_config.py
|
|
language: python
|
|
types: [python]
|
|
pass_filenames: true
|
|
files: vllm/config.py|tests/test_config.py|vllm/entrypoints/openai/cli_args.py
|
|
# Keep `suggestion` last
|
|
- id: suggestion
|
|
name: Suggestion
|
|
entry: bash -c 'echo "To bypass all the pre-commit hooks, add --no-verify to git commit. To skip a specific hook, prefix the commit command with SKIP=<hook-id>."'
|
|
language: system
|
|
verbose: true
|
|
pass_filenames: false
|
|
# Insert new entries above the `suggestion` entry
|