mirror of
https://github.com/vllm-project/vllm.git
synced 2026-06-06 00:16:14 +00:00
ef0df7dbd6
Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
293 lines
11 KiB
YAML
293 lines
11 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/astral-sh/ruff-pre-commit
|
|
rev: v0.14.0
|
|
hooks:
|
|
- id: ruff-check
|
|
args: [--output-format, github, --fix]
|
|
- id: ruff-format
|
|
- repo: https://github.com/crate-ci/typos
|
|
rev: v1.43.5
|
|
hooks:
|
|
- id: typos
|
|
args: [--force-exclude]
|
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
|
rev: v21.1.2
|
|
hooks:
|
|
- id: clang-format
|
|
exclude: 'csrc/(moe/topk_softmax_kernels.cu|libtorch_stable/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/DavidAnson/markdownlint-cli2
|
|
rev: v0.21.0
|
|
hooks:
|
|
- id: markdownlint-cli2
|
|
language_version: lts
|
|
args: [--fix]
|
|
exclude: ^CLAUDE\.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.11.1
|
|
hooks:
|
|
- id: pip-compile
|
|
args: [
|
|
requirements/test/cuda.in,
|
|
-c, requirements/cuda.txt,
|
|
-o, requirements/test/cuda.txt,
|
|
--index-strategy, unsafe-best-match,
|
|
--torch-backend, cu130,
|
|
--python-platform, x86_64-manylinux_2_28,
|
|
--python-version, "3.12",
|
|
]
|
|
files: ^requirements/(common|cuda|test/cuda)\.(in|txt)$
|
|
- id: pip-compile
|
|
alias: pip-compile-rocm
|
|
name: pip-compile-rocm
|
|
args: [
|
|
requirements/test/rocm.in,
|
|
-c, requirements/rocm.txt,
|
|
-o, requirements/test/rocm.txt,
|
|
--index-strategy, unsafe-best-match,
|
|
--python-platform, x86_64-manylinux_2_28,
|
|
--python-version, "3.12",
|
|
# Exclude torch and CUDA/NVIDIA packages
|
|
--no-emit-package, torch,
|
|
--no-emit-package, torchvision,
|
|
--no-emit-package, torchaudio,
|
|
--no-emit-package, triton,
|
|
--no-emit-package, cuda-bindings,
|
|
--no-emit-package, cuda-pathfinder,
|
|
--no-emit-package, cuda-toolkit,
|
|
--no-emit-package, cupy-cuda12x,
|
|
# nvidia packages (unsuffixed / unified naming)
|
|
--no-emit-package, nvidia-cublas,
|
|
--no-emit-package, nvidia-cuda-cupti,
|
|
--no-emit-package, nvidia-cuda-nvrtc,
|
|
--no-emit-package, nvidia-cuda-runtime,
|
|
--no-emit-package, nvidia-cudnn,
|
|
--no-emit-package, nvidia-cufft,
|
|
--no-emit-package, nvidia-cufile,
|
|
--no-emit-package, nvidia-curand,
|
|
--no-emit-package, nvidia-cusolver,
|
|
--no-emit-package, nvidia-cusparse,
|
|
--no-emit-package, nvidia-cusparselt,
|
|
--no-emit-package, nvidia-nccl,
|
|
--no-emit-package, nvidia-nvjitlink,
|
|
--no-emit-package, nvidia-nvshmem,
|
|
--no-emit-package, nvidia-nvtx,
|
|
# nvidia cu12 packages
|
|
--no-emit-package, nvidia-cublas-cu12,
|
|
--no-emit-package, nvidia-cuda-cupti-cu12,
|
|
--no-emit-package, nvidia-cuda-nvrtc-cu12,
|
|
--no-emit-package, nvidia-cuda-runtime-cu12,
|
|
--no-emit-package, nvidia-cudnn-cu12,
|
|
--no-emit-package, nvidia-cufft-cu12,
|
|
--no-emit-package, nvidia-cufile-cu12,
|
|
--no-emit-package, nvidia-curand-cu12,
|
|
--no-emit-package, nvidia-cusolver-cu12,
|
|
--no-emit-package, nvidia-cusparse-cu12,
|
|
--no-emit-package, nvidia-cusparselt-cu12,
|
|
--no-emit-package, nvidia-nccl-cu12,
|
|
--no-emit-package, nvidia-nvjitlink-cu12,
|
|
--no-emit-package, nvidia-nvshmem-cu12,
|
|
--no-emit-package, nvidia-nvtx-cu12,
|
|
# nvidia cu13 packages
|
|
--no-emit-package, nvidia-cublas-cu13,
|
|
--no-emit-package, nvidia-cuda-cupti-cu13,
|
|
--no-emit-package, nvidia-cuda-nvrtc-cu13,
|
|
--no-emit-package, nvidia-cuda-runtime-cu13,
|
|
--no-emit-package, nvidia-cudnn-cu13,
|
|
--no-emit-package, nvidia-cufft-cu13,
|
|
--no-emit-package, nvidia-cufile-cu13,
|
|
--no-emit-package, nvidia-curand-cu13,
|
|
--no-emit-package, nvidia-cusolver-cu13,
|
|
--no-emit-package, nvidia-cusparse-cu13,
|
|
--no-emit-package, nvidia-cusparselt-cu13,
|
|
--no-emit-package, nvidia-nccl-cu13,
|
|
--no-emit-package, nvidia-nvjitlink-cu13,
|
|
--no-emit-package, nvidia-nvshmem-cu13,
|
|
--no-emit-package, nvidia-nvtx-cu13,
|
|
]
|
|
files: ^requirements/(common|rocm|test/rocm)\.(in|txt)$
|
|
- id: pip-compile
|
|
alias: pip-compile-xpu
|
|
name: pip-compile-xpu
|
|
args: [
|
|
requirements/test/xpu.in,
|
|
-c, requirements/xpu.txt,
|
|
-o, requirements/test/xpu.txt,
|
|
--index-strategy, unsafe-best-match,
|
|
--torch-backend, xpu,
|
|
--python-platform, x86_64-manylinux_2_39,
|
|
--python-version, "3.12",
|
|
]
|
|
files: ^requirements/(common|xpu|test/xpu)\.(in|txt)$
|
|
- id: pip-compile
|
|
alias: pip-compile-docs
|
|
name: pip-compile-docs
|
|
args: [
|
|
requirements/docs.in,
|
|
-o, requirements/docs.txt,
|
|
--python-platform, x86_64-manylinux_2_28,
|
|
--python-version, "3.12",
|
|
]
|
|
files: ^requirements/docs\.(in|txt)$
|
|
- repo: local
|
|
hooks:
|
|
- id: format-torch-nightly-test
|
|
name: reformat test/nightly-torch.txt to be in sync with test/cuda.in
|
|
language: python
|
|
entry: python tools/pre_commit/generate_nightly_torch_test.py
|
|
files: ^requirements/test/cuda\.(in|txt)$
|
|
- 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: python tools/pre_commit/mypy.py "3.10"
|
|
<<: &mypy_common
|
|
language: python
|
|
types_or: [python, pyi]
|
|
require_serial: true
|
|
additional_dependencies: ["mypy==1.20.2", regex, types-cachetools, types-setuptools, types-PyYAML, types-requests, types-torch, pydantic]
|
|
- 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: python tools/pre_commit/mypy.py "3.11"
|
|
<<: *mypy_common
|
|
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: python tools/pre_commit/mypy.py "3.12"
|
|
<<: *mypy_common
|
|
stages: [manual] # Only run in CI
|
|
- id: mypy-3.13 # TODO: Use https://github.com/pre-commit/mirrors-mypy when mypy setup is less awkward
|
|
name: Run mypy for Python 3.13
|
|
entry: python tools/pre_commit/mypy.py "3.13"
|
|
<<: *mypy_common
|
|
stages: [manual] # Only run in CI
|
|
- id: shellcheck
|
|
name: Lint shell scripts
|
|
entry: tools/pre_commit/shellcheck.sh
|
|
language: script
|
|
types: [shell]
|
|
- id: png-lint
|
|
name: Lint PNG exports from excalidraw
|
|
entry: tools/pre_commit/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/pre_commit/check_spdx_header.py
|
|
language: python
|
|
types: [python]
|
|
- id: check-root-lazy-imports
|
|
name: Check root lazy imports
|
|
entry: python tools/pre_commit/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/pre_commit/update-dockerfile-graph.sh
|
|
language: script
|
|
- id: test-nonroot-entrypoint
|
|
name: Test non-root entrypoint wrapper
|
|
entry: bash docker/entrypoints/test_vllm_nonroot_entrypoint.sh
|
|
language: system
|
|
pass_filenames: false
|
|
files: ^docker/entrypoints/(vllm-nonroot-entrypoint|test_vllm_nonroot_entrypoint)\.sh$
|
|
- id: check-forbidden-imports
|
|
name: Check for forbidden imports
|
|
entry: python tools/pre_commit/check_forbidden_imports.py
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: [regex]
|
|
# prevent use torch.cuda APIs
|
|
- id: check-torch-cuda-call
|
|
name: "Prevent new 'torch.cuda' APIs call"
|
|
entry: python tools/pre_commit/check_torch_cuda.py
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: [regex]
|
|
- id: validate-config
|
|
name: Validate configuration has default values and that each field has a docstring
|
|
entry: python tools/pre_commit/validate_config.py
|
|
language: python
|
|
additional_dependencies: [regex]
|
|
- id: validate-docker-versions
|
|
name: Validate docker/versions.json matches Dockerfile
|
|
entry: python tools/generate_versions_json.py --check
|
|
language: python
|
|
files: ^docker/(Dockerfile|versions\.json)$
|
|
pass_filenames: false
|
|
additional_dependencies: [dockerfile-parse]
|
|
- id: attention-backend-docs
|
|
name: Check attention backend documentation is up to date
|
|
entry: python tools/pre_commit/generate_attention_backend_docs.py --check
|
|
language: python
|
|
- id: check-boolean-context-manager
|
|
name: Check for boolean ops in with-statements
|
|
entry: python tools/pre_commit/check_boolean_context_manager.py
|
|
language: python
|
|
types: [python]
|
|
# Rust hooks. These shell out to `cargo`; tools/pre_commit/rust-check.sh
|
|
# skips with a warning when cargo is not installed.
|
|
- id: rust-cargo-autoinherit
|
|
name: Rust - Normalize Cargo manifests with autoinherit
|
|
entry: tools/pre_commit/rust-check.sh autoinherit --prefer-simple-dotted
|
|
language: script
|
|
pass_filenames: false
|
|
require_serial: true
|
|
stages: [pre-commit] # Only run locally as Buildkite will cover this
|
|
files: ^rust/(Cargo\.toml|src/.*/Cargo\.toml)$
|
|
- id: rust-cargo-sort
|
|
name: Rust - Sort Cargo manifest sections
|
|
entry: tools/pre_commit/rust-check.sh sort --workspace
|
|
language: script
|
|
pass_filenames: false
|
|
require_serial: true
|
|
stages: [pre-commit] # Only run locally as Buildkite will cover this
|
|
files: ^rust/(Cargo\.toml|src/.*/Cargo\.toml)$
|
|
- id: rust-cargo-fmt
|
|
name: Rust - Format code
|
|
entry: tools/pre_commit/rust-check.sh fmt
|
|
language: script
|
|
pass_filenames: false
|
|
require_serial: true
|
|
stages: [pre-commit] # Only run locally as Buildkite will cover this
|
|
files: ^rust/.*(\.rs|Cargo\.toml|rustfmt\.toml)$
|
|
# 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
|