diff --git a/.github/workflows/lint-code.yml b/.github/workflows/lint-code.yml index db536259569..367c5bce915 100644 --- a/.github/workflows/lint-code.yml +++ b/.github/workflows/lint-code.yml @@ -15,7 +15,7 @@ jobs: run: | set -e - brew install black curl llvm@20 ninja optipng shellcheck swift-format unzip + brew install curl llvm@20 ninja optipng ruff shellcheck swift-format unzip # Note: gn isn't available in homebrew :( # Corresponds to https://gn.googlesource.com/gn/+/225e90c5025bf74f41dbee60d9cde4512c846fe7 diff --git a/Meta/lint-python.sh b/Meta/lint-python.sh index 773505c4a86..7eda6d15da7 100755 --- a/Meta/lint-python.sh +++ b/Meta/lint-python.sh @@ -5,11 +5,11 @@ set -e script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) cd "${script_path}/.." || exit 1 -check_argument="--check" +overwrite=0 if [ "$#" -gt "0" ]; then if [ "--overwrite-inplace" = "$1" ] ; then - check_argument="" + overwrite=1 shift fi fi @@ -31,12 +31,18 @@ else fi if (( ${#files[@]} )); then - if ! command -v black >/dev/null 2>&1 ; then - echo "black is not available, but python files need linting! Either skip this script, or install black." + if ! command -v ruff >/dev/null 2>&1 ; then + echo "Please install ruff: pip3 install ruff" exit 1 fi - black ${check_argument} "${files[@]}" + if [[ ${overwrite} -eq 0 ]] ; then + ruff check "${files[@]}" + ruff format --check "${files[@]}" + else + ruff check --fix "${files[@]}" + ruff format "${files[@]}" + fi else echo "No py files to check." fi diff --git a/pyproject.toml b/pyproject.toml index 55ec8d784c3..fd8c49db25b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,2 +1,14 @@ [tool.black] line-length = 120 + +[tool.ruff] +line-length = 120 + +[tool.ruff.lint] +# On top of the defaults (`E4`, E7`, `E9`, and `F`), enable flake8-bugbear (`B`) and isort (`i`). +# https://docs.astral.sh/ruff/rules/ +select = ["E4", "E7", "E9", "F", "B", "I"] + +[tool.ruff.lint.isort] +force-single-line = true +lines-between-types = 1