src/eric7/PluginManager/PluginManager.py

branch
eric7
changeset 10061
8bdad5699288
parent 9982
5b91f7baffd0
child 10069
435cc5875135
--- a/src/eric7/PluginManager/PluginManager.py	Wed May 24 10:31:09 2023 +0200
+++ b/src/eric7/PluginManager/PluginManager.py	Wed May 24 10:45:11 2023 +0200
@@ -47,6 +47,7 @@
     PluginModulesError,
     PluginPathError,
 )
+from .PluginUtilities import getPluginHeaderEntry, hasPluginHeaderEntry
 
 
 class PluginManager(QObject):
@@ -418,18 +419,18 @@
             module = importlib.util.module_from_spec(spec)
             sys.modules[module.__name__] = module
             spec.loader.exec_module(module)
-            if not hasattr(module, "autoactivate"):
+            if not hasPluginHeaderEntry(module, "autoactivate"):
                 module.error = self.tr(
                     "Module is missing the 'autoactivate' attribute."
                 )
                 self.__failedModules[name] = module
                 raise PluginLoadError(name)
-            if getattr(module, "autoactivate", False):
+            if getPluginHeaderEntry(module, "autoactivate", False):
                 self.__inactiveModules[name] = module
             else:
-                if not hasattr(module, "pluginType") or not hasattr(
-                    module, "pluginTypename"
-                ):
+                if not hasPluginHeaderEntry(
+                    module, "pluginType"
+                ) or not hasPluginHeaderEntry(module, "pluginTypename"):
                     module.error = self.tr(
                         "Module is missing the 'pluginType' "
                         "and/or 'pluginTypename' attributes."
@@ -546,8 +547,8 @@
 
             if not self.__canActivatePlugin(module):
                 raise PluginActivationError(module.eric7PluginModuleName)
-            version = getattr(module, "version", "0.0.0")
-            className = getattr(module, "className", "")
+            version = getPluginHeaderEntry(module, "version", "0.0.0")
+            className = getPluginHeaderEntry(module, "className", "")
             pluginClass = getattr(module, className)
             pluginObject = None
             if name not in self.__onDemandInactivePlugins:
@@ -619,8 +620,8 @@
 
             if not self.__canActivatePlugin(module):
                 raise PluginActivationError(module.eric7PluginModuleName)
-            version = getattr(module, "version", "0.0.0")
-            className = getattr(module, "className", "")
+            version = getPluginHeaderEntry(module, "version", "0.0.0")
+            className = getPluginHeaderEntry(module, "className", "")
             pluginClass = getattr(module, className)
             pluginObject = None
             if onDemand and name in self.__onDemandInactivePlugins:
@@ -677,11 +678,11 @@
             plug-in class format
         """
         try:
-            if not hasattr(module, "version"):
+            if not hasPluginHeaderEntry(module, "version"):
                 raise PluginModuleFormatError(module.eric7PluginModuleName, "version")
-            if not hasattr(module, "className"):
+            if not hasPluginHeaderEntry(module, "className"):
                 raise PluginModuleFormatError(module.eric7PluginModuleName, "className")
-            className = getattr(module, "className", "")
+            className = getPluginHeaderEntry(module, "className", "")
             if not className or not hasattr(module, className):
                 raise PluginModuleFormatError(module.eric7PluginModuleName, className)
             pluginClass = getattr(module, className)
@@ -753,7 +754,7 @@
         @return flag indicating, if the module satisfies all requirements
             for being deactivated (boolean)
         """
-        return getattr(module, "deactivateable", True)
+        return getPluginHeaderEntry(module, "deactivateable", True)
 
     def getPluginObject(self, type_, typename, maybeActive=False):
         """
@@ -772,16 +773,16 @@
         """
         for name, module in list(self.__onDemandInactiveModules.items()):
             if (
-                getattr(module, "pluginType", "") == type_
-                and getattr(module, "pluginTypename", "") == typename
+                getPluginHeaderEntry(module, "pluginType", "") == type_
+                and getPluginHeaderEntry(module, "pluginTypename", "") == typename
             ):
                 return self.activatePlugin(name, onDemand=True)
 
         if maybeActive:
             for name, module in list(self.__onDemandActiveModules.items()):
                 if (
-                    getattr(module, "pluginType", "") == type_
-                    and getattr(module, "pluginTypename", "") == typename
+                    getPluginHeaderEntry(module, "pluginType", "") == type_
+                    and getPluginHeaderEntry(module, "pluginTypename", "") == typename
                 ):
                     self.deactivatePlugin(name, onDemand=True)
                     return self.activatePlugin(name, onDemand=True)
@@ -872,10 +873,10 @@
             "error": bool)
         """
         return {
-            "plugin_name": getattr(module, "name", ""),
-            "version": getattr(module, "version", ""),
-            "short_desc": getattr(module, "shortDescription", ""),
-            "error": bool(getattr(module, "error", "")),
+            "plugin_name": getPluginHeaderEntry(module, "name", ""),
+            "version": getPluginHeaderEntry(module, "version", ""),
+            "short_desc": getPluginHeaderEntry(module, "shortDescription", ""),
+            "error": bool(getPluginHeaderEntry(module, "error", "")),
         }
 
     def getPluginDetails(self, name):
@@ -914,14 +915,16 @@
             return None
 
         details["moduleName"] = name
-        details["moduleFileName"] = getattr(module, "eric7PluginModuleFilename", "")
-        details["pluginName"] = getattr(module, "name", "")
-        details["version"] = getattr(module, "version", "")
-        details["author"] = getattr(module, "author", "")
-        details["description"] = getattr(module, "longDescription", "")
+        details["moduleFileName"] = getPluginHeaderEntry(
+            module, "eric7PluginModuleFilename", ""
+        )
+        details["pluginName"] = getPluginHeaderEntry(module, "name", "")
+        details["version"] = getPluginHeaderEntry(module, "version", "")
+        details["author"] = getPluginHeaderEntry(module, "author", "")
+        details["description"] = getPluginHeaderEntry(module, "longDescription", "")
         details["autoactivate"] = autoactivate
         details["active"] = active
-        details["error"] = getattr(module, "error", "")
+        details["error"] = getPluginHeaderEntry(module, "error", "")
 
         return details
 
@@ -951,16 +954,16 @@
             self.__onDemandInactiveModules.values()
         ):
             if (
-                getattr(module, "pluginType", "") == type_
-                and getattr(module, "error", "") == ""
+                getPluginHeaderEntry(module, "pluginType", "") == type_
+                and getPluginHeaderEntry(module, "error", "") == ""
             ):
-                plugin_name = getattr(module, "pluginTypename", "")
+                plugin_name = getPluginHeaderEntry(module, "pluginTypename", "")
                 if plugin_name:
                     if hasattr(module, "displayString"):
                         try:
                             disp = module.displayString()
                         except TypeError:
-                            disp = getattr(module, "displayString", "")
+                            disp = getPluginHeaderEntry(module, "displayString", "")
                         if disp != "":
                             pluginDict[plugin_name] = disp
                     else:
@@ -980,8 +983,8 @@
             self.__onDemandInactiveModules.values()
         ):
             if (
-                getattr(module, "pluginType", "") == type_
-                and getattr(module, "pluginTypename", "") == name
+                getPluginHeaderEntry(module, "pluginType", "") == type_
+                and getPluginHeaderEntry(module, "pluginTypename", "") == name
             ):
                 if hasattr(module, "previewPix"):
                     return module.previewPix()
@@ -1171,9 +1174,9 @@
         for module in list(self.__onDemandActiveModules.values()) + list(
             self.__onDemandInactiveModules.values()
         ):
-            if getattr(module, "pluginType", "") == "version_control" and hasattr(
-                module, "getVcsSystemIndicator"
-            ):
+            if getPluginHeaderEntry(
+                module, "pluginType", ""
+            ) == "version_control" and hasattr(module, "getVcsSystemIndicator"):
                 res = module.getVcsSystemIndicator()
                 for indicator, vcsData in list(res.items()):
                     if indicator in vcsDict:
@@ -1188,7 +1191,7 @@
         Public method to deactivated all activated VCS plugins.
         """
         for name, module in list(self.__onDemandActiveModules.items()):
-            if getattr(module, "pluginType", "") == "version_control":
+            if getPluginHeaderEntry(module, "pluginType", "") == "version_control":
                 self.deactivatePlugin(name, True)
 
     ########################################################################
@@ -1435,7 +1438,7 @@
             + list(self.__activeModules.values())
             + list(self.__inactiveModules.values())
         ):
-            if getattr(module, "pluginType", "") == type_ and hasattr(
+            if getPluginHeaderEntry(module, "pluginType", "") == type_ and hasattr(
                 module, "clearPrivateData"
             ):
                 module.clearPrivateData()

eric ide

mercurial