annotate Tools/scripts/patchcheck.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents 26686d227e41
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
71557
65d5ecefd50d Fix missing or wrong shebangs and missing executable bits for scripts (#10318)
Éric Araujo <merwok@netwok.org>
parents: 68257
diff changeset
1 #!/usr/bin/env python3
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
2 import re
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
3 import sys
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
4 import shutil
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
5 import os.path
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
6 import subprocess
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
7 import sysconfig
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
8
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
9 import reindent
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
10 import untabify
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
11
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
12
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
13 SRCDIR = sysconfig.get_config_var('srcdir')
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
14
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
15
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
16 def n_files_str(count):
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
17 """Return 'N file(s)' with the proper plurality on 'file'."""
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
18 return "{} file{}".format(count, "s" if count != 1 else "")
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
19
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
20
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
21 def status(message, modal=False, info=None):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
22 """Decorator to output status info to stdout."""
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
23 def decorated_fxn(fxn):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
24 def call_fxn(*args, **kwargs):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
25 sys.stdout.write(message + ' ... ')
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
26 sys.stdout.flush()
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
27 result = fxn(*args, **kwargs)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
28 if not modal and not info:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
29 print("done")
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
30 elif info:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
31 print(info(result))
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
32 else:
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
33 print("yes" if result else "NO")
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
34 return result
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
35 return call_fxn
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
36 return decorated_fxn
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
37
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
38
75168
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
39 def mq_patches_applied():
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
40 """Check if there are any applied MQ patches."""
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
41 cmd = 'hg qapplied'
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
42 with subprocess.Popen(cmd.split(),
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
43 stdout=subprocess.PIPE,
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
44 stderr=subprocess.PIPE) as st:
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
45 bstdout, _ = st.communicate()
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
46 return st.returncode == 0 and bstdout
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
47
fc5de19c66e2 Issue #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71834
diff changeset
48
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
49 @status("Getting the list of files that have been added/changed",
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
50 info=lambda x: n_files_str(len(x)))
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
51 def changed_files():
71667
d72e04ff0f97 Small cleanup
Éric Araujo <merwok@netwok.org>
parents: 71666
diff changeset
52 """Get the list of changed or added files from Mercurial."""
d72e04ff0f97 Small cleanup
Éric Araujo <merwok@netwok.org>
parents: 71666
diff changeset
53 if not os.path.isdir(os.path.join(SRCDIR, '.hg')):
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
54 sys.exit('need a checkout to get modified files')
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
55
71667
d72e04ff0f97 Small cleanup
Éric Araujo <merwok@netwok.org>
parents: 71666
diff changeset
56 cmd = 'hg status --added --modified --no-status'
75169
1bdca2bcba6d Merge: #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71835 75168
diff changeset
57 if mq_patches_applied():
1bdca2bcba6d Merge: #14053: Fix "make patchcheck" to work with MQ.
Nadeem Vawda <nadeem.vawda@gmail.com>
parents: 71835 75168
diff changeset
58 cmd += ' --rev qparent'
71667
d72e04ff0f97 Small cleanup
Éric Araujo <merwok@netwok.org>
parents: 71666
diff changeset
59 with subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) as st:
71026
39fadb0255cd general cleaning up
Benjamin Peterson <benjamin@python.org>
parents: 71025
diff changeset
60 return [x.decode().rstrip() for x in st.stdout]
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
61
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
62
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
63 def report_modified_files(file_paths):
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
64 count = len(file_paths)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
65 if count == 0:
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
66 return n_files_str(count)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
67 else:
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
68 lines = ["{}:".format(n_files_str(count))]
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
69 for path in file_paths:
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
70 lines.append(" {}".format(path))
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
71 return "\n".join(lines)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
72
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
73
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
74 @status("Fixing whitespace", info=report_modified_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
75 def normalize_whitespace(file_paths):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
76 """Make sure that the whitespace for .py files have been normalized."""
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
77 reindent.makebackup = False # No need to create backups.
71026
39fadb0255cd general cleaning up
Benjamin Peterson <benjamin@python.org>
parents: 71025
diff changeset
78 fixed = [path for path in file_paths if path.endswith('.py') and
71666
5993f91598ce Merge fixes for #9860, #11104/#8688 and #12331 from 3.2
Éric Araujo <merwok@netwok.org>
parents: 71570 71663
diff changeset
79 reindent.check(os.path.join(SRCDIR, path))]
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
80 return fixed
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
81
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
82
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
83 @status("Fixing C file whitespace", info=report_modified_files)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
84 def normalize_c_whitespace(file_paths):
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
85 """Report if any C files """
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
86 fixed = []
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
87 for path in file_paths:
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
88 abspath = os.path.join(SRCDIR, path)
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
89 with open(abspath, 'r') as f:
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
90 if '\t' not in f.read():
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
91 continue
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
92 untabify.process(abspath, 8, verbose=False)
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
93 fixed.append(path)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
94 return fixed
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
95
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
96
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
97 ws_re = re.compile(br'\s+(\r?\n)$')
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
98
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
99 @status("Fixing docs whitespace", info=report_modified_files)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
100 def normalize_docs_whitespace(file_paths):
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
101 fixed = []
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
102 for path in file_paths:
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
103 abspath = os.path.join(SRCDIR, path)
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
104 try:
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
105 with open(abspath, 'rb') as f:
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
106 lines = f.readlines()
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
107 new_lines = [ws_re.sub(br'\1', line) for line in lines]
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
108 if new_lines != lines:
71663
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
109 shutil.copyfile(abspath, abspath + '.bak')
313a71664781 Let “make patchcheck” work for out-of-dir builds (#9860)
Éric Araujo <merwok@netwok.org>
parents: 71557
diff changeset
110 with open(abspath, 'wb') as f:
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
111 f.writelines(new_lines)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
112 fixed.append(path)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
113 except Exception as err:
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
114 print('Cannot fix %s: %s' % (path, err))
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
115 return fixed
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
116
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
117
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
118 @status("Docs modified", modal=True)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
119 def docs_modified(file_paths):
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
120 """Report if any file in the Doc directory has been changed."""
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
121 return bool(file_paths)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
122
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
123
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
124 @status("Misc/ACKS updated", modal=True)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
125 def credit_given(file_paths):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
126 """Check if Misc/ACKS has been changed."""
84773
26686d227e41 Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.
Terry Jan Reedy <tjreedy@udel.edu>
parents: 81416
diff changeset
127 return os.path.join('Misc', 'ACKS') in file_paths
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
128
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
129
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
130 @status("Misc/NEWS updated", modal=True)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
131 def reported_news(file_paths):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
132 """Check if Misc/NEWS has been changed."""
84773
26686d227e41 Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.
Terry Jan Reedy <tjreedy@udel.edu>
parents: 81416
diff changeset
133 return os.path.join('Misc', 'NEWS') in file_paths
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
134
75523
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
135 @status("configure regenerated", modal=True, info=str)
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
136 def regenerated_configure(file_paths):
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
137 """Check if configure has been regenerated."""
75661
f75fd74a0c13 merge 3.2
Matthias Klose <doko@ubuntu.com>
parents: 75523
diff changeset
138 if 'configure.ac' in file_paths:
75523
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
139 return "yes" if 'configure' in file_paths else "no"
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
140 else:
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
141 return "not needed"
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
142
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
143 @status("pyconfig.h.in regenerated", modal=True, info=str)
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
144 def regenerated_pyconfig_h_in(file_paths):
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
145 """Check if pyconfig.h.in has been regenerated."""
75661
f75fd74a0c13 merge 3.2
Matthias Klose <doko@ubuntu.com>
parents: 75523
diff changeset
146 if 'configure.ac' in file_paths:
75523
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
147 return "yes" if 'pyconfig.h.in' in file_paths else "no"
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
148 else:
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
149 return "not needed"
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
150
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
151 def main():
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
152 file_paths = changed_files()
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
153 python_files = [fn for fn in file_paths if fn.endswith('.py')]
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
154 c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))]
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
155 doc_files = [fn for fn in file_paths if fn.startswith('Doc')]
84773
26686d227e41 Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.
Terry Jan Reedy <tjreedy@udel.edu>
parents: 81416
diff changeset
156 misc_files = {os.path.join('Misc', 'ACKS'), os.path.join('Misc', 'NEWS')}\
26686d227e41 Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.
Terry Jan Reedy <tjreedy@udel.edu>
parents: 81416
diff changeset
157 & set(file_paths)
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
158 # PEP 8 whitespace rules enforcement.
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
159 normalize_whitespace(python_files)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
160 # C rules enforcement.
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
161 normalize_c_whitespace(c_files)
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
162 # Doc whitespace enforcement.
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
163 normalize_docs_whitespace(doc_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
164 # Docs updated.
66473
05ee6f8c0260 Merged revisions 85728,85731,85735,85766-85771,85773,85777 via svnmerge from
Georg Brandl <georg@python.org>
parents: 50812
diff changeset
165 docs_modified(doc_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
166 # Misc/ACKS changed.
84773
26686d227e41 Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.
Terry Jan Reedy <tjreedy@udel.edu>
parents: 81416
diff changeset
167 credit_given(misc_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
168 # Misc/NEWS changed.
84773
26686d227e41 Issue #18439: Make patchcheck work on Windows for ACKS, NEWS.
Terry Jan Reedy <tjreedy@udel.edu>
parents: 81416
diff changeset
169 reported_news(misc_files)
75523
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
170 # Regenerated configure, if necessary.
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
171 regenerated_configure(file_paths)
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
172 # Regenerated pyconfig.h.in, if necessary.
8ecd1a1c7dfc Modify patchcheck.py to check for changes to configure.in.
Ross Lagerwall <rosslagerwall@gmail.com>
parents: 75169
diff changeset
173 regenerated_pyconfig_h_in(file_paths)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
174
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
175 # Test suite run and passed.
71834
f1859c9d1086 patchcheck: don’t talk about the test suite when no code file were changed.
Éric Araujo <merwok@netwok.org>
parents: 71663
diff changeset
176 if python_files or c_files:
81415
0ed68fb13b3a Add a note about checking refleaks to patchcheck.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 75168
diff changeset
177 end = " and check for refleaks?" if c_files else "?"
71834
f1859c9d1086 patchcheck: don’t talk about the test suite when no code file were changed.
Éric Araujo <merwok@netwok.org>
parents: 71663
diff changeset
178 print()
81415
0ed68fb13b3a Add a note about checking refleaks to patchcheck.
Ezio Melotti <ezio.melotti@gmail.com>
parents: 75168
diff changeset
179 print("Did you run the test suite" + end)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
180
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
181
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
182 if __name__ == '__main__':
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
183 main()