[gnome-continuous-yocto/gnomeostree-3.28-rocko: 4923/8267] wic: plugin: cache results in get_plugins
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 4923/8267] wic: plugin: cache results in get_plugins
- Date: Sun, 17 Dec 2017 02:43:02 +0000 (UTC)
commit 93b3eb37ff623f84b5b9c843353d3e2b406687ad
Author: Ed Bartosh <ed bartosh linux intel com>
Date: Wed Feb 15 20:42:30 2017 +0200
wic: plugin: cache results in get_plugins
Store results of PluginMgr.get_plugins to avoid
loading plugins more than once.
This should speed up finding plugins.
(From OE-Core rev: 95ba37b394d01a6ed81f32ffa03813a070d682dc)
Signed-off-by: Ed Bartosh <ed bartosh linux intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
scripts/lib/wic/plugin.py | 22 ++++++++++++----------
1 files changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/scripts/lib/wic/plugin.py b/scripts/lib/wic/plugin.py
index 36a120b..094a878 100644
--- a/scripts/lib/wic/plugin.py
+++ b/scripts/lib/wic/plugin.py
@@ -31,7 +31,7 @@ logger = logging.getLogger('wic')
class PluginMgr:
_plugin_dirs = []
- _loaded = []
+ _plugins = {}
@classmethod
def get_plugins(cls, ptype):
@@ -39,6 +39,9 @@ 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')]
@@ -52,13 +55,12 @@ class PluginMgr:
# load plugins
for pdir in cls._plugin_dirs:
ppath = os.path.join(pdir, ptype)
- if ppath not in cls._loaded:
- 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()
- cls._loaded.append(ppath)
+ 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()
- return pluginbase.get_plugins(ptype)
+ cls._plugins[ptype] = pluginbase.get_plugins(ptype)
+ return cls._plugins[ptype]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]