annotate Tools/scripts/checkpyc.py @ 49955:878d40468c4e legacy-trunk

Issue #4384: Added logging integration with warnings module using captureWarnings(). This change includes a NullHandler which does nothing; it will be of use to library developers who want to avoid the "No handlers could be found for logger XXX" message which can appear if the library user doesn't configure logging.
author Vinay Sajip <vinay_sajip@yahoo.co.uk>
date Wed, 03 Dec 2008 23:22:58 +0000
parents 981fff7363b9
children 46625e6122e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4573
73758db2f464 /usr/local/bin/python -> /usr/bin/env python
Guido van Rossum <guido@python.org>
parents: 1506
diff changeset
1 #! /usr/bin/env python
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # Check that all ".pyc" files exist and are up-to-date
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
3 # Uses module 'os'
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 import sys
758
bfc655074523 posix -> os
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
6 import os
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 from stat import ST_MTIME
9294
0de662cecacf Use the imp module to get the magic word.
Guido van Rossum <guido@python.org>
parents: 4573
diff changeset
8 import imp
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 def main():
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
11 silent = 0
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
12 verbose = 0
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
13 if sys.argv[1:]:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
14 if sys.argv[1] == '-v':
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
15 verbose = 1
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
16 elif sys.argv[1] == '-s':
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
17 silent = 1
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
18 MAGIC = imp.get_magic()
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
19 if not silent:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
20 print 'Using MAGIC word', repr(MAGIC)
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
21 for dirname in sys.path:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
22 try:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
23 names = os.listdir(dirname)
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
24 except os.error:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
25 print 'Cannot list directory', repr(dirname)
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
26 continue
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
27 if not silent:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
28 print 'Checking ', repr(dirname), '...'
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
29 names.sort()
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
30 for name in names:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
31 if name[-3:] == '.py':
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
32 name = os.path.join(dirname, name)
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
33 try:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
34 st = os.stat(name)
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
35 except os.error:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
36 print 'Cannot stat', repr(name)
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
37 continue
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
38 if verbose:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
39 print 'Check', repr(name), '...'
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
40 name_c = name + 'c'
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
41 try:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
42 f = open(name_c, 'r')
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
43 except IOError:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
44 print 'Cannot open', repr(name_c)
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
45 continue
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
46 magic_str = f.read(4)
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
47 mtime_str = f.read(4)
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
48 f.close()
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
49 if magic_str <> MAGIC:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
50 print 'Bad MAGIC word in ".pyc" file',
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
51 print repr(name_c)
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
52 continue
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
53 mtime = get_long(mtime_str)
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
54 if mtime == 0 or mtime == -1:
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
55 print 'Bad ".pyc" file', repr(name_c)
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
56 elif mtime <> st[ST_MTIME]:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
57 print 'Out-of-date ".pyc" file',
31515
71a294bd7950 Replace backticks with repr() or "%r"
Walter Dörwald <walter@livinglogic.de>
parents: 15930
diff changeset
58 print repr(name_c)
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 def get_long(s):
15930
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
61 if len(s) <> 4:
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
62 return -1
14a27acc755a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 9294
diff changeset
63 return ord(s[0]) + (ord(s[1])<<8) + (ord(s[2])<<16) + (ord(s[3])<<24)
500
7f3faafd83ed Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64
33074
981fff7363b9 [Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents: 31515
diff changeset
65 if __name__ == '__main__':
981fff7363b9 [Patch #1005491 ] use __name__ == '__main__' in scripts
Andrew M. Kuchling <amk@amk.ca>
parents: 31515
diff changeset
66 main()