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

Wed, 13 Jul 2022 14:55:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Jul 2022 14:55:47 +0200
branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9274
86fab0c74430
permissions
-rw-r--r--

Reformatted the source code using the 'Black' utility.

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
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8811
diff changeset
3 # Copyright (c) 2021 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
8789
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
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
10 import ast
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import copy
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
12 import sys
8789
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
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 class ImportsChecker:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 Class implementing a checker for import statements.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
19
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 Codes = [
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
21 ## Local imports
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
22 "I101",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23 "I102",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
24 "I103",
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
25 ## Imports order
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
26 "I201",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27 "I202",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28 "I203",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29 "I204",
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
30 ## Various other import related
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
31 "I901",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32 "I902",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33 "I903",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34 "I904",
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 ]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37 def __init__(self, source, filename, tree, select, ignore, expected, repeat, args):
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param source source code to be checked
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @param filename name of the source file
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @type str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @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
46 @type ast.Module
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @param select list of selected codes
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 @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
50 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 @param expected list of expected codes
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 @type list of str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 @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
54 @type bool
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
55 @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
56 @type dict
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__select = tuple(select)
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
59 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
60 self.__expected = expected[:]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__repeat = repeat
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.__filename = filename
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.__source = source[:]
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__tree = copy.deepcopy(tree)
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__args = args
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
66
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 # statistics counters
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.counters = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 # collection of detected errors
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.errors = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 checkersWithCodes = [
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
74 (self.__checkLocalImports, ("I101", "I102", "I103")),
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
75 (self.__checkImportOrder, ("I201", "I202", "I203", "I204")),
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
76 (self.__tidyImports, ("I901", "I902", "I903", "I904")),
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.__checkers = []
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 for checker, codes in checkersWithCodes:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81 if any(not (code and self.__ignoreCode(code)) for code in codes):
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__checkers.append(checker)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 def __ignoreCode(self, code):
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 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
87
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @param code message code to check for
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @type str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @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
91 @rtype bool
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 return code.startswith(self.__ignore) and not code.startswith(self.__select)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 def __error(self, lineNumber, offset, code, *args):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Private method to record an issue.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 @param lineNumber line number of the issue
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 @type int
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 @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
102 @type int
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 @param code message code
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 @type str
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 @param args arguments for the message
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @type list
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 if self.__ignoreCode(code):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 if code in self.counters:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.counters[code] += 1
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 else:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.counters[code] = 1
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 # Don't care about expected codes
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if code in self.__expected:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 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
121 # 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
122 self.errors.append(
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 "file": self.__filename,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 "line": lineNumber + 1,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 "offset": offset,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 "code": code,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 "args": args,
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 }
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 def run(self):
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 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
135 conditions.
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 if not self.__filename:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 # 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
139 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
140
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 if not self.__checkers:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 # 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
143 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144
8789
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 for check in self.__checkers:
b165effc3c62 Started implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 check()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
147
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
148 def getStandardModules(self):
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
149 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
150 Public method to get a list of modules of the standard library.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
152 @return set of builtin modules
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
153 @rtype set of str
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
154 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
155 try:
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
156 return sys.stdlib_module_names
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
157 except AttributeError:
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
158 return {
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159 "__future__",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160 "__main__",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161 "_dummy_thread",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
162 "_thread",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163 "abc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 "aifc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165 "argparse",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
166 "array",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167 "ast",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168 "asynchat",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 "asyncio",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 "asyncore",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 "atexit",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172 "audioop",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173 "base64",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174 "bdb",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175 "binascii",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 "binhex",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 "bisect",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 "builtins",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 "bz2",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180 "calendar",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
181 "cgi",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
182 "cgitb",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183 "chunk",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184 "cmath",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
185 "cmd",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186 "code",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187 "codecs",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188 "codeop",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189 "collections",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
190 "colorsys",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191 "compileall",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192 "concurrent",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193 "configparser",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194 "contextlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
195 "contextvars",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196 "copy",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
197 "copyreg",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198 "cProfile",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
199 "crypt",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
200 "csv",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
201 "ctypes",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
202 "curses",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
203 "dataclasses",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204 "datetime",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
205 "dbm",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
206 "decimal",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
207 "difflib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
208 "dis",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209 "distutils",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
210 "doctest",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
211 "dummy_threading",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
212 "email",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
213 "encodings",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
214 "ensurepip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
215 "enum",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216 "errno",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217 "faulthandler",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
218 "fcntl",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219 "filecmp",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220 "fileinput",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221 "fnmatch",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
222 "formatter",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223 "fractions",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
224 "ftplib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225 "functools",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
226 "gc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
227 "getopt",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
228 "getpass",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
229 "gettext",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230 "glob",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231 "grp",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232 "gzip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233 "hashlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234 "heapq",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235 "hmac",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236 "html",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237 "http",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238 "imaplib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
239 "imghdr",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
240 "imp",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241 "importlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
242 "inspect",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243 "io",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244 "ipaddress",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
245 "itertools",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
246 "json",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
247 "keyword",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
248 "lib2to3",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249 "linecache",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
250 "locale",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251 "logging",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
252 "lzma",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
253 "mailbox",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254 "mailcap",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
255 "marshal",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
256 "math",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
257 "mimetypes",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258 "mmap",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259 "modulefinder",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260 "msilib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
261 "msvcrt",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
262 "multiprocessing",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
263 "netrc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
264 "nis",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
265 "nntplib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266 "numbers",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
267 "operator",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
268 "optparse",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
269 "os",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
270 "ossaudiodev",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
271 "parser",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
272 "pathlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273 "pdb",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
274 "pickle",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
275 "pickletools",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
276 "pipes",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
277 "pkgutil",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
278 "platform",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
279 "plistlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
280 "poplib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
281 "posix",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282 "pprint",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
283 "profile",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284 "pstats",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
285 "pty",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
286 "pwd",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287 "py_compile",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
288 "pyclbr",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289 "pydoc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
290 "queue",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
291 "quopri",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
292 "random",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
293 "re",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
294 "readline",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
295 "reprlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
296 "resource",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
297 "rlcompleter",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
298 "runpy",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
299 "sched",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
300 "secrets",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
301 "select",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
302 "selectors",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
303 "shelve",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
304 "shlex",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305 "shutil",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
306 "signal",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
307 "site",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
308 "smtpd",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309 "smtplib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310 "sndhdr",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 "socket",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312 "socketserver",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
313 "spwd",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
314 "sqlite3",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
315 "ssl",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
316 "stat",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317 "statistics",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
318 "string",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319 "stringprep",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
320 "struct",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321 "subprocess",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
322 "sunau",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
323 "symbol",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
324 "symtable",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
325 "sys",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326 "sysconfig",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327 "syslog",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
328 "tabnanny",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329 "tarfile",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
330 "telnetlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331 "tempfile",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332 "termios",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
333 "test",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
334 "textwrap",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335 "threading",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336 "time",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337 "timeit",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
338 "tkinter",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
339 "token",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
340 "tokenize",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341 "trace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342 "traceback",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 "tracemalloc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344 "tty",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
345 "turtle",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 "turtledemo",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347 "types",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 "typing",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 "unicodedata",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 "unittest",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 "urllib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 "uu",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353 "uuid",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354 "venv",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 "warnings",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 "wave",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
357 "weakref",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358 "webbrowser",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 "winreg",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360 "winsound",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 "wsgiref",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 "xdrlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 "xml",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364 "xmlrpc",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365 "zipapp",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 "zipfile",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 "zipimport",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 "zlib",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 "zoneinfo",
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
370 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
372 #######################################################################
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
373 ## Local imports
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
374 ##
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
375 ## 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
376 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
377
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
378 def __checkLocalImports(self):
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
379 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
380 Private method to check local imports.
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
381 """
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
382 from .LocalImportVisitor import LocalImportVisitor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383
8801
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
384 visitor = LocalImportVisitor(self.__args, self)
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
385 visitor.visit(copy.deepcopy(self.__tree))
8fbb21be8579 Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8789
diff changeset
386 for violation in visitor.violations:
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
387 if not self.__ignoreCode(violation[1]):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
388 node = violation[0]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
389 reason = violation[1]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
390 self.__error(node.lineno - 1, node.col_offset, reason)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
391
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
392 #######################################################################
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
393 ## Import order
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
394 ##
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
395 ## adapted from: flake8-alphabetize v0.0.17
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
396 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
397
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
398 def __checkImportOrder(self):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
399 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
400 Private method to check the order of import statements.
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
401 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
402 from .ImportNode import ImportNode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
403
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
404 errors = []
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
405 imports = []
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
406 importNodes, listNode = self.__findNodes(self.__tree)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
407
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
408 # check for an error in '__all__'
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
409 allError = self.__findErrorInAll(listNode)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
410 if allError is not None:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
411 errors.append(allError)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
412
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
413 for importNode in importNodes:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
414 if isinstance(importNode, ast.Import) and len(importNode.names) > 1:
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
415 # skip suck imports because its already handled by pycodestyle
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
416 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
417
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
418 imports.append(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
419 ImportNode(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
420 self.__args.get("ApplicationPackageNames", []), importNode, self
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
421 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
422 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
423
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
424 lenImports = len(imports)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
425 if lenImports > 0:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
426 p = imports[0]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
427 if p.error is not None:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
428 errors.append(p.error)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
429
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
430 if lenImports > 1:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
431 for n in imports[1:]:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
432 if n.error is not None:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
433 errors.append(n.error)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
435 if n == p:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
436 errors.append((n.node, "I203", str(p), str(n)))
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
437 elif n < p:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
438 errors.append((n.node, "I201", str(n), str(p)))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
439
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
440 p = n
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
441
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
442 for error in errors:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
443 if not self.__ignoreCode(error[1]):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
444 node = error[0]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
445 reason = error[1]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
446 args = error[2:]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
447 self.__error(node.lineno - 1, node.col_offset, reason, *args)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
448
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
449 def __findNodes(self, tree):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
450 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
451 Private method to find all import and import from nodes of the given
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
452 tree.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
453
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
454 @param tree reference to the ast node tree to be parsed
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
455 @type ast.AST
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
456 @return tuple containing a list of import nodes and the '__all__' node
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
457 @rtype tuple of (ast.Import | ast.ImportFrom, ast.List | ast.Tuple)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
458 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
459 importNodes = []
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
460 listNode = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
461
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
462 if isinstance(tree, ast.Module):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
463 body = tree.body
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
464
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
465 for n in body:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
466 if isinstance(n, (ast.Import, ast.ImportFrom)):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
467 importNodes.append(n)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
468
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
469 elif isinstance(n, ast.Assign):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
470 for t in n.targets:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
471 if isinstance(t, ast.Name) and t.id == "__all__":
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
472 value = n.value
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
473
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
474 if isinstance(value, (ast.List, ast.Tuple)):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
475 listNode = value
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
476
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
477 return importNodes, listNode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
478
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
479 def __findErrorInAll(self, node):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
480 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
481 Private method to check the '__all__' node for errors.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
482
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
483 @param node reference to the '__all__' node
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
484 @type ast.List or ast.Tuple
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
485 @return tuple containing a reference to the node and an error code
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
486 @rtype rtype tuple of (ast.List | ast.Tuple, str)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
487 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
488 if node is not None:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
489 actualList = []
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
490 for el in node.elts:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
491 if isinstance(el, ast.Constant):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
492 actualList.append(el.value)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
493 elif isinstance(el, ast.Str):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
494 actualList.append(el.s)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
495 else:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
496 # Can't handle anything that isn't a string literal
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
497 return None
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
498
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
499 expectedList = sorted(actualList)
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
500 if expectedList != actualList:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
501 return (node, "I204", ", ".join(expectedList))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
502
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8801
diff changeset
503 return None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
504
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
505 #######################################################################
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
506 ## Tidy imports
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
507 ##
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
508 ## adapted from: flake8-tidy-imports v4.5.0
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
509 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
510
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
511 def __tidyImports(self):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
512 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
513 Private method to check various other import related topics.
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
514 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
515 self.__bannedModules = self.__args.get("BannedModules", [])
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
516 self.__banRelativeImports = self.__args.get("BanRelativeImports", "")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
517
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
518 ruleMethods = []
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
519 if not self.__ignoreCode("I901"):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
520 ruleMethods.append(self.__checkUnnecessaryAlias)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
521 if not self.__ignoreCode("I902") and bool(self.__bannedModules):
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
522 ruleMethods.append(self.__checkBannedImport)
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
523 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
524 not self.__ignoreCode("I903") and self.__banRelativeImports == "parents"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
525 ) or (not self.__ignoreCode("I904") and self.__banRelativeImports == "true"):
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
526 ruleMethods.append(self.__checkBannedRelativeImports)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
527
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
528 for node in ast.walk(self.__tree):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
529 for method in ruleMethods:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
530 method(node)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
531
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
532 def __checkUnnecessaryAlias(self, node):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
533 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
534 Private method to check unnecessary import aliases.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
535
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
536 @param node reference to the node to be checked
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
537 @type ast.AST
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
538 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
539 if isinstance(node, ast.Import):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
540 for alias in node.names:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
541 if "." not in alias.name:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
542 fromName = None
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
543 importedName = alias.name
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
544 else:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
545 fromName, importedName = alias.name.rsplit(".", 1)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
546
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
547 if importedName == alias.asname:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
548 if fromName:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
549 rewritten = "from {0} import {1}".format(fromName, importedName)
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
550 else:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
551 rewritten = "import {0}".format(importedName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
552
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
553 self.__error(node.lineno - 1, node.col_offset, "I901", rewritten)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
554
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
555 elif isinstance(node, ast.ImportFrom):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
556 for alias in node.names:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
557 if alias.name == alias.asname:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
558 rewritten = "from {0} import {1}".format(node.module, alias.name)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
559
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
560 self.__error(node.lineno - 1, node.col_offset, "I901", rewritten)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
561
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
562 def __checkBannedImport(self, node):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
563 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
564 Private method to check import of banned modules.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
565
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
566 @param node reference to the node to be checked
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
567 @type ast.AST
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
568 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
569 if not bool(self.__bannedModules):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
570 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
571
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
572 if isinstance(node, ast.Import):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
573 moduleNames = [alias.name for alias in node.names]
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
574 elif isinstance(node, ast.ImportFrom):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
575 nodeModule = node.module or ""
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
576 moduleNames = [nodeModule]
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
577 for alias in node.names:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
578 moduleNames.append("{0}.{1}".format(nodeModule, alias.name))
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
579 else:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
580 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
581
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
582 # Sort from most to least specific paths.
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
583 moduleNames.sort(key=len, reverse=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
584
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
585 warned = set()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
586
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
587 for moduleName in moduleNames:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
588 if moduleName in self.__bannedModules:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
589 if any(mod.startswith(moduleName) for mod in warned):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
590 # Do not show an error for this line if we already showed
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
591 # a more specific error.
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
592 continue
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
593 else:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
594 warned.add(moduleName)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
595 self.__error(node.lineno - 1, node.col_offset, "I902", moduleName)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
596
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
597 def __checkBannedRelativeImports(self, node):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
598 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
599 Private method to check if relative imports are banned.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
600
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
601 @param node reference to the node to be checked
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
602 @type ast.AST
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
603 """
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
604 if not self.__banRelativeImports:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
605 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
606
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
607 elif self.__banRelativeImports == "parents":
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
608 minNodeLevel = 1
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
609 msgCode = "I903"
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
610 else:
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
611 minNodeLevel = 0
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
612 msgCode = "I904"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
613
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
614 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
615 self.__banRelativeImports
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
616 and isinstance(node, ast.ImportFrom)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
617 and node.level > minNodeLevel
8808
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
618 ):
033fa34447d0 Finished implementing a checker for import statements (unnecessary alias, banned relative and banned modules).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8802
diff changeset
619 self.__error(node.lineno - 1, node.col_offset, msgCode)

eric ide

mercurial