diff src/core/sat_main.py @ 1503:f681788097ba

core (plugins): detect import_name conflicts
author Goffi <goffi@goffi.org>
date Thu, 27 Aug 2015 17:59:15 +0200
parents 704ca56f5ca9
children 7d7e57a84792
line wrap: on
line diff
--- a/src/core/sat_main.py	Thu Aug 27 17:59:11 2015 +0200
+++ b/src/core/sat_main.py	Thu Aug 27 17:59:15 2015 +0200
@@ -145,7 +145,7 @@
         import sat.plugins
         plugins_path = os.path.dirname(sat.plugins.__file__)
         plug_lst = [os.path.splitext(plugin)[0] for plugin in map(os.path.basename, glob(os.path.join(plugins_path, "plugin*.py")))]
-        __plugins_to_import = {}  # plugins we still have to import
+        plugins_to_import = {}  # plugins we still have to import
         for plug in plug_lst:
             plugin_path = 'sat.plugins.' + plug
             try:
@@ -155,10 +155,14 @@
                 continue
             mod = sys.modules[plugin_path]
             plugin_info = mod.PLUGIN_INFO
-            __plugins_to_import[plugin_info['import_name']] = (plugin_path, mod, plugin_info)
+            import_name = plugin_info['import_name']
+            if import_name in plugins_to_import:
+                log.error(_(u"Name conflict for import name [{import_name}], can't import plugin [{name}]").format(**plugin_info))
+                continue
+            plugins_to_import[import_name] = (plugin_path, mod, plugin_info)
         while True:
-            self._import_plugins_from_dict(__plugins_to_import)
-            if not __plugins_to_import:
+            self._import_plugins_from_dict(plugins_to_import)
+            if not plugins_to_import:
                 break
 
     def _import_plugins_from_dict(self, plugins_to_import, import_name=None, optional=False):