mirror of
https://github.com/volcengine/verl.git
synced 2025-10-20 21:53:50 +08:00
> [!WARNING]
> We are [immigrating to `ruff` as the linter and formatter and
`pre-commit` as the managing
tool](https://github.com/volcengine/verl/pull/1010).
>
> If your branch is based on a previous commit using `yapf` and
`pylint`, simply merging might trigger overwhelming linting errors,
while **you are only expected to resolve ones in the files related to
your PR**.
>
> To resolve this issue, please try the following workaround to only
include the files you **really changed** in the PR:
>
> 1. In your branch, fix linting and format with `ruff`: `ruff check
--fix && ruff-format`
> 2. Squash into a single commit in a new branch: `git reset --soft
$(git merge-base main HEAD) && git add -A && git commit -m "feat: ..."`
> 3. Merge with the latest main: `git merge origin/main`
> 4. Force push to your branch: `git push --force`
We add the reminder above to the documentation to tell contributors how
to avoid overwhelming linting errors.
### Motivation
According to dicussion in #896, this PR immigrates from yapf & pylint to
ruff based on pre-commit, which allows unified version control and
automatic hook on committing.
### Summary
The `pre-commit` hook and CI
- checks staged / committed files in commits / PR's
- checks all files each month (This should fail before we fix all the
files by the ruff standard)
### Explanation for the Failing CI Workflow `pre-commit`
For now, we only apply `ruff format` and `ruff check --fix` **without
resolving all the errors**, since there are too many errors to resolve,
which causes the CI workflow `pre-commit` fails.
For resolving the remaining errors, we leave to future commits.
Specifically, the `pre-commit` hook and CI will require every commit to
fix its related files with `ruff`, which will fix all the files
incrementally.
### Reviewing Suggestion
The commit
3d93f51ba8
is huge since we apply `ruff` to all the files. To review the main
changes, please check the commits before and after it.
87 lines
2.4 KiB
TOML
87 lines
2.4 KiB
TOML
# -------------------------------
|
|
# build-system
|
|
# -------------------------------
|
|
[build-system]
|
|
requires = [
|
|
"setuptools>=61.0",
|
|
"wheel"
|
|
]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
# -------------------------------
|
|
# project (PEP 621 metadata)
|
|
# -------------------------------
|
|
[project]
|
|
name = "verl"
|
|
# We'll mark the version as "dynamic" because it's read from the file "verl/version/version"
|
|
# (PEP 621 calls this "dynamic version").
|
|
# The actual version is specified in the [tool.setuptools.dynamic] section below.
|
|
dynamic = ["version", "dependencies", "optional-dependencies", "authors", "urls"]
|
|
|
|
description = "verl: Volcano Engine Reinforcement Learning for LLM"
|
|
license = {file = "LICENSE"} # or "Apache-2.0", if you prefer an SPDX identifier
|
|
readme = {file = "README.md", content-type = "text/markdown"}
|
|
requires-python = ">=3.8"
|
|
|
|
# -------------------------------
|
|
# tool.ruff - Linting configuration
|
|
# -------------------------------
|
|
[tool.ruff]
|
|
line-length = 120
|
|
|
|
# Enable import sorting
|
|
|
|
[tool.ruff.lint]
|
|
isort = {known-first-party = ["verl"]}
|
|
# c.f. https://github.com/vllm-project/vllm/blob/ce8d6b75fc0586045df75ee1568a5b5f9957251b/pyproject.toml
|
|
select = [
|
|
# pycodestyle
|
|
"E",
|
|
# Pyflakes
|
|
"F",
|
|
# pyupgrade
|
|
"UP",
|
|
# flake8-bugbear
|
|
"B",
|
|
# flake8-simplify
|
|
"SIM",
|
|
# isort
|
|
"I",
|
|
"G",
|
|
]
|
|
ignore = [
|
|
# star imports
|
|
"F405", "F403",
|
|
# lambda expression assignment
|
|
"E731",
|
|
# Loop control variable not used within loop body
|
|
"B007",
|
|
# f-string format
|
|
"UP032",
|
|
# Can remove once 3.10+ is the minimum Python version
|
|
"UP007",
|
|
]
|
|
|
|
# -------------------------------
|
|
# tool.setuptools - Additional config
|
|
# -------------------------------
|
|
[tool.setuptools]
|
|
# True means `setuptools` will attempt to include all relevant files in package_data automatically.
|
|
# This corresponds to `include_package_data=True` in setup.py.
|
|
include-package-data = true
|
|
|
|
# We read the version from a file in 'verl/version/version'
|
|
[tool.setuptools.dynamic]
|
|
version = {file = "verl/version/version"}
|
|
|
|
# If you need to mimic `package_dir={'': '.'}`:
|
|
[tool.setuptools.package-dir]
|
|
"" = "."
|
|
|
|
# If you need to include specific non-Python data (like YAML files or version file):
|
|
# This is the rough equivalent of package_data={'': ['version/*'], 'verl': ['trainer/config/*.yaml']}
|
|
[tool.setuptools.package-data]
|
|
verl = [
|
|
"version/*",
|
|
"trainer/config/*.yaml"
|
|
] |