Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/checkappend.py @ 24042:63fbbed10714 legacy-trunk
Simplify HTTPSConnection constructor.
See discussion in SF bug 458463.
| author | Jeremy Hylton <jeremy@alum.mit.edu> |
|---|---|
| date | Fri, 28 Jun 2002 23:38:14 +0000 |
| parents | d27684ab215a |
| children | 8a7a2f1f88f0 |
| rev | line source |
|---|---|
|
11879
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 #! /usr/bin/env python |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 # Released to the public domain, by Tim Peters, 28 February 2000. |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 """checkappend.py -- search for multi-argument .append() calls. |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
7 Usage: specify one or more file or directory paths: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 checkappend [-v] file_or_dir [file_or_dir] ... |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
10 Each file_or_dir is checked for multi-argument .append() calls. When |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 a directory, all .py files in the directory, and recursively in its |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 subdirectories, are checked. |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 Use -v for status msgs. Use -vv for more status msgs. |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 In the absence of -v, the only output is pairs of the form |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
18 filename(linenumber): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 line containing the suspicious append |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
20 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 Note that this finds multi-argument append calls regardless of whether |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
22 they're attached to list objects. If a module defines a class with an |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
23 append method that takes more than one argument, calls to that method |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
24 will be listed. |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
25 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
26 Note that this will not find multi-argument list.append calls made via a |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
27 bound method object. For example, this is not caught: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
28 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 somelist = [] |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
30 push = somelist.append |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
31 push(1, 2, 3) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 """ |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
33 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
34 __version__ = 1, 0, 0 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
35 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
36 import os |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
37 import sys |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
38 import string |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
39 import getopt |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
40 import tokenize |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
41 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
42 verbose = 0 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
43 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
44 def errprint(*args): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
45 msg = string.join(args) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
46 sys.stderr.write(msg) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
47 sys.stderr.write("\n") |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
48 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
49 def main(): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
50 args = sys.argv[1:] |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
51 global verbose |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
52 try: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
53 opts, args = getopt.getopt(sys.argv[1:], "v") |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
54 except getopt.error, msg: |
|
11880
d27684ab215a
Correct type error in getopt.error handling code.
Guido van Rossum <guido@python.org>
parents:
11879
diff
changeset
|
55 errprint(str(msg) + "\n\n" + __doc__) |
|
11879
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
56 return |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
57 for opt, optarg in opts: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
58 if opt == '-v': |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
59 verbose = verbose + 1 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
60 if not args: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
61 errprint(__doc__) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
62 return |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
63 for arg in args: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
64 check(arg) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
65 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
66 def check(file): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
67 if os.path.isdir(file) and not os.path.islink(file): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
68 if verbose: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
69 print "%s: listing directory" % `file` |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
70 names = os.listdir(file) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
71 for name in names: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
72 fullname = os.path.join(file, name) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
73 if ((os.path.isdir(fullname) and |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
74 not os.path.islink(fullname)) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
75 or os.path.normcase(name[-3:]) == ".py"): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
76 check(fullname) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
77 return |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
78 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
79 try: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
80 f = open(file) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
81 except IOError, msg: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
82 errprint("%s: I/O Error: %s" % (`file`, str(msg))) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
83 return |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
84 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
85 if verbose > 1: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
86 print "checking", `file`, "..." |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
87 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
88 ok = AppendChecker(file, f).run() |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
89 if verbose and ok: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
90 print "%s: Clean bill of health." % `file` |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
91 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
92 [FIND_DOT, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
93 FIND_APPEND, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
94 FIND_LPAREN, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
95 FIND_COMMA, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
96 FIND_STMT] = range(5) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
97 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
98 class AppendChecker: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
99 def __init__(self, fname, file): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 self.fname = fname |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
101 self.file = file |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
102 self.state = FIND_DOT |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
103 self.nerrors = 0 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
104 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
105 def run(self): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
106 try: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
107 tokenize.tokenize(self.file.readline, self.tokeneater) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
108 except tokenize.TokenError, msg: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
109 errprint("%s: Token Error: %s" % (`self.fname`, str(msg))) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
110 self.nerrors = self.nerrors + 1 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
111 return self.nerrors == 0 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
112 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
113 def tokeneater(self, type, token, start, end, line, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 NEWLINE=tokenize.NEWLINE, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 JUNK=(tokenize.COMMENT, tokenize.NL), |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
116 OP=tokenize.OP, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
117 NAME=tokenize.NAME): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
119 state = self.state |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
120 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
121 if type in JUNK: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
122 pass |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
123 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 elif state is FIND_DOT: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
125 if type is OP and token == ".": |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
126 state = FIND_APPEND |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
127 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
128 elif state is FIND_APPEND: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 if type is NAME and token == "append": |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 self.line = line |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 self.lineno = start[0] |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
132 state = FIND_LPAREN |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
133 else: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
134 state = FIND_DOT |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
135 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 elif state is FIND_LPAREN: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
137 if type is OP and token == "(": |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
138 self.level = 1 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
139 state = FIND_COMMA |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
140 else: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
141 state = FIND_DOT |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
142 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
143 elif state is FIND_COMMA: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
144 if type is OP: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
145 if token in ("(", "{", "["): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
146 self.level = self.level + 1 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
147 elif token in (")", "}", "]"): |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
148 self.level = self.level - 1 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 if self.level == 0: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
150 state = FIND_DOT |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
151 elif token == "," and self.level == 1: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
152 self.nerrors = self.nerrors + 1 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
153 print "%s(%d):\n%s" % (self.fname, self.lineno, |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
154 self.line) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
155 # don't gripe about this stmt again |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
156 state = FIND_STMT |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
158 elif state is FIND_STMT: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
159 if type is NEWLINE: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
160 state = FIND_DOT |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
161 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
162 else: |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
163 raise SystemError("unknown internal state '%s'" % `state`) |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
164 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
165 self.state = state |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
166 |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
167 if __name__ == '__main__': |
|
a7d609ea90cc
Script by Tim Peters to discover illegal append() calls.
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
168 main() |
