.pre-commit-config.yaml 4.65 KB
Newer Older
1
2
3
default_stages:
  - pre-commit # Run locally
  - manual # Run in CI
4
5
repos:
- repo: https://github.com/google/yapf
6
  rev: v0.43.0
7
8
9
10
  hooks:
  - id: yapf
    args: [--in-place, --verbose]
    additional_dependencies: [toml] # TODO: Remove when yapf is upgraded
11
    exclude: 'vllm/third_party/.*'
12
- repo: https://github.com/astral-sh/ruff-pre-commit
13
  rev: v0.9.3
14
15
  hooks:
  - id: ruff
16
    args: [--output-format, github, --fix]
17
    exclude: 'vllm/third_party/.*'
18
- repo: https://github.com/codespell-project/codespell
19
  rev: v2.4.0
20
21
  hooks:
  - id: codespell
22
23
    additional_dependencies: ['tomli']
    args: ['--toml', 'pyproject.toml']
24
- repo: https://github.com/PyCQA/isort
25
  rev: 0a0b7a830386ba6a31c2ec8316849ae4d1b8240d # 6.0.0
26
27
  hooks:
  - id: isort
28
    exclude: 'vllm/third_party/.*'
29
- repo: https://github.com/pre-commit/mirrors-clang-format
30
  rev: v19.1.7
31
32
  hooks:
  - id: clang-format
33
    exclude: 'csrc/(moe/topk_softmax_kernels.cu|quantization/gguf/(ggml-common.h|dequantize.cuh|vecdotq.cuh|mmq.cuh|mmvq.cuh))|vllm/third_party/.*'
34
35
36
37
38
39
    types_or: [c++, cuda]
    args: [--style=file, --verbose]
- repo: https://github.com/jackdewinter/pymarkdown
  rev: v0.9.27
  hooks:
  - id: pymarkdown
40
    args: [fix]
41
    exclude: 'vllm/third_party/.*'
42
- repo: https://github.com/rhysd/actionlint
43
  rev: v1.7.7
44
45
  hooks:
  - id: actionlint
46
    exclude: 'vllm/third_party/.*'
47
48
49
50
51
52
- repo: https://github.com/astral-sh/uv-pre-commit
  rev: 0.6.2
  hooks:
    - id: pip-compile
      args: [requirements-test.in, -o, requirements-test.txt]
      files: ^requirements-test\.(in|txt)$
53
54
- repo: local
  hooks:
55
56
  - id: mypy-local
    name: Run mypy for local Python installation
57
    entry: tools/mypy.sh 0 "local"
58
59
60
61
    language: python
    types: [python]
    additional_dependencies: &mypy_deps [mypy==1.11.1, types-setuptools, types-PyYAML, types-requests]
    stages: [pre-commit] # Don't run in CI
62
    exclude: 'vllm/third_party/.*'
63
64
65
66
67
  - 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]
68
69
    additional_dependencies: *mypy_deps
    stages: [manual] # Only run in CI
70
    exclude: 'vllm/third_party/.*'
71
72
73
74
75
76
  - 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
77
    stages: [manual] # Only run in CI
78
    exclude: 'vllm/third_party/.*'
79
80
81
82
83
84
  - 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
85
    stages: [manual] # Only run in CI
86
    exclude: 'vllm/third_party/.*'
87
88
89
90
91
92
  - 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
93
    stages: [manual] # Only run in CI
94
    exclude: 'vllm/third_party/.*'
95
96
97
98
99
  - id: shellcheck
    name: Lint shell scripts
    entry: tools/shellcheck.sh
    language: script
    types: [shell]
100
    exclude: 'vllm/third_party/.*'
101
102
103
104
105
  - id: png-lint
    name: Lint PNG exports from excalidraw
    entry: tools/png-lint.sh
    language: script
    types: [png]
106
    exclude: 'vllm/third_party/.*'
107
108
109
110
111
112
113
114
115
116
117
118
  - 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/COMMIT_EDITMSG; then
          printf "\nSigned-off-by: $(git config user.name) <$(git config user.email)>\n" >> .git/COMMIT_EDITMSG
        fi
    language: system
    verbose: true
    stages: [commit-msg]
119
    exclude: 'vllm/third_party/.*'
120
121
122
123
124
  - id: check-spdx-header
    name: Check SPDX headers
    entry: python tools/check_spdx_header.py
    language: python
    types: [python]
125
    exclude: 'vllm/third_party/.*'
126
127
  - id: check-filenames
    name: Check for spaces in all filenames
128
129
130
131
    entry: bash
    args:
      - -c
      - 'git ls-files | grep " " && echo "Filenames should not contain spaces!" && exit 1 || exit 0'
132
133
134
    language: system
    always_run: true
    pass_filenames: false
135
    exclude: 'vllm/third_party/.*'
136
137
138
139
140
141
142
143
144
  # Keep `suggestion` last
  - id: suggestion
    name: Suggestion
    entry: bash -c 'echo "To bypass pre-commit hooks, add --no-verify to git commit."'
    language: system
    verbose: true
    pass_filenames: false
    exclude: 'vllm/third_party/.*'
  # Insert new entries above the `suggestion` entry