--- 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)