Sun, 26 Jun 2022 17:21:11 +0200
Changed default max. line length of code documentation style checker and code style fixer to 88 characters because this gives better looking code (see 'Black' tool).
8801
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
8fbb21be8579
Continued 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:
8802
diff
changeset
|
3 | # Copyright (c) 2021 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
8801
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a node visitor for checking local import statements. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import ast |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | # |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | # The visitor is adapted from flake8-local-import v1.0.6 |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | # |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | class LocalImportVisitor(ast.NodeVisitor): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | Class implementing a node visitor for checking local import statements. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | def __init__(self, args, checker): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | Constructor |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | @param args dictionary containing the checker arguments |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | @type dict |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | @param checker reference to the checker |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | @type ImportsChecker |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | """ |
8802
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8801
diff
changeset
|
30 | self.__appImportNames = args.get("ApplicationPackageNames", []) |
8801
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | self.__checker = checker |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | self.violations = [] |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | def visit(self, node): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | Public method to traverse the tree of an AST node. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @param node AST node to parse |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @type ast.AST |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | previous = None |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | isLocal = ( |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | isinstance(node, ast.FunctionDef) or |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | getattr(node, 'is_local', False) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | ) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | for child in ast.iter_child_nodes(node): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | child.parent = node |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | child.previous = previous |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | child.is_local = isLocal |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | previous = child |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | super().visit(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | def visit_FunctionDef(self, node): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | Public method to handle a function definition. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | @param node reference to the node to be processed |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | @type ast.FunctionDef |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | children = list(ast.iter_child_nodes(node)) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | if len(children) > 1: |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | firstStatement = children[1] |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | if isinstance(firstStatement, ast.Expr): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | value = getattr(firstStatement, 'value', None) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | if isinstance(value, ast.Constant): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | firstStatement.is_doc_str = True |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.generic_visit(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | def visit_Import(self, node): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | Public method to handle an import statement. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | @param node reference to the node to be processed |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | @type ast.Import |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | if not getattr(node, 'is_local', False): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.generic_visit(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | return |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | for name in node.names: |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | self.__assertExternalModule(node, name.name or '') |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__visitImportNode(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | def visit_ImportFrom(self, node): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | Public method to handle an import from statement. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | @param node reference to the node to be processed |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | @type ast.ImportFrom |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | if not getattr(node, 'is_local', False): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.generic_visit(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | return |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | self.__assertExternalModule(node, node.module or '') |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | self.__visitImportNode(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | def __visitImportNode(self, node): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | Private method to handle an import or import from statement. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | @param node reference to the node to be processed |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | @type ast.Import or ast.ImportFrom |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | parent = getattr(node, 'parent', None) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | if isinstance(parent, ast.Module): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | self.generic_visit(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | return |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | previous = getattr(node, 'previous', None) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | isAllowedPrevious = ( |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | (isinstance(previous, ast.Expr) and |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | getattr(previous, 'is_doc_str', False)) or |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | isinstance(previous, (ast.Import, ast.ImportFrom, ast.arguments)) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | ) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | if not isinstance(parent, ast.FunctionDef) or not isAllowedPrevious: |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | self.violations.append((node, "I101")) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self.generic_visit(node) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | def __assertExternalModule(self, node, module): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | Private method to assert the given node. |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | @param node reference to the node to be processed |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | @type ast.stmt |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | @param module name of the module |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | @type str |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | """ |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | parent = getattr(node, 'parent', None) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | if isinstance(parent, ast.Module): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | return |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | modulePrefix = module + '.' |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | if ( |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | getattr(node, 'level', 0) != 0 or |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | any(modulePrefix.startswith(appModule + '.') |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | for appModule in self.__appImportNames) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | ): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | return |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | if module.split('.')[0] not in self.__checker.getStandardModules(): |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | self.violations.append((node, "I102")) |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | else: |
8fbb21be8579
Continued implementing a checker for import statements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | self.violations.append((node, "I103")) |