From b1beca04636646c58e6f2518595d9e50a884d77e Mon Sep 17 00:00:00 2001 From: AlexWaygood Date: Tue, 10 Oct 2023 10:48:50 +0200 Subject: [PATCH] gh-110558: Enable ruff's pyupgrade rules when running on Argument Clinic --- .pre-commit-config.yaml | 2 +- Lib/test/test_clinic.py | 6 +++--- Tools/clinic/.ruff.toml | 12 ++++++++++++ Tools/clinic/clinic.py | 8 ++++---- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ffca103bb33e860..8ad1f33d3a60507 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: args: [--exit-non-zero-on-fix] files: ^Lib/test/ - id: ruff - name: Run Ruff on Tools/clinic/ + name: Run Ruff on Argument Clinic args: [--exit-non-zero-on-fix, --config=Tools/clinic/.ruff.toml] files: ^Tools/clinic/|Lib/test/test_clinic.py diff --git a/Lib/test/test_clinic.py b/Lib/test/test_clinic.py index 4a5f472e6f71097..627a329bb738a22 100644 --- a/Lib/test/test_clinic.py +++ b/Lib/test/test_clinic.py @@ -2398,7 +2398,7 @@ def expect_failure(self, *args): def test_external(self): CLINIC_TEST = 'clinic.test.c' source = support.findfile(CLINIC_TEST) - with open(source, 'r', encoding='utf-8') as f: + with open(source, encoding='utf-8') as f: orig_contents = f.read() # Run clinic CLI and verify that it does not complain. @@ -2406,7 +2406,7 @@ def test_external(self): out = self.expect_success("-f", "-o", TESTFN, source) self.assertEqual(out, "") - with open(TESTFN, 'r', encoding='utf-8') as f: + with open(TESTFN, encoding='utf-8') as f: new_contents = f.read() self.assertEqual(new_contents, orig_contents) @@ -2466,7 +2466,7 @@ def test_cli_force(self): "/*[clinic end generated code: " "output=c16447c01510dfb3 input=9543a8d2da235301]*/\n" ) - with open(fn, 'r', encoding='utf-8') as f: + with open(fn, encoding='utf-8') as f: generated = f.read() self.assertTrue(generated.endswith(checksum), (generated, checksum)) diff --git a/Tools/clinic/.ruff.toml b/Tools/clinic/.ruff.toml index 3bc9d908ed32960..80cda3f1e01fbcc 100644 --- a/Tools/clinic/.ruff.toml +++ b/Tools/clinic/.ruff.toml @@ -2,9 +2,21 @@ target-version = "py310" fix = true select = [ "F", # Enable all pyflakes rules + "UP", # Enable all pyupgrade rules by default "RUF100", # Ban unused `# noqa` comments "PGH004", # Ban blanket `# noqa` comments (only ignore specific error codes) ] +ignore = [ + # Unnecessary parentheses to functools.lru_cache: just leads to unnecessary churn. + # https://github.com/python/cpython/pull/104684#discussion_r1199653347. + "UP011", + # Use format specifiers instead of %-style formatting. + # Doesn't always make code more readable. + "UP031", + # Use PEP-604 unions rather than tuples for isinstance() checks. + # Makes code slower and more verbose. https://github.com/astral-sh/ruff/issues/7871. + "UP038", +] 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 diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 0f26350e1d06238..e79e2ee310761f3 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -2423,7 +2423,7 @@ def dump(self) -> str: def write_file(filename: str, new_contents: str) -> None: try: - with open(filename, 'r', encoding="utf-8") as fp: + with open(filename, encoding="utf-8") as fp: old_contents = fp.read() if old_contents == new_contents: @@ -4759,9 +4759,9 @@ def set_template_dict(self, template_dict: TemplateDict) -> None: '({0} == base_tp || {0}->tp_init == base_tp->tp_init)' ).format(self.name) else: - type_check = ('(Py_IS_TYPE({0}, base_tp) ||\n ' - ' Py_TYPE({0})->tp_new == base_tp->tp_new)' - ).format(self.name) + type_check = (f'(Py_IS_TYPE({self.name}, base_tp) ||\n ' + f' Py_TYPE({self.name})->tp_new == base_tp->tp_new)' + ) line = f'{type_check} &&\n ' template_dict['self_type_check'] = line