]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-110558: Run ruff on Argument Clinic in CI (#110559)
authorAlex Waygood <Alex.Waygood@Gmail.com>
Tue, 10 Oct 2023 07:52:39 +0000 (09:52 +0200)
committerGitHub <noreply@github.com>
Tue, 10 Oct 2023 07:52:39 +0000 (07:52 +0000)
.github/workflows/lint.yml
.pre-commit-config.yaml
Lib/test/.ruff.toml
Tools/clinic/.ruff.toml [new file with mode: 0644]
Tools/clinic/clinic.py

index 89f65816b6969d056694d3b91e3b11f0d0fdfba6..6c1c29a58cf4fc87bf7e12b8d1f660913213ee4c 100644 (file)
@@ -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 }}
index a5d32a04fc2d7d6f508149317e725e3c6633e72a..da96855c7f6b72928313b7d3487855b3f2f50e7b 100644 (file)
@@ -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
index f4e68eba14068dd60de82f2352d5d0575a98a4a8..424c81f6ecd759e7a892bb504f424e81d05e616b 100644 (file)
@@ -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 (file)
index 0000000..3bc9d90
--- /dev/null
@@ -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
+]
index eca4747a3e4d572ce602fad569eb397450c3a044..0f26350e1d06238abab5c3c4087ddb5a5e100097 100755 (executable)
@@ -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: