From 7b2764e798e400b8f5fcc199739405e6fbd05c20 Mon Sep 17 00:00:00 2001 From: Alex Waygood Date: Tue, 10 Oct 2023 09:52:39 +0200 Subject: [PATCH] gh-110558: Run ruff on Argument Clinic in CI (#110559) --- .github/workflows/lint.yml | 2 +- .pre-commit-config.yaml | 4 ++++ Lib/test/.ruff.toml | 2 ++ Tools/clinic/.ruff.toml | 14 ++++++++++++++ Tools/clinic/clinic.py | 3 --- 5 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 Tools/clinic/.ruff.toml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 89f65816b69..6c1c29a58cf 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,7 +7,7 @@ permissions: env: FORCE_COLOR: 1 - RUFF_FORMAT: github + RUFF_OUTPUT_FORMAT: github concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a5d32a04fc2..da96855c7f6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,10 @@ repos: name: Run Ruff on Lib/test/ args: [--exit-non-zero-on-fix] files: ^Lib/test/ + - id: ruff + name: Run Ruff on Tools/clinic/ + args: [--exit-non-zero-on-fix, --config=Tools/clinic/.ruff.toml] + files: ^Tools/clinic/|Lib/test/test_clinic.py - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 diff --git a/Lib/test/.ruff.toml b/Lib/test/.ruff.toml index f4e68eba140..424c81f6ecd 100644 --- a/Lib/test/.ruff.toml +++ b/Lib/test/.ruff.toml @@ -3,6 +3,8 @@ select = [ "F811", # Redefinition of unused variable (useful for finding test methods with the same name) ] extend-exclude = [ + # Excluded (run with the other AC files in its own separate ruff job in pre-commit) + "test_clinic.py", # Excluded (these aren't actually executed, they're just "data files") "tokenizedata/*.py", # Failed to lint diff --git a/Tools/clinic/.ruff.toml b/Tools/clinic/.ruff.toml new file mode 100644 index 00000000000..3bc9d908ed3 --- /dev/null +++ b/Tools/clinic/.ruff.toml @@ -0,0 +1,14 @@ +target-version = "py310" +fix = true +select = [ + "F", # Enable all pyflakes rules + "RUF100", # Ban unused `# noqa` comments + "PGH004", # Ban blanket `# noqa` comments (only ignore specific error codes) +] +unfixable = [ + # The autofixes sometimes do the wrong things for these; + # it's better to have to manually look at the code and see how it needs fixing + "F841", # Detects unused variables + "F601", # Detects dictionaries that have duplicate keys + "F602", # Also detects dictionaries that have duplicate keys +] diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index eca4747a3e4..0f26350e1d0 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -924,7 +924,6 @@ class CLanguage(Language): # Format the preprocessor warning and error messages. assert isinstance(self.cpp.filename, str) - source = os.path.basename(self.cpp.filename) message = f"Update the clinic input of {func.full_name!r}." code = self.COMPILER_DEPRECATION_WARNING_PROTOTYPE.format( major=minversion[0], @@ -1846,7 +1845,6 @@ class CLanguage(Language): last_group = 0 first_optional = len(selfless) positional = selfless and selfless[-1].is_positional_only() - new_or_init = f.kind.new_or_init has_option_groups = False # offset i by -1 because first_optional needs to ignore self @@ -6343,7 +6341,6 @@ class DSLParser: else: return - no_param_after_symbol = True for p in reversed(self.function.parameters.values()): if self.keyword_only: if p.kind == inspect.Parameter.KEYWORD_ONLY: