[gnome-continuous-yocto/gnomeostree-3.28-rocko: 4925/8267] wic: pluginbase: use global dictionary
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 4925/8267] wic: pluginbase: use global dictionary
- Date: Sun, 17 Dec 2017 02:43:12 +0000 (UTC)
commit c4b96817e5869e5381ec2e6a62bfdaf066559525
Author: Ed Bartosh <ed bartosh linux intel com>
Date: Thu Feb 16 12:53:30 2017 +0200
wic: pluginbase: use global dictionary
Made PluginMeta to populate global PLUGINS dictionary that
is accessed by PluginMgr. This should make the code more
understandable as PluginMgr don't need to get data directly
from PlugnMeta attribute.
(From OE-Core rev: 68df14eb43103537279824c5f627cc5914b5282c)
Signed-off-by: Ed Bartosh <ed bartosh linux intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
scripts/lib/wic/pluginbase.py | 32 +++++++++++++++-----------------
1 files changed, 15 insertions(+), 17 deletions(-)
---
diff --git a/scripts/lib/wic/pluginbase.py b/scripts/lib/wic/pluginbase.py
index 93f0b66..fb3d179 100644
--- a/scripts/lib/wic/pluginbase.py
+++ b/scripts/lib/wic/pluginbase.py
@@ -32,9 +32,10 @@ SCRIPTS_PLUGIN_DIR = "scripts/lib/wic/plugins"
logger = logging.getLogger('wic')
+PLUGINS = defaultdict(dict)
+
class PluginMgr:
_plugin_dirs = []
- _plugins = {}
@classmethod
def get_plugins(cls, ptype):
@@ -42,9 +43,6 @@ class PluginMgr:
if ptype not in PLUGIN_TYPES:
raise WicError('%s is not valid plugin type' % ptype)
- if ptype in cls._plugins:
- return cls._plugins[ptype]
-
# collect plugin directories
if not cls._plugin_dirs:
cls._plugin_dirs = [os.path.join(os.path.dirname(__file__), 'plugins')]
@@ -55,25 +53,25 @@ class PluginMgr:
if path not in cls._plugin_dirs and os.path.isdir(path):
cls._plugin_dirs.insert(0, path)
- # load plugins
- for pdir in cls._plugin_dirs:
- ppath = os.path.join(pdir, ptype)
- if os.path.isdir(ppath):
- for fname in os.listdir(ppath):
- if fname.endswith('.py'):
- mname = fname[:-3]
- mpath = os.path.join(ppath, fname)
- SourceFileLoader(mname, mpath).load_module()
+ if ptype not in PLUGINS:
+ # load all ptype plugins
+ for pdir in cls._plugin_dirs:
+ ppath = os.path.join(pdir, ptype)
+ if os.path.isdir(ppath):
+ for fname in os.listdir(ppath):
+ if fname.endswith('.py'):
+ mname = fname[:-3]
+ mpath = os.path.join(ppath, fname)
+ logger.debug("loading plugin module %s", mpath)
+ SourceFileLoader(mname, mpath).load_module()
- cls._plugins[ptype] = PluginMeta.plugins.get(ptype)
- return cls._plugins[ptype]
+ return PLUGINS.get(ptype)
class PluginMeta(type):
- plugins = defaultdict(dict)
def __new__(cls, name, bases, attrs):
class_type = type.__new__(cls, name, bases, attrs)
if 'name' in attrs:
- cls.plugins[class_type.wic_plugin_type][attrs['name']] = class_type
+ PLUGINS[class_type.wic_plugin_type][attrs['name']] = class_type
return class_type
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]