summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Waygood <Alex.Waygood@Gmail.com>2023-10-10 07:52:39 (GMT)
committerGitHub <noreply@github.com>2023-10-10 07:52:39 (GMT)
commit7b2764e798e400b8f5fcc199739405e6fbd05c20 (patch)
treed653a3d190631e3f6ec167b3db2f5e66e1b8333e
parent96fed66a65097eac2dc528ce29c9ba676bb07689 (diff)
downloadcpython-7b2764e798e400b8f5fcc199739405e6fbd05c20.zip
cpython-7b2764e798e400b8f5fcc199739405e6fbd05c20.tar.gz
cpython-7b2764e798e400b8f5fcc199739405e6fbd05c20.tar.bz2
gh-110558: Run ruff on Argument Clinic in CI (#110559)
-rw-r--r--.github/workflows/lint.yml2
-rw-r--r--.pre-commit-config.yaml4
-rw-r--r--Lib/test/.ruff.toml2
-rw-r--r--Tools/clinic/.ruff.toml14
-rwxr-xr-xTools/clinic/clinic.py3
5 files changed, 21 insertions, 4 deletions
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 89f6581..6c1c29a 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 a5d32a0..da96855 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 f4e68eb..424c81f 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 0000000..3bc9d90
--- /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 eca4747..0f26350 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: