Sun, 29 Sep 2013 18:22:08 +0200
Continued correcting doc strings by using the new doc string checker.
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
2302
f29e9405c851
Updated copyright for 2013.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2133
diff
changeset
|
3 | # Copyright (c) 2010 - 2013 Detlev Offenbach <detlev@die-offenbachs.de> |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
1534
e5b76a5eda84
A little change to py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
5 | # Original (c) 2005-2010 Divmod, Inc. |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | # |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | # This module is based on pyflakes for Python2 but was heavily hacked to |
1534
e5b76a5eda84
A little change to py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
8 | # work with Python3 and eric5 |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import builtins |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import os.path |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import ast |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from . import messages |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
16 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | class Binding(object): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | Represents the binding of a value to a name. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | The checker uses this to keep track of which names have been bound and |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | which names have not. See Assignment for a special type of binding that |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | is checked with stricter rules. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | def __init__(self, name, source): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | self.name = name |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | self.source = source |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | self.used = False |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | def __str__(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | return self.name |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | def __repr__(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | return '<{0} object {1!r} from line {2!r} at 0x{3:x}>'.format( |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | self.__class__.__name__, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | self.name, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | self.source.lineno, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | id(self)) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
40 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | class UnBinding(Binding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | ''' |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | Created by the 'del' operator. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | ''' |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
45 | pass |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
47 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | class Importation(Binding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | A binding created by an import statement. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | def __init__(self, name, source): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.fullName = name |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | name = name.split('.')[0] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | super(Importation, self).__init__(name, source) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
57 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | class Argument(Binding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | Represents binding a name as an argument. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
62 | pass |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
64 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | class Assignment(Binding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | Represents binding a name with an explicit assignment. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | The checker will raise warnings for any Assignment that isn't used. Also, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | the checker does not consider assignments in tuple/list unpacking to be |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | Assignments, rather it treats them as simple Bindings. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | """ |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
73 | pass |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
75 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | class FunctionDefinition(Binding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | Represents a function definition. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
2089
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
80 | is_property = False |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
82 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | class ExportBinding(Binding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | A binding created by an __all__ assignment. If the names in the list |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | can be determined statically, they will be treated as names for export and |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | additional checking applied to them. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | The only __all__ assignment that can be recognized is one which takes |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | the value of a literal list containing literal strings. For example:: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | __all__ = ["foo", "bar"] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | Names which are imported and not otherwise used but appear in the value of |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | __all__ will not have an unused import warning reported for them. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | def names(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | Return a list of the names referenced by this binding. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | names = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | if isinstance(self.source, ast.List): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | for node in self.source.elts: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | if isinstance(node, (ast.Str, ast.Bytes)): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | names.append(node.s) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | elif isinstance(node, ast.Num): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | names.append(node.n) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | return names |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
110 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | class Scope(dict): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | Class defining the scope base class. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | importStarred = False # set to True when import * is found |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | def __repr__(self): |
428
58405c24aa09
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
421
diff
changeset
|
118 | return '<{0} at 0x{1:x} {2}>'.format( |
58405c24aa09
Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
421
diff
changeset
|
119 | self.__class__.__name__, id(self), dict.__repr__(self)) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | def __init__(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | super(Scope, self).__init__() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
124 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | class ClassScope(Scope): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | Class representing a name scope for a class. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | pass |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
131 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | class FunctionScope(Scope): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | Class representing a name scope for a function. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | def __init__(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | super(FunctionScope, self).__init__() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | self.globals = {} |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
140 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | class ModuleScope(Scope): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | Class representing a name scope for a module. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | pass |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | # Globally defined names which are not attributes of the builtins module. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | _MAGIC_GLOBALS = ['__file__', '__builtins__'] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
150 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | class Checker(object): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | Class to check the cleanliness and sanity of Python code. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | nodeDepth = 0 |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | traceTree = False |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
158 | def __init__(self, module, filename='(none)'): |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | Constructor |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | @param module parsed module tree or module source code |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | @param filename name of the module file (string) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | self._deferredFunctions = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | self._deferredAssignments = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | self.dead_scopes = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | self.messages = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | self.filename = filename |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | self.scopeStack = [ModuleScope()] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | self.futuresAllowed = True |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | if isinstance(module, str): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | module = ast.parse(module, filename, "exec") |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | self.handleBody(module) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | self._runDeferred(self._deferredFunctions) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | # Set _deferredFunctions to None so that deferFunction will fail |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | # noisily if called after we've run through the deferred functions. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | self._deferredFunctions = None |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | self._runDeferred(self._deferredAssignments) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | # Set _deferredAssignments to None so that deferAssignment will fail |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | # noisly if called after we've run through the deferred assignments. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | self._deferredAssignments = None |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | del self.scopeStack[1:] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | self.popScope() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | self.check_dead_scopes() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | def deferFunction(self, callable): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | ''' |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | Schedule a function handler to be called just before completion. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | This is used for handling function bodies, which must be deferred |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | because code later in the file might modify the global scope. When |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | `callable` is called, the scope at the time this is called will be |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | restored, however it will contain any new bindings added to it. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | ''' |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | self._deferredFunctions.append((callable, self.scopeStack[:])) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | def deferAssignment(self, callable): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | Schedule an assignment handler to be called just after deferred |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | function handlers. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | self._deferredAssignments.append((callable, self.scopeStack[:])) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | def _runDeferred(self, deferred): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | Run the callables in deferred using their associated scope stack. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | for handler, scope in deferred: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | self.scopeStack = scope |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | handler() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | def scope(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | return self.scopeStack[-1] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | scope = property(scope) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | def popScope(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | self.dead_scopes.append(self.scopeStack.pop()) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | def check_dead_scopes(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | Look at scopes which have been fully examined and report names in them |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | which were imported but unused. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | for scope in self.dead_scopes: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | export = isinstance(scope.get('__all__'), ExportBinding) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | if export: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | all = scope['__all__'].names() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | if os.path.split(self.filename)[1] != '__init__.py': |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | # Look for possible mistakes in the export list |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | undefined = set(all) - set(scope) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | for name in undefined: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | self.report( |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | messages.UndefinedExport, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | scope['__all__'].source.lineno, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | name) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | all = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | # Look for imported names that aren't used. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | for importation in scope.values(): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | if isinstance(importation, Importation): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | if not importation.used and importation.name not in all: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | self.report( |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | messages.UnusedImport, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | importation.source.lineno, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | importation.name) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | def pushFunctionScope(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | self.scopeStack.append(FunctionScope()) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | def pushClassScope(self): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | self.scopeStack.append(ClassScope()) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | def report(self, messageClass, *args, **kwargs): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | self.messages.append(messageClass(self.filename, *args, **kwargs)) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | def handleBody(self, tree): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | for node in tree.body: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | self.handleNode(node, tree) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
263 | def handleChildren(self, tree): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
264 | for node in ast.iter_child_nodes(tree): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
265 | self.handleNode(node, tree) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
266 | |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
267 | def isDocstring(self, node): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
268 | """ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
269 | Determine if the given node is a docstring, as long as it is at the |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
270 | correct place in the node tree. |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
271 | """ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
272 | return isinstance(node, ast.Str) or \ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
273 | (isinstance(node, ast.Expr) and |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
274 | isinstance(node.value, ast.Str)) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
275 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | def handleNode(self, node, parent): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | if node: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | node.parent = parent |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | if self.traceTree: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | print(' ' * self.nodeDepth + node.__class__.__name__) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | self.nodeDepth += 1 |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
282 | if self.futuresAllowed and not \ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
283 | (isinstance(node, ast.ImportFrom) or self.isDocstring(node)): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
284 | self.futuresAllowed = False |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | nodeType = node.__class__.__name__.upper() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | try: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | handler = getattr(self, nodeType) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | handler(node) |
2088
73a2ca4ac409
Added code to handle unknown node types to the pyflakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1534
diff
changeset
|
289 | except AttributeError: |
73a2ca4ac409
Added code to handle unknown node types to the pyflakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1534
diff
changeset
|
290 | print(nodeType, "not supported yet. Please report this.") |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | finally: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | self.nodeDepth -= 1 |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | if self.traceTree: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | print(' ' * self.nodeDepth + 'end ' + node.__class__.__name__) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | def ignore(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | pass |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | # ast nodes to be ignored |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | PASS = CONTINUE = BREAK = ELLIPSIS = NUM = STR = BYTES = \ |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
301 | LOAD = STORE = DEL = AUGLOAD = AUGSTORE = PARAM = \ |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | ATTRIBUTES = AND = OR = ADD = SUB = MULT = DIV = \ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | MOD = POW = LSHIFT = RSHIFT = BITOR = BITXOR = BITAND = FLOORDIV = \ |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
304 | INVERT = NOT = UADD = USUB = EQ = NOTEQ = LT = LTE = GT = GTE = IS = \ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
305 | ISNOT = IN = NOTIN = ignore |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
307 | # "stmt" type nodes |
2089
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
308 | RETURN = DELETE = PRINT = WHILE = IF = WITH = WITHITEM = RAISE = \ |
2133
8e20a87f9809
Added the new "TRY" ast token to the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2089
diff
changeset
|
309 | TRY = TRYEXCEPT = TRYFINALLY = ASSERT = EXEC = EXPR = handleChildren |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
310 | |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
311 | # "expr" type nodes |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
312 | BOOLOP = BINOP = UNARYOP = IFEXP = DICT = SET = YIELD = COMPARE = \ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
313 | CALL = REPR = ATTRIBUTE = SUBSCRIPT = LIST = TUPLE = handleChildren |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
314 | |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
315 | # "slice" type nodes |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
316 | SLICE = EXTSLICE = INDEX = handleChildren |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
317 | |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
318 | # additional node types |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
319 | COMPREHENSION = KEYWORD = handleChildren |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
320 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
321 | def addBinding(self, lineno, value, reportRedef=True): |
801
16f9875e278b
Fixed small typo in a source docu string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
322 | ''' |
16f9875e278b
Fixed small typo in a source docu string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
323 | Called when a binding is altered. |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | @param lineno line of the statement responsible for the change (integer) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | @param value the optional new value, a Binding instance, associated |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | with the binding; if None, the binding is deleted if it exists |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | @param reportRedef flag indicating if rebinding while unused will be |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | reported (boolean) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | ''' |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | if (isinstance(self.scope.get(value.name), FunctionDefinition) |
2089
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
332 | and isinstance(value, FunctionDefinition) |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
333 | and not self.scope.get(value.name).is_property |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
334 | and not value.is_property): |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | self.report(messages.RedefinedFunction, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | lineno, value.name, self.scope[value.name].source.lineno) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | if not isinstance(self.scope, ClassScope): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | for scope in self.scopeStack[::-1]: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | existing = scope.get(value.name) |
689
8ed6155d4d65
Fixed an issue with the new py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
688
diff
changeset
|
341 | if isinstance(existing, Importation) and \ |
8ed6155d4d65
Fixed an issue with the new py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
688
diff
changeset
|
342 | not existing.used and \ |
8ed6155d4d65
Fixed an issue with the new py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
688
diff
changeset
|
343 | not isinstance(value, UnBinding) and \ |
8ed6155d4d65
Fixed an issue with the new py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
688
diff
changeset
|
344 | (not isinstance(value, Importation) or \ |
8ed6155d4d65
Fixed an issue with the new py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
688
diff
changeset
|
345 | value.fullName == existing.fullName) and \ |
8ed6155d4d65
Fixed an issue with the new py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
688
diff
changeset
|
346 | reportRedef: |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | self.report(messages.RedefinedWhileUnused, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | lineno, value.name, scope[value.name].source.lineno) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | if isinstance(value, UnBinding): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | try: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | del self.scope[value.name] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | except KeyError: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | self.report(messages.UndefinedName, lineno, value.name) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | self.scope[value.name] = value |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | ############################################################ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | ## individual handler methods below |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | ############################################################ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | def GLOBAL(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | Keep track of globals declarations. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | if isinstance(self.scope, FunctionScope): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | self.scope.globals.update(dict.fromkeys(node.names)) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | NONLOCAL = GLOBAL |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | def LISTCOMP(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | for generator in node.generators: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | self.handleNode(generator, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | self.handleNode(node.elt, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | SETCOMP = GENERATOREXP = LISTCOMP |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | def DICTCOMP(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | for generator in node.generators: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | self.handleNode(generator, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | self.handleNode(node.key, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | self.handleNode(node.value, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | def FOR(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | Process bindings for loop variables. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | vars = [] |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
389 | |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | def collectLoopVars(n): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | if isinstance(n, ast.Name): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | vars.append(n.id) |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
393 | elif isinstance(n, ast.expr_context): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
394 | return |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
395 | else: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
396 | for c in ast.iter_child_nodes(n): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
397 | collectLoopVars(c) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399 | collectLoopVars(node.target) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | for varn in vars: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401 | if (isinstance(self.scope.get(varn), Importation) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
402 | # unused ones will get an unused import warning |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | and self.scope[varn].used): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | self.report(messages.ImportShadowedByLoopVar, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | node.lineno, varn, self.scope[varn].source.lineno) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406 | |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
407 | self.handleChildren(node) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409 | def NAME(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
410 | """ |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
411 | Handle occurrence of Name (which can be a load/store/delete access.) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | """ |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
413 | # Locate the name in locals / function / globals scopes. |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
414 | if isinstance(node.ctx, (ast.Load, ast.AugLoad)): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
415 | # try local scope |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
416 | importStarred = self.scope.importStarred |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417 | try: |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
418 | self.scope[node.id].used = (self.scope, node.lineno) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
419 | except KeyError: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
420 | pass |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | return |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423 | |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
424 | # try enclosing function scopes |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
425 | for scope in self.scopeStack[-2:0:-1]: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
426 | importStarred = importStarred or scope.importStarred |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
427 | if not isinstance(scope, FunctionScope): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
428 | continue |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
429 | try: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
430 | scope[node.id].used = (self.scope, node.lineno) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
431 | except KeyError: |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | pass |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
433 | else: |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
434 | return |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
435 | |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
436 | # try global scope |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
437 | importStarred = importStarred or self.scopeStack[0].importStarred |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
438 | try: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
439 | self.scopeStack[0][node.id].used = (self.scope, node.lineno) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
440 | except KeyError: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
441 | if ((not hasattr(builtins, node.id)) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
442 | and node.id not in _MAGIC_GLOBALS |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
443 | and not importStarred): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
444 | if (os.path.basename(self.filename) == '__init__.py' and |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
445 | node.id == '__path__'): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
446 | # the special name __path__ is valid only in packages |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
447 | pass |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
448 | else: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
449 | self.report(messages.UndefinedName, node.lineno, node.id) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
450 | elif isinstance(node.ctx, (ast.Store, ast.AugStore)): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
451 | # if the name hasn't already been defined in the current scope |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
452 | if isinstance(self.scope, FunctionScope) and node.id not in self.scope: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
453 | # for each function or module scope above us |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
454 | for scope in self.scopeStack[:-1]: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
455 | if not isinstance(scope, (FunctionScope, ModuleScope)): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
456 | continue |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
457 | # if the name was defined in that scope, and the name has |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
458 | # been accessed already in the current scope, and hasn't |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
459 | # been declared global |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
460 | if (node.id in scope |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
461 | and scope[node.id].used |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
462 | and scope[node.id].used[0] is self.scope |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
463 | and node.id not in self.scope.globals): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
464 | # then it's probably a mistake |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
465 | self.report(messages.UndefinedLocal, |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
466 | scope[node.id].used[1], |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
467 | node.id, |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
468 | scope[node.id].source.lineno) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
469 | break |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
470 | |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
471 | if isinstance(node.parent, |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
472 | (ast.For, ast.comprehension, ast.Tuple, ast.List)): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
473 | binding = Binding(node.id, node) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
474 | elif (node.id == '__all__' and |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
475 | isinstance(self.scope, ModuleScope)): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
476 | binding = ExportBinding(node.id, node.parent.value) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
477 | else: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
478 | binding = Assignment(node.id, node) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
479 | if node.id in self.scope: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
480 | binding.used = self.scope[node.id].used |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
481 | self.addBinding(node.lineno, binding) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
482 | elif isinstance(node.ctx, ast.Del): |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
483 | if isinstance(self.scope, FunctionScope) and \ |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
484 | node.id in self.scope.globals: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
485 | del self.scope.globals[node.id] |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
486 | else: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
487 | self.addBinding(node.lineno, UnBinding(node.id, node)) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
488 | else: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
489 | # must be a Param context -- this only happens for names in function |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
490 | # arguments, but these aren't dispatched through here |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
491 | raise RuntimeError( |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
492 | "Got impossible expression context: {0:r}".format(node.ctx,)) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | def FUNCTIONDEF(self, node): |
2089
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
495 | is_property = False |
1534
e5b76a5eda84
A little change to py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
496 | if hasattr(node, "decorator_list"): |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | for decorator in node.decorator_list: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | self.handleNode(decorator, node) |
2089
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
499 | if getattr(decorator, 'id', None) == 'property': |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
500 | is_property = True |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
501 | if getattr(decorator, 'attr', None) in ('setter', 'deleter'): |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
502 | is_property = True |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
503 | funcdef = FunctionDefinition(node.name, node) |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
504 | funcdef.is_property = is_property |
d23ab571d2b9
A few little enhancements to the py3flakes checker and a Python 3.3 extension for it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2088
diff
changeset
|
505 | self.addBinding(node.lineno, funcdef) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | self.LAMBDA(node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | def LAMBDA(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | for default in node.args.defaults + node.args.kw_defaults: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | self.handleNode(default, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | def runFunction(): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | args = [] |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | def addArgs(arglist): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | for arg in arglist: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | if isinstance(arg.arg, tuple): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
518 | addArgs(arg.arg) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | if arg.arg in args: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | self.report(messages.DuplicateArgument, node.lineno, arg.arg) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | args.append(arg.arg) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | def checkUnusedAssignments(): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | Check to see if any assignments have not been used. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
527 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
528 | for name, binding in self.scope.items(): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | if (not binding.used and not name in self.scope.globals |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | and isinstance(binding, Assignment)): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | self.report(messages.UnusedVariable, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | binding.source.lineno, name) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | self.pushFunctionScope() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | addArgs(node.args.args) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | addArgs(node.args.kwonlyargs) |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
537 | # vararg/kwarg identifiers are not Name nodes |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
538 | if node.args.vararg: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
539 | args.append(node.args.vararg) |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
540 | if node.args.kwarg: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
541 | args.append(node.args.kwarg) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | for name in args: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | self.addBinding(node.lineno, Argument(name, node), reportRedef=False) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | if isinstance(node.body, list): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | self.handleBody(node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | self.handleNode(node.body, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | self.deferAssignment(checkUnusedAssignments) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
549 | self.popScope() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
551 | self.deferFunction(runFunction) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
552 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | def CLASSDEF(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | """ |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | Check names used in a class definition, including its decorators, base |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | classes, and the body of its definition. Additionally, add its name to |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | the current scope. |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
558 | """ |
1534
e5b76a5eda84
A little change to py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
559 | for decorator in getattr(node, "decorator_list", []): |
e5b76a5eda84
A little change to py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1509
diff
changeset
|
560 | self.handleNode(decorator, node) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
561 | for baseNode in node.bases: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
562 | self.handleNode(baseNode, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
563 | self.addBinding(node.lineno, Binding(node.name, node)) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
564 | self.pushClassScope() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
565 | self.handleBody(node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
566 | self.popScope() |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
567 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
568 | def handleAssignName(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
569 | # special handling for ast.Subscript and ast.Starred |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
570 | if isinstance(node, (ast.Subscript, ast.Starred)): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
571 | node.value.parent = node |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
572 | self.handleAssignName(node.value) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
573 | if isinstance(node, ast.Subscript): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
574 | if isinstance(node.slice, ast.Slice): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
575 | self.handleNode(node.slice.lower, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
576 | self.handleNode(node.slice.upper, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
577 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
578 | self.handleNode(node.slice.value, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
579 | return |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
580 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
581 | # if the name hasn't already been defined in the current scope |
125
064cfadcf15c
Fixed an issue in the py3flakes checker code (forgot to handle assignments to lists).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
88
diff
changeset
|
582 | if isinstance(node, (ast.Tuple, ast.List)): |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
583 | for elt in node.elts: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
584 | elt.parent = node |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
585 | self.handleAssignName(elt) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
586 | return |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
588 | if isinstance(node, ast.Attribute): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
589 | self.handleNode(node.value, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
590 | return |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
591 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
592 | if isinstance(self.scope, FunctionScope) and node.id not in self.scope: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
593 | # for each function or module scope above us |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | for scope in self.scopeStack[:-1]: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
595 | if not isinstance(scope, (FunctionScope, ModuleScope)): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
596 | continue |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | # if the name was defined in that scope, and the name has |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
598 | # been accessed already in the current scope, and hasn't |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
599 | # been declared global |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
600 | if (node.id in scope |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
601 | and scope[node.id].used |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
602 | and scope[node.id].used[0] is self.scope |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
603 | and node.id not in self.scope.globals): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
604 | # then it's probably a mistake |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
605 | self.report(messages.UndefinedLocal, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
606 | scope[node.id].used[1], |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
607 | node.id, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
608 | scope[node.id].source.lineno) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
609 | break |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
610 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
611 | if isinstance(node.parent, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
612 | (ast.For, ast.ListComp, ast.GeneratorExp, |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
613 | ast.Tuple, ast.List)): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
614 | binding = Binding(node.id, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
615 | elif (node.id == '__all__' and |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
616 | isinstance(self.scope, ModuleScope) and |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
617 | isinstance(node.parent, ast.Assign)): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
618 | binding = ExportBinding(node.id, node.parent.value) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
619 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
620 | binding = Assignment(node.id, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
621 | if node.id in self.scope: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
622 | binding.used = self.scope[node.id].used |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
623 | self.addBinding(node.lineno, binding) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
624 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
625 | def ASSIGN(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
626 | self.handleNode(node.value, node) |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
627 | for target in node.targets: |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
628 | self.handleNode(target, node) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
629 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
630 | def AUGASSIGN(self, node): |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
631 | # AugAssign is awkward: must set the context explicitly and visit twice, |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
632 | # once with AugLoad context, once with AugStore context |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
633 | node.target.ctx = ast.AugLoad() |
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
634 | self.handleNode(node.target, node) |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
635 | self.handleNode(node.value, node) |
688
b4ea6261967a
Improved the py3flakes checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
428
diff
changeset
|
636 | node.target.ctx = ast.AugStore() |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
637 | self.handleNode(node.target, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
638 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
639 | def IMPORT(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
640 | for alias in node.names: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
641 | name = alias.asname or alias.name |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
642 | importation = Importation(name, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
643 | self.addBinding(node.lineno, importation) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
644 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
645 | def IMPORTFROM(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
646 | if node.module == '__future__': |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
647 | if not self.futuresAllowed: |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
801
diff
changeset
|
648 | self.report(messages.LateFutureImport, node.lineno, |
88
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
649 | [n.name for n in node.names]) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
650 | else: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
651 | self.futuresAllowed = False |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
652 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
653 | for alias in node.names: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
654 | if alias.name == '*': |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
655 | self.scope.importStarred = True |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
656 | self.report(messages.ImportStarUsed, node.lineno, node.module) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
657 | continue |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
658 | name = alias.asname or alias.name |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
659 | importation = Importation(name, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
660 | if node.module == '__future__': |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
661 | importation.used = (self.scope, node.lineno) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
662 | self.addBinding(node.lineno, importation) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
663 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
664 | def EXCEPTHANDLER(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
665 | node.type and self.handleNode(node.type, node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
666 | if node.name: |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
667 | node.id = node.name |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
668 | self.handleAssignName(node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
669 | self.handleBody(node) |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
670 | |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
671 | def STARRED(self, node): |
3701923bccf2
Added my own Python3 port of pyflakes and integrated py3flakes into syntax checker dialog and editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
672 | self.handleNode(node.value, node) |