--- a/src/eric7/PluginManager/PluginManager.py Sun Dec 03 16:44:52 2023 +0100 +++ b/src/eric7/PluginManager/PluginManager.py Sun Dec 03 19:46:34 2023 +0100 @@ -10,6 +10,7 @@ import contextlib import datetime import importlib +import itertools import os import pathlib import sys @@ -176,8 +177,9 @@ """ Public method to finalize the setup of the plugin manager. """ - for module in list(self.__onDemandInactiveModules.values()) + list( - self.__onDemandActiveModules.values() + for module in itertools.chain( + self.__onDemandInactiveModules.values(), + self.__onDemandActiveModules.values(), ): if hasattr(module, "moduleSetup"): module.moduleSetup() @@ -526,7 +528,7 @@ found = False if not package: package = "__None__" - for moduleName in list(sys.modules.keys())[:]: + for moduleName in list(sys.modules): if moduleName == pluginName or moduleName.split(".")[0] in packages: found = True del sys.modules[moduleName] @@ -538,7 +540,7 @@ Note: The plugins are not activated. """ - names = sorted(self.__onDemandInactiveModules.keys()) + names = sorted(self.__onDemandInactiveModules) for name in names: self.initOnDemandPlugin(name) @@ -602,7 +604,7 @@ and self.__develPluginName in inactiveList ): inactiveList.remove(self.__develPluginName) - names = sorted(self.__inactiveModules.keys()) + names = sorted(self.__inactiveModules) for name in names: if name not in inactiveList: self.activatePlugin(name) @@ -791,7 +793,7 @@ @return reference to the initialized plugin object and an error string @rtype tuple of (QObject, str) """ - for name, module in list(self.__onDemandInactiveModules.items()): + for name, module in self.__onDemandInactiveModules.items(): if ( getPluginHeaderEntry(module, "pluginType", "") == type_ and getPluginHeaderEntry(module, "pluginTypename", "") == typename @@ -799,7 +801,7 @@ return self.activatePlugin(name, onDemand=True) if maybeActive: - for name, module in list(self.__onDemandActiveModules.items()): + for name, module in self.__onDemandActiveModules.items(): if ( getPluginHeaderEntry(module, "pluginType", "") == type_ and getPluginHeaderEntry(module, "pluginTypename", "") == typename @@ -822,7 +824,7 @@ infos = [] # 1. active, non-on-demand modules - for name in list(self.__activeModules.keys()): + for name in self.__activeModules: info = self.__getShortInfo(self.__activeModules[name]) info.update( { @@ -834,7 +836,7 @@ infos.append(info) # 2. inactive, non-on-demand modules - for name in list(self.__inactiveModules.keys()): + for name in self.__inactiveModules: info = self.__getShortInfo(self.__inactiveModules[name]) info.update( { @@ -846,7 +848,7 @@ infos.append(info) # 3. active, on-demand modules - for name in list(self.__onDemandActiveModules.keys()): + for name in self.__onDemandActiveModules: info = self.__getShortInfo(self.__onDemandActiveModules[name]) info.update( { @@ -858,7 +860,7 @@ infos.append(info) # 4. inactive, non-on-demand modules - for name in list(self.__onDemandInactiveModules.keys()): + for name in self.__onDemandInactiveModules: info = self.__getShortInfo(self.__onDemandInactiveModules[name]) info.update( { @@ -870,7 +872,7 @@ infos.append(info) # 5. failed modules - for name in list(self.__failedModules.keys()): + for name in self.__failedModules: info = self.__getShortInfo(self.__failedModules[name]) info.update( { @@ -956,7 +958,7 @@ Public method called to perform actions upon shutdown of the IDE. """ names = [] - for name in list(self.__inactiveModules.keys()): + for name in self.__inactiveModules: names.append(name) Preferences.getSettings().setValue(self.__inactivePluginsKey, names) @@ -974,8 +976,9 @@ """ pluginDict = {} - for module in list(self.__onDemandActiveModules.values()) + list( - self.__onDemandInactiveModules.values() + for module in itertools.chain( + self.__onDemandActiveModules.values(), + self.__onDemandInactiveModules.values(), ): if ( getPluginHeaderEntry(module, "pluginType", "") == type_ @@ -1000,8 +1003,9 @@ @return preview pixmap @rtype QPixmap """ - for module in list(self.__onDemandActiveModules.values()) + list( - self.__onDemandInactiveModules.values() + for module in itertools.chain( + self.__onDemandActiveModules.values(), + self.__onDemandInactiveModules.values(), ): if ( getPluginHeaderEntry(module, "pluginType", "") == type_ @@ -1025,8 +1029,9 @@ """ apis = [] - for module in list(self.__activeModules.values()) + list( - self.__onDemandActiveModules.values() + for module in itertools.chain( + self.__activeModules.values(), + self.__onDemandActiveModules.values(), ): if hasattr(module, "apiFiles"): apis.extend(module.apiFiles(language)) @@ -1043,8 +1048,9 @@ @rtype dict (key: str, value: list of str) """ helpFiles = {} - for module in list(self.__activeModules.values()) + list( - self.__onDemandActiveModules.values() + for module in itertools.chain( + self.__activeModules.values(), + self.__onDemandActiveModules.values(), ): if hasattr(module, "helpFiles"): helpFiles.update(module.helpFiles()) @@ -1088,15 +1094,11 @@ """ infos = [] - for module in list(self.__activeModules.values()) + list( - self.__inactiveModules.values() - ): - if hasattr(module, "exeDisplayDataList"): - infos.extend(module.exeDisplayDataList()) - elif hasattr(module, "exeDisplayData"): - infos.append(module.exeDisplayData()) - for module in list(self.__onDemandActiveModules.values()) + list( - self.__onDemandInactiveModules.values() + for module in itertools.chain( + self.__activeModules.values(), + self.__inactiveModules.values(), + self.__onDemandActiveModules.values(), + self.__onDemandInactiveModules.values(), ): if hasattr(module, "exeDisplayDataList"): infos.extend(module.exeDisplayDataList()) @@ -1139,10 +1141,10 @@ @rtype dict """ configData = {} - for module in ( - list(self.__activeModules.values()) - + list(self.__onDemandActiveModules.values()) - + list(self.__onDemandInactiveModules.values()) + for module in itertools.chain( + self.__activeModules.values(), + self.__onDemandActiveModules.values(), + self.__onDemandInactiveModules.values(), ): if hasattr(module, "getConfigData"): configData.update(module.getConfigData()) @@ -1201,14 +1203,15 @@ """ vcsDict = {} - for module in list(self.__onDemandActiveModules.values()) + list( - self.__onDemandInactiveModules.values() + for module in itertools.chain( + self.__onDemandActiveModules.values(), + self.__onDemandInactiveModules.values(), ): if getPluginHeaderEntry( module, "pluginType", "" ) == "version_control" and hasattr(module, "getVcsSystemIndicator"): res = module.getVcsSystemIndicator() - for indicator, vcsData in list(res.items()): + for indicator, vcsData in res.items(): if indicator in vcsDict: vcsDict[indicator].append(vcsData) else: @@ -1485,11 +1488,11 @@ @param type_ type of the plugin to clear private data for @type str """ - for module in ( - list(self.__onDemandActiveModules.values()) - + list(self.__onDemandInactiveModules.values()) - + list(self.__activeModules.values()) - + list(self.__inactiveModules.values()) + for module in itertools.chain( + self.__onDemandActiveModules.values(), + self.__onDemandInactiveModules.values(), + self.__activeModules.values(), + self.__inactiveModules.values(), ): if getPluginHeaderEntry(module, "pluginType", "") == type_ and hasattr( module, "clearPrivateData"