eric7/Plugins/CheckerPlugins/CodeStyleChecker/Imports/ImportsChecker.py

Wed, 01 Dec 2021 20:09:57 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 01 Dec 2021 20:09:57 +0100
branch
eric7
changeset 8801
8fbb21be8579
parent 8789
b165effc3c62
child 8802
129a973fc33e
permissions
-rw-r--r--

Continued implementing a checker for import statements.

8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a checker for import statements.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import copy
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
11 import sys
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 class ImportsChecker:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 Class implementing a checker for import statements.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 Codes = [
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
19 ## Local imports
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
20 "I101", "I102", "I103",
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 ]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 def __init__(self, source, filename, tree, select, ignore, expected,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 repeat, args):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param source source code to be checked
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param filename name of the source file
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param tree AST tree of the source code
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type ast.Module
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param select list of selected codes
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param ignore list of codes to be ignored
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param expected list of expected codes
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param repeat flag indicating to report each occurrence of a code
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type bool
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
42 @param args dictionary of arguments for the various checks
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type dict
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__select = tuple(select)
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
46 self.__ignore = ("",) if select else tuple(ignore)
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__expected = expected[:]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__repeat = repeat
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__filename = filename
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__source = source[:]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__tree = copy.deepcopy(tree)
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__args = args
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 # statistics counters
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.counters = {}
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 # collection of detected errors
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.errors = []
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 checkersWithCodes = [
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
61 (self.__checkLocalImports, ("I101", "I102", "I103")),
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 ]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__checkers = []
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 for checker, codes in checkersWithCodes:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 if any(not (code and self.__ignoreCode(code))
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 for code in codes):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__checkers.append(checker)
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 def __ignoreCode(self, code):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 Private method to check if the message code should be ignored.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @param code message code to check for
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 @type str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 @return flag indicating to ignore the given code
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @rtype bool
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 return (code.startswith(self.__ignore) and
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 not code.startswith(self.__select))
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def __error(self, lineNumber, offset, code, *args):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Private method to record an issue.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @param lineNumber line number of the issue
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 @type int
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @param offset position within line of the issue
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @type int
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @param code message code
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 @type str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 @param args arguments for the message
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 @type list
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 if self.__ignoreCode(code):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 return
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 if code in self.counters:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.counters[code] += 1
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 else:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.counters[code] = 1
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 # Don't care about expected codes
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 if code in self.__expected:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 return
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 if code and (self.counters[code] == 1 or self.__repeat):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 # record the issue with one based line number
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.errors.append(
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 {
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 "file": self.__filename,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 "line": lineNumber + 1,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 "offset": offset,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 "code": code,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 "args": args,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 }
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 )
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 def run(self):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 Public method to check the given source against miscellaneous
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 conditions.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 if not self.__filename:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 # don't do anything, if essential data is missing
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 return
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 if not self.__checkers:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 # don't do anything, if no codes were selected
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 return
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 for check in self.__checkers:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 check()
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
134
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
135 def getStandardModules(self):
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
136 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
137 Public method to get a list of modules of the standard library.
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
138
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
139 @return set of builtin modules
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
140 @rtype set of str
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
141 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
142 try:
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
143 return sys.stdlib_module_names
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
144 except AttributeError:
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
145 return {
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
146 "__future__", "__main__", "_dummy_thread", "_thread", "abc",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
147 "aifc", "argparse", "array", "ast", "asynchat", "asyncio",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
148 "asyncore", "atexit", "audioop", "base64", "bdb", "binascii",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
149 "binhex", "bisect", "builtins", "bz2", "calendar", "cgi",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
150 "cgitb", "chunk", "cmath", "cmd", "code", "codecs", "codeop",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
151 "collections", "colorsys", "compileall", "concurrent",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
152 "configparser", "contextlib", "contextvars", "copy", "copyreg",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
153 "cProfile", "crypt", "csv", "ctypes", "curses", "dataclasses",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
154 "datetime", "dbm", "decimal", "difflib", "dis", "distutils",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
155 "doctest", "dummy_threading", "email", "encodings",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
156 "ensurepip", "enum", "errno", "faulthandler", "fcntl",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
157 "filecmp", "fileinput", "fnmatch", "formatter", "fractions",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
158 "ftplib", "functools", "gc", "getopt", "getpass", "gettext",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
159 "glob", "grp", "gzip", "hashlib", "heapq", "hmac", "html",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
160 "http", "imaplib", "imghdr", "imp", "importlib", "inspect",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
161 "io", "ipaddress", "itertools", "json", "keyword", "lib2to3",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
162 "linecache", "locale", "logging", "lzma", "mailbox", "mailcap",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
163 "marshal", "math", "mimetypes", "mmap", "modulefinder",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
164 "msilib", "msvcrt", "multiprocessing", "netrc", "nis",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
165 "nntplib", "numbers", "operator", "optparse", "os",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
166 "ossaudiodev", "parser", "pathlib", "pdb", "pickle",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
167 "pickletools", "pipes", "pkgutil", "platform", "plistlib",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
168 "poplib", "posix", "pprint", "profile", "pstats", "pty", "pwd",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
169 "py_compile", "pyclbr", "pydoc", "queue", "quopri", "random",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
170 "re", "readline", "reprlib", "resource", "rlcompleter",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
171 "runpy", "sched", "secrets", "select", "selectors", "shelve",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
172 "shlex", "shutil", "signal", "site", "smtpd", "smtplib",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
173 "sndhdr", "socket", "socketserver", "spwd", "sqlite3", "ssl",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
174 "stat", "statistics", "string", "stringprep", "struct",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
175 "subprocess", "sunau", "symbol", "symtable", "sys",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
176 "sysconfig", "syslog", "tabnanny", "tarfile", "telnetlib",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
177 "tempfile", "termios", "test", "textwrap", "threading", "time",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
178 "timeit", "tkinter", "token", "tokenize", "trace", "traceback",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
179 "tracemalloc", "tty", "turtle", "turtledemo", "types",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
180 "typing", "unicodedata", "unittest", "urllib", "uu", "uuid",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
181 "venv", "warnings", "wave", "weakref", "webbrowser", "winreg",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
182 "winsound", "wsgiref", "xdrlib", "xml", "xmlrpc", "zipapp",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
183 "zipfile", "zipimport", "zlib", "zoneinfo",
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
184 }
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
185
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
186 #######################################################################
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
187 ## Local imports
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
188 ##
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
189 ## adapted from: flake8-local-import v1.0.6
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
190 #######################################################################
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
191
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
192 def __checkLocalImports(self):
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
193 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
194 Private method to check local imports.
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
195 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
196 from .LocalImportVisitor import LocalImportVisitor
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
197
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
198 visitor = LocalImportVisitor(self.__args, self)
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
199 visitor.visit(copy.deepcopy(self.__tree))
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
200 for violation in visitor.violations:
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
201 node = violation[0]
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
202 reason = violation[1]
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
203 self.__error(node.lineno - 1, node.col_offset, reason)

eric ide

mercurial