]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] GH-109408: Move the Python file whitespace check from patchcheck to pre-commit...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 10 Oct 2023 14:06:35 +0000 (16:06 +0200)
committerGitHub <noreply@github.com>
Tue, 10 Oct 2023 14:06:35 +0000 (14:06 +0000)
GH-109408: Move the Python file whitespace check from patchcheck to pre-commit (GH-109891)
(cherry picked from commit 08ec4a1dbf66383303de9ce5cb55b2b437ef92c0)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
.pre-commit-config.yaml
Tools/patchcheck/patchcheck.py

index 5b362a7c9d4c8aa84352e0628f1f4d2649eca2b5..aabf1c535868a5d10a1603dc14f2a64ddd66a573 100644 (file)
@@ -23,6 +23,15 @@ repos:
       - id: trailing-whitespace
         types_or: [c, inc, python, rst]
 
+  - repo: local
+    hooks:
+      - id: python-file-whitespace
+        name: "Check Python file whitespace"
+        entry: 'python Tools/patchcheck/reindent.py --nobackup --newline LF'
+        language: 'system'
+        types: [python]
+        exclude: '^(Lib/test/tokenizedata/|Tools/c-analyzer/cpython/_parser).*$'
+
   - repo: https://github.com/sphinx-contrib/sphinx-lint
     rev: v0.6.8
     hooks:
index af1f0584bb54035e8221ce805aa63a1f096bcbdc..5f55e1bff457b92e35db4407d6e619b6e4ba473e 100755 (executable)
@@ -7,7 +7,6 @@ import os.path
 import subprocess
 import sysconfig
 
-import reindent
 import untabify
 
 
@@ -184,21 +183,6 @@ _PYTHON_FILES_WITH_TABS = frozenset({
 })
 
 
-@status("Fixing Python file whitespace", info=report_modified_files)
-def normalize_whitespace(file_paths):
-    """Make sure that the whitespace for .py files have been normalized."""
-    reindent.makebackup = False  # No need to create backups.
-    fixed = [
-        path for path in file_paths
-        if (
-            path.endswith('.py')
-            and path not in _PYTHON_FILES_WITH_TABS
-            and reindent.check(os.path.join(SRCDIR, path))
-        )
-    ]
-    return fixed
-
-
 @status("Fixing C file whitespace", info=report_modified_files)
 def normalize_c_whitespace(file_paths):
     """Report if any C files """
@@ -256,10 +240,8 @@ def ci(pull_request):
         return
     base_branch = get_base_branch()
     file_paths = changed_files(base_branch)
-    python_files = [fn for fn in file_paths if fn.endswith('.py')]
     c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))]
     fixed = []
-    fixed.extend(normalize_whitespace(python_files))
     fixed.extend(normalize_c_whitespace(c_files))
     if not fixed:
         print('No whitespace issues found')
@@ -273,13 +255,10 @@ def ci(pull_request):
 def main():
     base_branch = get_base_branch()
     file_paths = changed_files(base_branch)
-    python_files = [fn for fn in file_paths if fn.endswith('.py')]
     c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))]
     doc_files = [fn for fn in file_paths if fn.startswith('Doc') and
                  fn.endswith(('.rst', '.inc'))]
     misc_files = {p for p in file_paths if p.startswith('Misc')}
-    # PEP 8 whitespace rules enforcement.
-    normalize_whitespace(python_files)
     # C rules enforcement.
     normalize_c_whitespace(c_files)
     # Docs updated.
@@ -294,10 +273,13 @@ def main():
     regenerated_pyconfig_h_in(file_paths)
 
     # Test suite run and passed.
-    if python_files or c_files:
-        end = " and check for refleaks?" if c_files else "?"
-        print()
-        print("Did you run the test suite" + end)
+    has_c_files = any(fn for fn in file_paths if fn.endswith(('.c', '.h')))
+    has_python_files = any(fn for fn in file_paths if fn.endswith('.py'))
+    print()
+    if has_c_files:
+        print("Did you run the test suite and check for refleaks?")
+    elif has_python_files:
+        print("Did you run the test suite?")
 
 
 if __name__ == '__main__':