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

branch
eric7
changeset 9477
903ee653bf23
parent 9473
3f23dbf37dbe
child 9478
634062017057
diff -r 3238ffc4b3df -r 903ee653bf23 src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Imports/ImportNode.py
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Imports/ImportNode.py	Sat Nov 05 13:02:04 2022 +0100
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Imports/ImportNode.py	Sat Nov 05 13:03:31 2022 +0100
@@ -32,7 +32,7 @@
     Class representing an import or import from node.
     """
 
-    def __init__(self, appNames, astNode, checker):
+    def __init__(self, appNames, astNode, checker, sortIgnoringStyle, sortFromFirst):
         """
         Constructor
 
@@ -42,6 +42,10 @@
         @type ast.AST
         @param checker reference to the checker object
         @type ImportsChecker
+        @param sortIgnoringStyle flag indicating to sort ignoring the import style
+        @type bool
+        @param sortFromFirst flag indicating to sort from imports before straight ones
+        @type bool
         @exception ImportNodeError raised to indicate an invalid node was
             given to this class
         """
@@ -58,6 +62,7 @@
             names = astNode.names
 
             self.moduleName = names[0].name
+            self.asImport = bool(names[0].asname)
             level = 0
 
         elif isinstance(astNode, ast.ImportFrom):
@@ -71,6 +76,8 @@
                 self.error = (self.node, "I202", ", ".join(expectedNames))
             level = astNode.level
 
+            self.asImport = any(n.asname for n in astNode.names)
+
         if self.moduleName == "__future__":
             group = GroupEnum.FUTURE
         elif self.moduleName.split(".")[0] in checker.getStandardModules():
@@ -87,12 +94,22 @@
                     break
 
         if group == GroupEnum.STDLIB:
-            self.sorter = group, self.nodeType, self.moduleName
+            self.sorter = (
+                (group, -self.nodeType, self.moduleName)
+                if sortFromFirst
+                else (group, self.nodeType, self.moduleName)
+            )
         else:
             m = self.moduleName
             dotIndex = m.find(".")
             topName = m if dotIndex == -1 else m[:dotIndex]
-            self.sorter = group, level, topName, self.nodeType, m
+            
+            if sortIgnoringStyle:
+                self.sorter = group, level, topName, self.nodeType, m
+            elif sortFromFirst:
+                self.sorter = group, level, -self.nodeType, topName, m
+            else:
+                self.sorter = group, level, self.nodeType, topName, m
 
     def __eq__(self, other):
         """

eric ide

mercurial