From 0b7f15945cc5adeb79ca9e25abafdbf8c565d716 Mon Sep 17 00:00:00 2001 From: Jirka Date: Mon, 11 Mar 2024 09:54:30 +0100 Subject: [PATCH] lint: replace `flake8` with `ruff` check --- .flake8 | 26 -------------------------- .pre-commit-config.yaml | 13 ++++++------- README.md | 2 +- pyproject.toml | 38 +++++++++++++++++++++++++++++++++++++- requirements-dev.txt | 2 -- 5 files changed, 44 insertions(+), 37 deletions(-) delete mode 100644 .flake8 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 1cc049a69..000000000 --- a/.flake8 +++ /dev/null @@ -1,26 +0,0 @@ -[flake8] - -show-source = True -count = True -statistics = True - -# E266 = too many leading '#' for block comment -# E731 = do not assign a lambda expression, use a def -# TC002 = move third party import to TYPE_CHECKING -# TC, TC2 = flake8-type-checking - -# select = C,E,F,W ANN, TC, TC2 # to enable code. Disabled if not listed, including builtin codes -enable-extensions = TC, TC2 # only needed for extensions not enabled by default - -ignore = E266, E731 - -exclude = .tox, .venv, build, dist, doc, git/ext/ - -rst-roles = # for flake8-RST-docstrings - attr, class, func, meth, mod, obj, ref, term, var # used by sphinx - -min-python-version = 3.7.0 - -# for `black` compatibility -max-line-length = 120 -extend-ignore = E203, W503 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1ac5baa00..cd5f58441 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,14 +14,13 @@ repos: name: black (format) exclude: ^git/ext/ -- repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.3.0 hooks: - - id: flake8 - additional_dependencies: - - flake8-bugbear==23.9.16 - - flake8-comprehensions==3.14.0 - - flake8-typing-imports==1.14.0 + #- id: ruff-format # todo: eventually replace Black with Ruff for consistency + # args: ["--preview"] + - id: ruff + args: ["--fix"] exclude: ^doc|^git/ext/ - repo: https://github.com/shellcheck-py/shellcheck-py diff --git a/README.md b/README.md index 7faeae23b..1e4a59d7f 100644 --- a/README.md +++ b/README.md @@ -187,7 +187,7 @@ The same linting, and running tests on all the different supported Python versio Specific tools: - Configurations for `mypy`, `pytest`, `coverage.py`, and `black` are in `./pyproject.toml`. -- Configuration for `flake8` is in the `./.flake8` file. +- Configuration for `ruff` is in the `pyproject.toml` file. Orchestration tools: diff --git a/pyproject.toml b/pyproject.toml index 7109389d7..230a9cf3a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,6 @@ warn_unreachable = true show_error_codes = true implicit_reexport = true # strict = true - # TODO: Remove when 'gitdb' is fully annotated. exclude = ["^git/ext/gitdb"] [[tool.mypy.overrides]] @@ -47,3 +46,40 @@ omit = ["*/git/ext/*"] line-length = 120 target-version = ["py37"] extend-exclude = "git/ext/gitdb" + +[tool.ruff] +target-version = "py37" +line-length = 120 +# Exclude a variety of commonly ignored directories. +exclude = [ + "git/ext/", + "doc", + "build", + "dist", +] +# Enable Pyflakes `E` and `F` codes by default. +lint.select = [ + "E", + "W", # see: https://pypi.org/project/pycodestyle + "F", # see: https://pypi.org/project/pyflakes +# "I", #see: https://pypi.org/project/isort/ +# "S", # see: https://pypi.org/project/flake8-bandit +# "UP", # see: https://docs.astral.sh/ruff/rules/#pyupgrade-up +] +lint.extend-select = [ + "A", # see: https://pypi.org/project/flake8-builtins + "B", # see: https://pypi.org/project/flake8-bugbear + "C4", # see: https://pypi.org/project/flake8-comprehensions + "TCH004", # see: https://docs.astral.sh/ruff/rules/runtime-import-in-type-checking-block/ +] +lint.ignore = [ + "E203", "W503" +] +lint.ignore-init-module-imports = true +lint.unfixable = ["F401"] + +#[tool.ruff.lint.per-file-ignores] +#"setup.py" = ["ANN202", "ANN401"] +#"docs/source/conf.py" = ["A001", "D103"] +#"src/**" = ["ANN401"] +#"tests/**" = ["S101", "ANN001", "ANN201", "ANN202", "ANN401"] diff --git a/requirements-dev.txt b/requirements-dev.txt index e3030c597..69a79d13d 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,5 @@ # libraries for additional local testing/linting - to be added to test-requirements.txt when all pass -flake8-type-checking;python_version>="3.8" # checks for TYPE_CHECKING only imports - pytest-icdiff # pytest-profiling