src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/NameOrder/ImportNode.py

Tue, 23 May 2023 12:00:37 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 23 May 2023 12:00:37 +0200
branch
eric7
changeset 10053
9914b7b4b11c
parent 10046
35b27af462ef
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Code Style Checker
- Added a checker for unused global variables.

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
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9480
diff changeset
3 # Copyright (c) 2021 - 2023 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 #
10046
35b27af462ef Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
11 # adapted from flake8-alphabetize v0.0.21
8802
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
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9458
diff changeset
15
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from functools import total_ordering
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
10046
35b27af462ef Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
18 from eric7.SystemUtilities import SysUtilities
35b27af462ef Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
19
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from .ImportsEnums import GroupEnum, NodeTypeEnum
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
9272
06ed98a19b79 Changed some exception names to comply with PEP-8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
23 class ImportNodeError(Exception):
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 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
26 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 pass
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
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @total_ordering
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 class ImportNode:
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 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
35 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
36
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
37 def __init__(self, appNames, astNode, checker, sortIgnoringStyle, sortFromFirst):
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
129a973fc33e Continued implementing a checker for import statements (import order).
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
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @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
42 @type list of str
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @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
44 @type ast.AST
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @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
46 @type ImportsChecker
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
47 @param sortIgnoringStyle flag indicating to sort ignoring the import style
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
48 @type bool
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
49 @param sortFromFirst flag indicating to sort from imports before straight ones
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
50 @type bool
9272
06ed98a19b79 Changed some exception names to comply with PEP-8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
51 @exception ImportNodeError raised to indicate an invalid node was
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 given to this class
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
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
54 if not isinstance(astNode, (ast.Import, ast.ImportFrom)):
9278
36448ca469c2 Simplified some code iaw. recommendations of the extended style checker and reformatted the code with black.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9272
diff changeset
55 raise ImportNodeError("Node type {0} not recognized".format(type(astNode)))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.node = astNode
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.error = None
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 level = None
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 group = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 if isinstance(astNode, ast.Import):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.nodeType = NodeTypeEnum.IMPORT
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 names = astNode.names
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.moduleName = names[0].name
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
67 self.asImport = bool(names[0].asname)
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 level = 0
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 elif isinstance(astNode, ast.ImportFrom):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 module = astNode.module
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 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
73 self.nodeType = NodeTypeEnum.IMPORT_FROM
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 names = [n.name for n in astNode.names]
9479
b4dff37325de Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9478
diff changeset
76 expectedNames = checker.sorted(
b4dff37325de Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9478
diff changeset
77 names,
b4dff37325de Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9478
diff changeset
78 key=lambda k: checker.moduleKey(k, subImports=True),
b4dff37325de Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9478
diff changeset
79 )
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 if names != expectedNames:
10046
35b27af462ef Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
81 self.error = (self.node, "NO102", ", ".join(expectedNames))
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 level = astNode.level
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
83
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
84 self.asImport = any(n.asname for n in astNode.names)
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
85
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 if self.moduleName == "__future__":
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 group = GroupEnum.FUTURE
10046
35b27af462ef Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
88 elif self.moduleName.split(".")[0] in SysUtilities.getStandardModules():
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 group = GroupEnum.STDLIB
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 elif level > 0:
9480
107aca8932ac Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9479
diff changeset
91 group = GroupEnum.LOCALPATH
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 else:
9480
107aca8932ac Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9479
diff changeset
93 group = GroupEnum.THIRDPARTY
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 for name in appNames:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
95 if name == self.moduleName or self.moduleName.startswith(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96 "{0}.".format(name)
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 ):
9480
107aca8932ac Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9479
diff changeset
98 group = GroupEnum.FIRSTPARTY
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
100
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 if group == GroupEnum.STDLIB:
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
102 self.sorter = (
9479
b4dff37325de Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9478
diff changeset
103 (group, -self.nodeType, checker.moduleKey(self.moduleName))
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
104 if sortFromFirst
9479
b4dff37325de Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9478
diff changeset
105 else (group, self.nodeType, checker.moduleKey(self.moduleName))
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
106 )
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 else:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 m = self.moduleName
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 dotIndex = m.find(".")
9480
107aca8932ac Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9479
diff changeset
110 topName = "." * level + (m if dotIndex == -1 else m[:dotIndex])
107aca8932ac Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9479
diff changeset
111 level = -level
9478
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
112
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
113 if sortIgnoringStyle:
9478
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
114 self.sorter = (
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
115 group,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
116 level,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
117 checker.moduleKey(topName),
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
118 self.nodeType,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
119 m,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
120 )
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
121 elif sortFromFirst:
9478
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
122 self.sorter = (
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
123 group,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
124 level,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
125 -self.nodeType,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
126 checker.moduleKey(topName),
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
127 m,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
128 )
9477
903ee653bf23 Changed the imports style checker to be in sync with some isort options.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
129 else:
9478
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
130 self.sorter = (
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
131 group,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
132 level,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
133 self.nodeType,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
134 checker.moduleKey(topName),
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
135 m,
634062017057 Corrected the module sort order in the imports style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9477
diff changeset
136 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
137
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 def __eq__(self, other):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 Special method implementing the equality operator.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 @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
143 @type ImportNode
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @return flag indicating equality
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @rtype bool
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 return self.sorter == other.sorter
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def __lt__(self, other):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 Special method implementing the less than operator.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @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
154 @type ImportNode
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 @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
156 @rtype bool
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 return self.sorter < other.sorter
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 def __str__(self):
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 Special method to create a string representation of the instance.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 @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
165 @rtype str
9272
06ed98a19b79 Changed some exception names to comply with PEP-8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
166 @exception ImportNodeError raised to indicate an invalid node was
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 given to this class
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 if self.nodeType not in (NodeTypeEnum.IMPORT, NodeTypeEnum.IMPORT_FROM):
9272
06ed98a19b79 Changed some exception names to comply with PEP-8.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
170 raise ImportNodeError(
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 "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
172 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 if self.nodeType == NodeTypeEnum.IMPORT:
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 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
176 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
177 level = self.node.level
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 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
179 names = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180 n.name + ("" if n.asname is None else " as {0}".format(n.asname))
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 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
182 ]
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 return "from {0}{1} import {2}".format(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184 levelStr, self.moduleName, ", ".join(names)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
185 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
186
8802
129a973fc33e Continued implementing a checker for import statements (import order).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 return None

eric ide

mercurial