[2.7] bpo-31221: patchcheck ignores external libraries (#3109) (#3118)
![](https://secure.gravatar.com/avatar/cc7737cd64a84f1b5c61a160798e97ee.jpg?s=120&d=mm&r=g)
https://github.com/python/cpython/commit/d45cb040b9fcd74e8824d417bf789fcef4c... commit: d45cb040b9fcd74e8824d417bf789fcef4c9592c branch: 2.7 author: Victor Stinner <victor.stinner@gmail.com> committer: GitHub <noreply@github.com> date: 2017-08-17T17:13:01+02:00 summary: [2.7] bpo-31221: patchcheck ignores external libraries (#3109) (#3118) * bpo-31221: patchcheck ignores external libraries (#3109) Tools/scripts/patchcheck.py now ignores changes in directories which are copies of external libraries: * Modules/_ctypes/libffi_msvc/ * Modules/_ctypes/libffi_osx/ * Modules/_decimal/libmpdec/ * Modules/expat/ * Modules/zlib/ Drop also support for Mercurial, since CPython migrated to Git. Exclude also libmpdec patchcheck: exclude also libffi_osx and libffi_msvc (cherry picked from commit 4a347ce426fe7381885703d9074d7a6b3aeb2f2b) * Exclude also Modules/_ctypes/libffi on Python 2.7 * Remove _decimal/libmpdec, not in Python 2.7 files: M Tools/scripts/patchcheck.py diff --git a/Tools/scripts/patchcheck.py b/Tools/scripts/patchcheck.py index be46fe3d083..b69d54029ac 100755 --- a/Tools/scripts/patchcheck.py +++ b/Tools/scripts/patchcheck.py @@ -10,8 +10,16 @@ import untabify +# Excluded directories which are copies of external libraries: +# don't check their coding style +EXCLUDE_DIRS = [os.path.join('Modules', '_ctypes', 'libffi'), + os.path.join('Modules', '_ctypes', 'libffi_osx'), + os.path.join('Modules', '_ctypes', 'libffi_msvc'), + os.path.join('Modules', 'expat'), + os.path.join('Modules', 'zlib')] SRCDIR = sysconfig.get_config_var('srcdir') + def n_files_str(count): """Return 'N file(s)' with the proper plurality on 'file'.""" return "{} file{}".format(count, "s" if count != 1 else "") @@ -102,7 +110,7 @@ def changed_files(base_branch=None): cmd += ' --rev qparent' st = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) try: - return [x.decode().rstrip() for x in st.stdout] + filenames = [x.decode().rstrip() for x in st.stdout] finally: st.stdout.close() elif os.path.exists(os.path.join(SRCDIR, '.git')): @@ -129,9 +137,19 @@ def changed_files(base_branch=None): filenames.append(filename) finally: st.stdout.close() - return filenames else: - sys.exit('need a checkout to get modified files') + sys.exit('need a Mercurial or git checkout to get modified files') + + filenames2 = [] + for filename in filenames: + # Normalize the path to be able to match using .startswith() + filename = os.path.normpath(filename) + if any(filename.startswith(path) for path in EXCLUDE_DIRS): + # Exclude the file + continue + filenames2.append(filename) + + return filenames2 def report_modified_files(file_paths):
participants (1)
-
Victor Stinner