gh-110558: Run ruff on Argument Clinic in CI (#110559)

This commit is contained in:
Alex Waygood 2023-10-10 09:52:39 +02:00 committed by GitHub
parent 96fed66a65
commit 7b2764e798
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 4 deletions

View 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 }}

View 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

View 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

14
Tools/clinic/.ruff.toml Normal file
View File

@ -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
]

View File

@ -924,7 +924,6 @@ def compiler_deprecated_warning(
# 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 @@ def render_function(
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 @@ def check_remaining_star(self, lineno: int | None = None) -> None:
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: