diff -r 8264ea1f42e5 -r 2114cc7275e8 src/eric7/Graphics/PackageDiagramBuilder.py --- a/src/eric7/Graphics/PackageDiagramBuilder.py Sat Feb 17 11:26:37 2024 +0100 +++ b/src/eric7/Graphics/PackageDiagramBuilder.py Sat Feb 17 19:46:33 2024 +0100 @@ -16,6 +16,7 @@ from PyQt6.QtWidgets import QApplication, QGraphicsTextItem from eric7 import Globals, Preferences +from eric7.EricWidgets.EricApplication import ericApp from eric7.EricWidgets.EricProgressDialog import EricProgressDialog from eric7.SystemUtilities import FileSystemUtilities @@ -45,7 +46,10 @@ super().__init__(dialog, view, project) self.setObjectName("PackageDiagram") - self.package = os.path.abspath(package) + if FileSystemUtilities.isRemoteFileName(package): + self.package = package + else: + self.package = os.path.abspath(package) self.noAttrs = noAttrs self.__relPackage = ( @@ -54,6 +58,10 @@ else "" ) + self.__remotefsInterface = ( + ericApp().getObject("EricServer").getServiceInterface("FileSystem") + ) + def initialize(self): """ Public method to initialize the object. @@ -97,9 +105,19 @@ moduleDict = {} modules = [] for ext in supportedExt: - modules.extend( - glob.glob(FileSystemUtilities.normjoinpath(self.package, ext)) - ) + if FileSystemUtilities.isRemoteFileName(self.package): + modules.extend( + [ + FileSystemUtilities.remoteFileName(f) + for f in self.__remotefsInterface.glob( + os.path.join(self.package, ext) + ) + ] + ) + else: + modules.extend( + glob.glob(FileSystemUtilities.normjoinpath(self.package, ext)) + ) tot = len(modules) progress = EricProgressDialog( self.tr("Parsing modules..."), @@ -154,14 +172,29 @@ subpackagesDict = {} subpackagesList = [] - with os.scandir(self.package) as dirEntriesIterator: - for subpackage in dirEntriesIterator: + if FileSystemUtilities.isRemoteFileName(self.package): + for subpackage in self.__remotefsInterface.listdir(self.package)[2]: if ( - subpackage.is_dir() - and subpackage.name != "__pycache__" - and len(glob.glob(os.path.join(subpackage.path, "__init__.*"))) != 0 + subpackage["is_dir"] + and subpackage["name"] != "__pycache__" + and len( + self.__remotefsInterface.glob( + os.path.join(subpackage["path"], "__init__.*") + ) + ) != 0 ): - subpackagesList.append(subpackage.path) + subpackagesList.append( + FileSystemUtilities.remoteFileName(subpackage["path"]) + ) + else: + 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: @@ -187,9 +220,19 @@ subpackagesDict[packageName] = [] modules = [] for ext in supportedExt: - modules.extend( - glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext)) - ) + if FileSystemUtilities.isRemoteFileName(subpackage): + modules.extend( + [ + FileSystemUtilities.remoteFileName(f) + for f in self.__remotefsInterface.glob( + os.path.join(subpackage, ext) + ) + ] + ) + else: + modules.extend( + glob.glob(FileSystemUtilities.normjoinpath(subpackage, ext)) + ) for prog, module in enumerate(modules, start=start): progress.setValue(prog) if time.monotonic() - now > 0.01: @@ -225,7 +268,11 @@ """ self.allClasses = {} - initlist = glob.glob(os.path.join(self.package, "__init__.*")) + globPattern = os.path.join(self.package, "__init__.*") + if FileSystemUtilities.isRemoteFileName(self.package): + initlist = self.__remotefsInterface.glob(globPattern) + else: + initlist = glob.glob(globPattern) if len(initlist) == 0: ct = QGraphicsTextItem(None) self.scene.addItem(ct)