changeset 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 a1567766c83c
children c4b3a7fd2f87
files piecrust/plugins/base.py
diffstat 1 files changed, 21 insertions(+), 7 deletions(-) [+]
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)