### What this PR does / why we need it?
This PR introduces several upstream `vllm`-aligned lint hooks into
`vllm-ascend` and makes them part of the actual `pre-commit` flow.
Main changes in this PR:
- add `check-boolean-context-manager` to catch boolean expressions in
`with` statements
- add `check-forbidden-imports` to forbid direct `re` imports and
disallowed direct `triton` imports
- enable shell script linting through `tools/shellcheck.sh`
- add root `.clang-format` aligned with upstream `vllm`, enable
`clang-format` in `pre-commit`, temporarily **exclude all `csrc/**`**
from `clang-format` to avoid bringing a large native code reformat into
this PR
This PR focuses on landing the smaller and immediately useful lint
alignment first, without mixing in the larger requirements-management
migration.
### Does this PR introduce _any_ user-facing change?
No.
This PR only updates repository lint configuration, static checks, and
internal import/style enforcement. It does not change runtime behavior
or public interfaces.
### How was this patch tested?
Tested locally in the project virtual environment.
Commands used:
```bash
bash format.sh
```
Verified checks passed:
``` bash
ruff check...............................................................Passed
ruff format..............................................................Passed
codespell................................................................Passed
typos....................................................................Passed
clang-format.............................................................Passed
Lint GitHub Actions workflow files.......................................Passed
Lint shell scripts.......................................................Passed
Lint PNG exports from excalidraw.........................................Passed
Check for spaces in all filenames........................................Passed
Enforce __init__.py in Python packages...................................Passed
Check for forbidden imports..............................................Passed
Check for boolean ops in with-statements.................................Passed
Suggestion...............................................................Passed
- hook id: suggestion
- duration: 0s
To bypass pre-commit hooks, add --no-verify to git commit.
```
**note:**
clang-format is enabled but currently excludes all csrc/**
- vLLM version: v0.17.0
- vLLM main:
8b6325758c
---------
Signed-off-by: MrZ20 <2609716663@qq.com>
125 lines
3.4 KiB
YAML
125 lines
3.4 KiB
YAML
default_install_hook_types:
|
|
- pre-commit
|
|
- commit-msg
|
|
|
|
default_stages:
|
|
- pre-commit # Run locally
|
|
- manual # Run in CI
|
|
exclude: '^(\.agents|\.claude|\.gemini)/.*'
|
|
|
|
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/codespell-project/codespell
|
|
rev: v2.4.1
|
|
hooks:
|
|
- id: codespell
|
|
args: [
|
|
--toml, pyproject.toml,
|
|
'--skip', 'tests/prompts/**,./benchmarks/sonnet.txt,*tests/lora/data/**,build/**,./vllm_ascend.egg-info/**,typos.toml',
|
|
'-L', 'CANN,cann,NNAL,nnal,ASCEND,ascend,EnQue,CopyIn,ArchType,AND,ND,tbe,copyin,alog'
|
|
]
|
|
additional_dependencies:
|
|
- tomli
|
|
|
|
- repo: https://github.com/crate-ci/typos
|
|
rev: v1.32.0
|
|
hooks:
|
|
- id: typos
|
|
args: [
|
|
"--force-exclude",
|
|
"--exclude", "csrc/**"
|
|
]
|
|
|
|
- repo: https://github.com/pre-commit/mirrors-clang-format
|
|
rev: v21.1.2
|
|
hooks:
|
|
- id: clang-format
|
|
exclude: ^csrc/.*
|
|
types_or: [c++]
|
|
args: [--style=file, --verbose]
|
|
|
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
|
rev: v0.45.0
|
|
hooks:
|
|
- id: markdownlint
|
|
args: ['--fix']
|
|
exclude: '.*\.inc\.md$|.*report_template\.md$|.*contributors\.md$|.*PULL_REQUEST_TEMPLATE\.md$'
|
|
stages: [manual] # Only run in CI
|
|
|
|
- repo: https://github.com/rhysd/actionlint
|
|
rev: v1.7.7
|
|
hooks:
|
|
- id: actionlint
|
|
exclude: '.*\.github/workflows/scripts/.*\.ya?ml$'
|
|
|
|
- repo: local
|
|
hooks:
|
|
- 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-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: python-init
|
|
name: Enforce __init__.py in Python packages
|
|
entry: python tools/check_python_src_init.py
|
|
language: python
|
|
types: [python]
|
|
pass_filenames: false
|
|
- id: check-logger
|
|
name: Forbid init_logger(__name__) in vllm_ascend modules
|
|
entry: tools/check_logger.sh
|
|
language: script
|
|
types: [python]
|
|
pass_filenames: false
|
|
- id: check-forbidden-imports
|
|
name: Check for forbidden imports
|
|
entry: python tools/check_forbidden_imports.py
|
|
language: python
|
|
types: [python]
|
|
additional_dependencies: [regex]
|
|
- id: check-boolean-context-manager
|
|
name: Check for boolean ops in with-statements
|
|
entry: python tools/check_boolean_context_manager.py
|
|
language: python
|
|
types: [python]
|
|
# 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
|
|
# Insert new entries above the `suggestion` entry
|