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).
8802
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
8881
54e42bc2437a
Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8808
diff
changeset
|
3 | # Copyright (c) 2021 - 2022 Detlev Offenbach <detlev@die-offenbachs.de> |
8802
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a class representing an import or import from node. |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | # |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | # adapted from flake8-alphabetize v0.0.17 |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | # |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | import ast |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from functools import total_ordering |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | from .ImportsEnums import GroupEnum, NodeTypeEnum |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | class ImportNodeException(Exception): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | Class representing an exception for an invalid import node. |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | pass |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | @total_ordering |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | class ImportNode: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | Class representing an import or import from node. |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | def __init__(self, appNames, astNode, checker): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | Constructor |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | @param appNames list of application package names |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | @type list of str |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | @param astNode reference to the ast node |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | @type ast.AST |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @param checker reference to the checker object |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | @type ImportsChecker |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | @exception ImportNodeException raised to indicate an invalid node was |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | given to this class |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | """ |
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
|
45 | if not isinstance(astNode, (ast.Import, ast.ImportFrom)): |
8802
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | raise ImportNodeException( |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | "Node type {0} not recognized".format(type(astNode)) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | ) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | self.node = astNode |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.error = None |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | level = None |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | group = None |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | if isinstance(astNode, ast.Import): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.nodeType = NodeTypeEnum.IMPORT |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | names = astNode.names |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.moduleName = names[0].name |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | level = 0 |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | elif isinstance(astNode, ast.ImportFrom): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | module = astNode.module |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | self.moduleName = "" if module is None else module |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | self.nodeType = NodeTypeEnum.IMPORT_FROM |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | names = [n.name for n in astNode.names] |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | expectedNames = sorted(names) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | if names != expectedNames: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.error = (self.node, "I202", ", ".join(expectedNames)) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | level = astNode.level |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | if self.moduleName == "__future__": |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | group = GroupEnum.FUTURE |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | elif self.moduleName in checker.getStandardModules(): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | group = GroupEnum.STDLIB |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | elif level > 0: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | group = GroupEnum.APPLICATION |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | else: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | group = GroupEnum.THIRD_PARTY |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | for name in appNames: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | if ( |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | name == self.moduleName or |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.moduleName.startswith("{0}.".format(name)) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | ): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | group = GroupEnum.APPLICATION |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | break |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | if group == GroupEnum.STDLIB: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | self.sorter = group, self.nodeType, self.moduleName |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | else: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | m = self.moduleName |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | dotIndex = m.find(".") |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | topName = m if dotIndex == -1 else m[:dotIndex] |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | self.sorter = group, level, topName, self.nodeType, m |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | def __eq__(self, other): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | Special method implementing the equality operator. |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | @param other reference to the object to compare |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | @type ImportNode |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | @return flag indicating equality |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | @rtype bool |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | return self.sorter == other.sorter |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | def __lt__(self, other): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | Special method implementing the less than operator. |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | @param other reference to the object to compare |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | @type ImportNode |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | @return flag indicating a less than situation |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | @rtype bool |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | return self.sorter < other.sorter |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | def __str__(self): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | Special method to create a string representation of the instance. |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | @return string representation of the instance |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | @rtype str |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | @exception ImportNodeException raised to indicate an invalid node was |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | given to this class |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | """ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | if ( |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | self.nodeType not in (NodeTypeEnum.IMPORT, |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | NodeTypeEnum.IMPORT_FROM) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | ): |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | raise ImportNodeException( |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | "The node type {0} is not recognized.".format(self.nodeType) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | ) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | if self.nodeType == NodeTypeEnum.IMPORT: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | return "import {0}".format(self.moduleName) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | elif self.nodeType == NodeTypeEnum.IMPORT_FROM: |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | level = self.node.level |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | levelStr = "" if level == 0 else "." * level |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | names = [ |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | n.name + ("" if n.asname is None else |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | " as {0}".format(n.asname)) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | for n in self.node.names |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | ] |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | return "from {0}{1} import {2}".format( |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | levelStr, self.moduleName, ", ".join(names)) |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | |
129a973fc33e
Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | return None |