Mercurial > piecrust2
diff piecrust/plugins/base.py @ 413:eacf0a3afd0c
internal: Register performance timers for plugin components.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 20 Jun 2015 19:16:38 -0700 |
parents | 10bb8e8600f5 |
children | e2e955a3bb25 |
line wrap: on
line diff
--- a/piecrust/plugins/base.py Sat Jun 20 19:15:57 2015 -0700 +++ b/piecrust/plugins/base.py Sat Jun 20 19:16:38 2015 -0700 @@ -50,17 +50,23 @@ def getFormatters(self): return self._getPluginComponents( - 'getFormatters', True, order_key=lambda f: f.priority) + 'getFormatters', + initialize=True, register_timer=True, + order_key=lambda f: f.priority) def getTemplateEngines(self): - return self._getPluginComponents('getTemplateEngines', True) + return self._getPluginComponents( + 'getTemplateEngines', + initialize=True, register_timer=True) def getDataProviders(self): return self._getPluginComponents('getDataProviders') def getProcessors(self): return self._getPluginComponents( - 'getProcessors', True, order_key=lambda p: p.priority) + 'getProcessors', + initialize=True, register_timer=True, + order_key=lambda p: p.priority) def getImporters(self): return self._getPluginComponents('getImporters') @@ -86,8 +92,9 @@ to_install = self.app.config.get('site/plugins') if to_install: - for p in to_install: - self._loadPlugin(p) + for name in to_install: + plugin = self._loadPlugin(name) + self._plugins.append(plugin) for plugin in self._plugins: plugin.initialize(self.app) @@ -113,9 +120,11 @@ (plugin_name, ex)) return - self._plugins.append(plugin) + return plugin - def _getPluginComponents(self, name, initialize=False, order_key=None): + def _getPluginComponents(self, name, *, + initialize=False, register_timer=False, + order_key=None): if name in self._componentCache: return self._componentCache[name] @@ -123,10 +132,15 @@ for plugin in self.plugins: plugin_components = getattr(plugin, name)() all_components += plugin_components + if initialize: for comp in plugin_components: comp.initialize(self.app) + if register_timer: + for comp in plugin_components: + self.app.env.registerTimer(comp.__class__.__name__) + if order_key is not None: all_components.sort(key=order_key)