annotate Tools/scripts/patchcheck.py @ 62799:dcc2e8bf64cf

Fix: Issue9091 Minor documentation clarification.
author Senthil Kumaran <orsenthil@gmail.com>
date Mon, 05 Jul 2010 11:41:42 +0000
parents 7ffd2a44942c
children 5ae390ac6c61
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
1 import os.path
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
2 import subprocess
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
3 import sys
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
4
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
5 import reindent
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
6
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
7
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
8 def n_files_str(count):
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
9 """Return 'N file(s)' with the proper plurality on 'file'."""
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
10 return "{} file{}".format(count, "s" if count != 1 else "")
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
11
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
12 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
13 """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
14 def decorated_fxn(fxn):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
15 def call_fxn(*args, **kwargs):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
16 sys.stdout.write(message + ' ... ')
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
17 sys.stdout.flush()
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
18 result = fxn(*args, **kwargs)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
19 if not modal and not info:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
20 print("done")
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
21 elif info:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
22 print(info(result))
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
23 else:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
24 if result:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
25 print("yes")
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
26 else:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
27 print("NO")
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
28 return result
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
29 return call_fxn
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
30 return decorated_fxn
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
31
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
32 @status("Getting the list of files that have been added/changed",
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
33 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
34 def changed_files():
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
35 """Run ``svn status`` and return a set of files that have been
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
36 changed/added."""
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
37 cmd = 'svn status --quiet --non-interactive --ignore-externals'
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
38 svn_st = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
39 svn_st.wait()
45883
fa70e6ae831a Convert the input from stdout to text.
Brett Cannon <bcannon@gmail.com>
parents: 45865
diff changeset
40 output = [x.decode().rstrip() for x in svn_st.stdout.readlines()]
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
41 files = set()
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
42 for line in output:
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
43 if not line[0] in ('A', 'M'):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
44 continue
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
45 line_parts = line.split()
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
46 path = line_parts[-1]
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
47 if os.path.isfile(path):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
48 files.add(path)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
49 return files
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
50
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
51 def report_modified_files(file_paths):
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
52 count = len(file_paths)
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
53 if count == 0:
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
54 return n_files_str(count)
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
55 else:
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
56 lines = ["{}:".format(n_files_str(count))]
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
57 for path in file_paths:
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
58 lines.append(" {}".format(path))
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
59 return "\n".join(lines)
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
60
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
61 @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
62 def normalize_whitespace(file_paths):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
63 """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
64 reindent.makebackup = False # No need to create backups.
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
65 fixed = []
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
66 for path in (x for x in file_paths if x.endswith('.py')):
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
67 if reindent.check(path):
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
68 fixed.append(path)
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
69 return fixed
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
70
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
71 @status("Docs modified", modal=True)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
72 def docs_modified(file_paths):
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
73 """Report if any file in the Doc directory has been changed."""
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
74 return bool(file_paths)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
75
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
76 @status("Misc/ACKS updated", modal=True)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
77 def credit_given(file_paths):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
78 """Check if Misc/ACKS has been changed."""
50812
a04b1c7167ba Merged revisions 68630 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 45883
diff changeset
79 return 'Misc/ACKS' in file_paths
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
80
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
81 @status("Misc/NEWS updated", modal=True)
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
82 def reported_news(file_paths):
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
83 """Check if Misc/NEWS has been changed."""
50812
a04b1c7167ba Merged revisions 68630 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 45883
diff changeset
84 return 'Misc/NEWS' in file_paths
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
85
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
86
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
87 def main():
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
88 file_paths = changed_files()
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
89 python_files = [fn for fn in file_paths if fn.endswith('.py')]
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
90 c_files = [fn for fn in file_paths if fn.endswith(('.c', '.h'))]
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
91 docs = [fn for fn in file_paths if fn.startswith('Doc')]
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
92 special_files = {'Misc/ACKS', 'Misc/NEWS'} & set(file_paths)
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
93 # PEP 8 whitespace rules enforcement.
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
94 normalize_whitespace(python_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
95 # Docs updated.
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
96 docs_modified(docs)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
97 # Misc/ACKS changed.
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
98 credit_given(special_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
99 # Misc/NEWS changed.
62798
7ffd2a44942c Do some basic refactoring. Along the way also list what files had their
Brett Cannon <bcannon@gmail.com>
parents: 50812
diff changeset
100 reported_news(special_files)
45865
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
101
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
102 # Test suite run and passed.
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
103 print()
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
104 print("Did you run the test suite?")
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
105
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
106
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
107 if __name__ == '__main__':
e0e8bef0d5ec Merged revisions 61520,61523-61528,61532 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff changeset
108 main()