eric6/Graphics/ApplicationDiagramBuilder.py

branch
maintenance
changeset 8273
698ae46f40a4
parent 8043
0acf98cd089a
parent 8270
6ba3564b7161
child 8400
b3eefd7e58d1
diff -r fb0ef164f536 -r 698ae46f40a4 eric6/Graphics/ApplicationDiagramBuilder.py
--- a/eric6/Graphics/ApplicationDiagramBuilder.py	Fri Apr 02 11:59:41 2021 +0200
+++ b/eric6/Graphics/ApplicationDiagramBuilder.py	Sat May 01 14:27:20 2021 +0200
@@ -35,7 +35,7 @@
         @param noModules flag indicating, that no module names should be
             shown (boolean)
         """
-        super(ApplicationDiagramBuilder, self).__init__(dialog, view, project)
+        super().__init__(dialog, view, project)
         self.setObjectName("ApplicationDiagram")
         
         self.noModules = noModules
@@ -68,14 +68,12 @@
             None, 0, tot, self.tr("%v/%m Modules"), self.parent())
         progress.setWindowTitle(self.tr("Application Diagram"))
         try:
-            prog = 0
             progress.show()
             QApplication.processEvents()
             
-            for module in modules:
+            for prog, module in enumerate(modules):
                 progress.setValue(prog)
                 QApplication.processEvents()
-                prog += 1
                 if module.endswith("__init__.py"):
                     continue
                 try:
@@ -107,46 +105,44 @@
         sceneRect = self.umlView.sceneRect()
         
         modules = self.__buildModulesDict()
-        sortedkeys = sorted(modules.keys())
         
         # step 1: build a dictionary of packages
-        for module in sortedkeys:
-            li = module.split('.')
-            package = '.'.join(li[:-1])
-            if package in packages:
-                packages[package][0].append(li[-1])
+        for module in sorted(modules.keys()):
+            packageName, moduleName = module.rsplit(".", 1)
+            if packageName in packages:
+                packages[packageName][0].append(moduleName)
             else:
-                packages[package] = ([li[-1]], [])
+                packages[packageName] = ([moduleName], [])
                 
         # step 2: assign modules to dictionaries and update import relationship
-        for module in sortedkeys:
-            li = module.split('.')
-            package = '.'.join(li[:-1])
+        for module in sorted(modules.keys()):
+            package = module.rsplit(".", 1)[0]
             impLst = []
-            for i in modules[module].imports:
-                if i in modules:
-                    impLst.append(i)
+            for moduleImport in modules[module].imports:
+                if moduleImport in modules:
+                    impLst.append(moduleImport)
                 else:
-                    if i.find('.') == -1:
-                        n = "{0}.{1}".format(modules[module].package, i)
+                    if moduleImport.find('.') == -1:
+                        n = "{0}.{1}".format(modules[module].package,
+                                             moduleImport)
                         if n in modules:
                             impLst.append(n)
                         else:
-                            n = "{0}.{1}".format(project, i)
+                            n = "{0}.{1}".format(project, moduleImport)
                             if n in modules:
                                 impLst.append(n)
                             elif n in packages:
                                 n = "{0}.<<Dummy>>".format(n)
                                 impLst.append(n)
                     else:
-                        n = "{0}.{1}".format(project, i)
+                        n = "{0}.{1}".format(project, moduleImport)
                         if n in modules:
                             impLst.append(n)
-            for i in list(modules[module].from_imports.keys()):
-                if i.startswith('.'):
-                    dots = len(i) - len(i.lstrip('.'))
+            for moduleImport in list(modules[module].from_imports.keys()):
+                if moduleImport.startswith('.'):
+                    dots = len(moduleImport) - len(moduleImport.lstrip('.'))
                     if dots == 1:
-                        i = i[1:]
+                        moduleImport = moduleImport[1:]
                     elif dots > 1:
                         packagePath = os.path.dirname(modules[module].file)
                         hasInit = True
@@ -161,38 +157,38 @@
                         )
                         packageList = shortPackage.split('.')[1:]
                         packageListLen = len(packageList)
-                        i = '.'.join(
+                        moduleImport = '.'.join(
                             packageList[:packageListLen - dots + 1] +
-                            [i[dots:]])
+                            [moduleImport[dots:]])
                 
-                if i in modules:
-                    impLst.append(i)
+                if moduleImport in modules:
+                    impLst.append(moduleImport)
                 else:
-                    if i.find('.') == -1:
-                        n = "{0}.{1}".format(modules[module].package, i)
+                    if moduleImport.find('.') == -1:
+                        n = "{0}.{1}".format(modules[module].package,
+                                             moduleImport)
                         if n in modules:
                             impLst.append(n)
                         else:
-                            n = "{0}.{1}".format(project, i)
+                            n = "{0}.{1}".format(project, moduleImport)
                             if n in modules:
                                 impLst.append(n)
                             elif n in packages:
                                 n = "{0}.<<Dummy>>".format(n)
                                 impLst.append(n)
                     else:
-                        n = "{0}.{1}".format(project, i)
+                        n = "{0}.{1}".format(project, moduleImport)
                         if n in modules:
                             impLst.append(n)
-            for imp in impLst:
-                impPackage = '.'.join(imp.split('.')[:-1])
+            for moduleImport in impLst:
+                impPackage = moduleImport.rsplit(".", 1)[0]
                 if (
                     impPackage not in packages[package][1] and
-                    not impPackage == package
+                    impPackage != package
                 ):
                     packages[package][1].append(impPackage)
                     
-        sortedkeys = sorted(packages.keys())
-        for package in sortedkeys:
+        for package in sorted(packages.keys()):
             if package:
                 relPackage = package.replace(project, '')
                 if relPackage and relPackage[0] == '.':
@@ -253,12 +249,12 @@
         
         @param shapes list of shapes
         """
-        from .AssociationItem import AssociationItem, Imports
+        from .AssociationItem import AssociationItem, AssociationType
         for package in shapes:
             for rel in shapes[package][1]:
                 assoc = AssociationItem(
                     shapes[package][0], shapes[rel][0],
-                    Imports,
+                    AssociationType.IMPORTS,
                     colors=self.umlView.getDrawingColors())
                 self.scene.addItem(assoc)
     

eric ide

mercurial