diff -r 31aaa11672d3 -r ab5678db972f src/eric7/Graphics/PackageDiagramBuilder.py --- a/src/eric7/Graphics/PackageDiagramBuilder.py Fri Dec 23 11:37:49 2022 +0100 +++ b/src/eric7/Graphics/PackageDiagramBuilder.py Sat Dec 24 17:31:46 2022 +0100 @@ -154,15 +154,14 @@ subpackagesDict = {} subpackagesList = [] - # TODO: replace os.listdir() with os.scandir() - for subpackage in os.listdir(self.package): - subpackagePath = os.path.join(self.package, subpackage) - if ( - os.path.isdir(subpackagePath) - and subpackage != "__pycache__" - and len(glob.glob(os.path.join(subpackagePath, "__init__.*"))) != 0 - ): - subpackagesList.append(subpackagePath) + with os.scandir(self.package) as dirEntriesIterator: + for subpackage in dirEntriesIterator: + if ( + subpackage.is_dir() + and subpackage.name != "__pycache__" + and len(glob.glob(os.path.join(subpackage.path, "__init__.*"))) != 0 + ): + subpackagesList.append(subpackage.path) tot = 0 for ext in supportedExt: @@ -178,6 +177,7 @@ ) progress.setWindowTitle(self.tr("Package Diagram")) try: + start = 0 progress.show() QApplication.processEvents() @@ -190,7 +190,7 @@ modules.extend( glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext)) ) - for prog, module in enumerate(modules): + for prog, module in enumerate(modules, start=start): progress.setValue(prog) if time.monotonic() - now > 0.01: QApplication.processEvents() @@ -206,6 +206,7 @@ if "." in name: name = name.rsplit(".", 1)[1] subpackagesDict[packageName].append(name) + start = prog subpackagesDict[packageName].sort() # move __init__ to the front if "__init__" in subpackagesDict[packageName]: