From f75fc9a780dfb92a8b9a8ef5819d3f6fd10a01f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=87=BA=F0=9F=87=A6=20Sviatoslav=20Sydorenko=20=28?= =?UTF-8?q?=D0=A1=D0=B2=D1=8F=D1=82=D0=BE=D1=81=D0=BB=D0=B0=D0=B2=20=D0=A1?= =?UTF-8?q?=D0=B8=D0=B4=D0=BE=D1=80=D0=B5=D0=BD=D0=BA=D0=BE=29?= Date: Mon, 25 Aug 2025 13:38:16 +0200 Subject: [PATCH] [3.13] Lint: Create a project-wide ``.ruff.toml`` settings file (GH-133124) (#137670) Co-authored-by: Alex Waygood Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- .ruff.toml | 12 ++++++++++++ Doc/.ruff.toml | 5 ++--- Lib/test/.ruff.toml | 4 +++- Tools/build/.ruff.toml | 41 +++++++++++++++++++++++++++++++++++++++++ Tools/clinic/.ruff.toml | 3 +-- 5 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 .ruff.toml create mode 100644 Tools/build/.ruff.toml diff --git a/.ruff.toml b/.ruff.toml new file mode 100644 index 00000000000..1c015fa8841 --- /dev/null +++ b/.ruff.toml @@ -0,0 +1,12 @@ +# Default settings for Ruff in CPython + +# PYTHON_FOR_REGEN +target-version = "py310" + +# PEP 8 +line-length = 79 + +# Enable automatic fixes by default. +# To override this, use ``fix = false`` in a subdirectory's config file +# or ``--no-fix`` on the command line. +fix = true diff --git a/Doc/.ruff.toml b/Doc/.ruff.toml index 111ce03b91d..3e676e13c3f 100644 --- a/Doc/.ruff.toml +++ b/Doc/.ruff.toml @@ -1,7 +1,6 @@ +extend = "../.ruff.toml" # Inherit the project-wide settings + target-version = "py312" # Align with the version in oldest_supported_sphinx -fix = true -output-format = "full" -line-length = 79 extend-exclude = [ "includes/*", # Temporary exclusions: diff --git a/Lib/test/.ruff.toml b/Lib/test/.ruff.toml index 218eefe5255..f800dc03dce 100644 --- a/Lib/test/.ruff.toml +++ b/Lib/test/.ruff.toml @@ -1,5 +1,7 @@ -fix = true +extend = "../../.ruff.toml" # Inherit the project-wide settings + target-version = "py312" + extend-exclude = [ # Excluded (run with the other AC files in its own separate ruff job in pre-commit) "test_clinic.py", diff --git a/Tools/build/.ruff.toml b/Tools/build/.ruff.toml new file mode 100644 index 00000000000..dcbf2936290 --- /dev/null +++ b/Tools/build/.ruff.toml @@ -0,0 +1,41 @@ +extend = "../../.ruff.toml" # Inherit the project-wide settings + +[per-file-target-version] +"deepfreeze.py" = "py311" # requires `code.co_exceptiontable` +"stable_abi.py" = "py311" # requires 'tomllib' + +[format] +preview = true +docstring-code-format = true + +[lint] +select = [ + "C4", # flake8-comprehensions + "E", # pycodestyle + "F", # pyflakes + "I", # isort + "ISC", # flake8-implicit-str-concat + "LOG", # flake8-logging + "PGH", # pygrep-hooks + "PT", # flake8-pytest-style + "PYI", # flake8-pyi + "RUF100", # Ban unused `# noqa` comments + "UP", # pyupgrade + "W", # pycodestyle + "YTT", # flake8-2020 +] +ignore = [ + "E501", # Line too long + "F541", # f-string without any placeholders + "PYI024", # Use `typing.NamedTuple` instead of `collections.namedtuple` + "PYI025", # Use `from collections.abc import Set as AbstractSet` + "UP038", # Use `X | Y` in `isinstance` call instead of `(X, Y)` +] + +[lint.per-file-ignores] +"{check_extension_modules,freeze_modules}.py" = [ + "UP031", # Use format specifiers instead of percent format +] +"generate_{re_casefix,sre_constants,token}.py" = [ + "UP031", # Use format specifiers instead of percent format +] diff --git a/Tools/clinic/.ruff.toml b/Tools/clinic/.ruff.toml index c019572d0cb..5033887df0c 100644 --- a/Tools/clinic/.ruff.toml +++ b/Tools/clinic/.ruff.toml @@ -1,5 +1,4 @@ -target-version = "py310" -fix = true +extend = "../../.ruff.toml" # Inherit the project-wide settings [lint] select = [