Mercurial > piecrust2
annotate piecrust/plugins/base.py @ 869:41b0c94f9833
refactor: Fix some last instance of using the old API.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Mon, 12 Jun 2017 22:22:42 -0700 |
| parents | 4850f8c21b6e |
| children | 371731b555ec |
| rev | line source |
|---|---|
|
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
1 import os.path |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
2 import sys |
|
303
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
3 import logging |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
4 import importlib |
|
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
5 import importlib.util |
|
303
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
6 |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
7 |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
8 logger = logging.getLogger(__name__) |
| 0 | 9 |
| 10 | |
| 11 class PieCrustPlugin(object): | |
| 12 def getFormatters(self): | |
| 13 return [] | |
| 14 | |
| 15 def getTemplateEngines(self): | |
| 16 return [] | |
| 17 | |
|
849
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
18 def getTemplateEngineExtensions(self, engine_name): |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
19 return [] |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
20 |
| 0 | 21 def getDataProviders(self): |
| 22 return [] | |
| 23 | |
| 24 def getProcessors(self): | |
| 25 return [] | |
| 26 | |
| 27 def getImporters(self): | |
| 28 return [] | |
| 29 | |
| 30 def getCommands(self): | |
| 31 return [] | |
| 32 | |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
33 def getCommandExtensions(self): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
34 return [] |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
35 |
| 0 | 36 def getBakerAssistants(self): |
| 37 return [] | |
| 38 | |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
39 def getSources(self): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
40 return [] |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
41 |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
42 def getPipelines(self): |
|
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
613
diff
changeset
|
43 return [] |
|
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
613
diff
changeset
|
44 |
|
613
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
45 def getPublishers(self): |
|
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
46 return [] |
|
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
47 |
| 0 | 48 def initialize(self, app): |
| 49 pass | |
| 50 | |
| 51 | |
| 52 class PluginLoader(object): | |
| 53 def __init__(self, app): | |
| 54 self.app = app | |
| 55 self._plugins = None | |
| 56 self._componentCache = {} | |
| 57 | |
| 58 @property | |
| 59 def plugins(self): | |
| 60 self._ensureLoaded() | |
| 61 return self._plugins | |
| 62 | |
| 63 def getFormatters(self): | |
|
312
10bb8e8600f5
plugins: Remove unused API endpoints.
Ludovic Chabant <ludovic@chabant.com>
parents:
306
diff
changeset
|
64 return self._getPluginComponents( |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
65 'getFormatters', |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
66 initialize=True, register_timer=True, |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
67 order_key=lambda f: f.priority) |
| 0 | 68 |
| 69 def getTemplateEngines(self): | |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
70 return self._getPluginComponents( |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
71 'getTemplateEngines', |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
72 initialize=True, register_timer=True, |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
73 register_timer_suffixes=['_segment', '_layout']) |
| 0 | 74 |
|
849
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
75 def getTemplateEngineExtensions(self, engine_name): |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
76 return self._getPluginComponents('getTemplateEngineExtensions', |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
77 engine_name) |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
78 |
| 0 | 79 def getDataProviders(self): |
| 80 return self._getPluginComponents('getDataProviders') | |
| 81 | |
| 82 def getProcessors(self): | |
|
312
10bb8e8600f5
plugins: Remove unused API endpoints.
Ludovic Chabant <ludovic@chabant.com>
parents:
306
diff
changeset
|
83 return self._getPluginComponents( |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
84 'getProcessors', |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
85 initialize=True, register_timer=True, |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
86 order_key=lambda p: p.priority) |
| 0 | 87 |
| 88 def getImporters(self): | |
| 89 return self._getPluginComponents('getImporters') | |
| 90 | |
| 91 def getCommands(self): | |
| 92 return self._getPluginComponents('getCommands') | |
| 93 | |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
94 def getCommandExtensions(self): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
95 return self._getPluginComponents('getCommandExtensions') |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
96 |
| 0 | 97 def getBakerAssistants(self): |
| 98 return self._getPluginComponents('getBakerAssistants') | |
| 99 | |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
100 def getSources(self): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
101 return self._getPluginComponents('getSources') |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
102 |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
103 def getPipelines(self): |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
104 return self._getPluginComponents('getPipelines') |
|
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
613
diff
changeset
|
105 |
|
613
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
106 def getPublishers(self): |
|
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
107 return self._getPluginComponents('getPublishers') |
|
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
108 |
| 0 | 109 def _ensureLoaded(self): |
| 110 if self._plugins is not None: | |
| 111 return | |
| 112 | |
|
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
0
diff
changeset
|
113 from piecrust.plugins.builtin import BuiltInPlugin |
| 0 | 114 self._plugins = [BuiltInPlugin()] |
| 115 | |
|
306
7122976bc751
plugins: Fix crash for sites that don't specify a `site/plugins` setting.
Ludovic Chabant <ludovic@chabant.com>
parents:
305
diff
changeset
|
116 to_install = self.app.config.get('site/plugins') |
|
7122976bc751
plugins: Fix crash for sites that don't specify a `site/plugins` setting.
Ludovic Chabant <ludovic@chabant.com>
parents:
305
diff
changeset
|
117 if to_install: |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
118 for name in to_install: |
|
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
119 plugin = self._loadPlugin(name) |
|
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
120 self._plugins.append(plugin) |
| 0 | 121 |
| 122 for plugin in self._plugins: | |
| 123 plugin.initialize(self.app) | |
| 124 | |
|
303
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
125 def _loadPlugin(self, plugin_name): |
|
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
126 mod_name = 'piecrust_%s' % plugin_name |
|
303
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
127 try: |
|
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
128 # Import from the current environment. |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
129 mod = importlib.import_module(mod_name) |
|
305
9ae23409d6e9
plugins: Change how plugins are loaded. Add a `plugins` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
303
diff
changeset
|
130 except ImportError as ex: |
|
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
131 mod = None |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
132 |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
133 if mod is None: |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
134 # Import as a loose Python file from the plugins dir. |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
135 pfile = os.path.join(self.app.plugins_dir, plugin_name + '.py') |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
136 if os.path.isfile(pfile): |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
137 spec = importlib.util.spec_from_file_location(plugin_name, |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
138 pfile) |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
139 mod = importlib.util.module_from_spec(spec) |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
140 spec.loader.exec_module(mod) |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
141 sys.modules[mod_name] = mod |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
142 |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
143 if mod is None: |
|
305
9ae23409d6e9
plugins: Change how plugins are loaded. Add a `plugins` command.
Ludovic Chabant <ludovic@chabant.com>
parents:
303
diff
changeset
|
144 logger.error("Failed to load plugin '%s'." % plugin_name) |
|
303
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
145 return |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
146 |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
147 plugin_class = getattr(mod, '__piecrust_plugin__', None) |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
148 if plugin_class is None: |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
149 logger.error("Plugin '%s' doesn't specify any " |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
150 "`__piecrust_plugin__` class." % plugin_name) |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
151 return |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
152 |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
153 try: |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
154 plugin = plugin_class() |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
155 except Exception as ex: |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
156 logger.error("Failed to create plugin '%s': %s" % |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
157 (plugin_name, ex)) |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
158 return |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
159 |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
160 return plugin |
| 0 | 161 |
|
849
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
162 def _getPluginComponents(self, name, *args, |
|
803
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
163 initialize=False, |
|
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
164 register_timer=False, |
|
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
165 register_timer_suffixes=None, |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
166 order_key=None): |
| 0 | 167 if name in self._componentCache: |
| 168 return self._componentCache[name] | |
| 169 | |
| 170 all_components = [] | |
| 171 for plugin in self.plugins: | |
|
849
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
172 plugin_components = getattr(plugin, name)(*args) |
| 0 | 173 all_components += plugin_components |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
174 |
| 0 | 175 if initialize: |
| 176 for comp in plugin_components: | |
| 177 comp.initialize(self.app) | |
| 178 | |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
179 if register_timer: |
|
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
180 for comp in plugin_components: |
|
803
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
181 if not register_timer_suffixes: |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
182 self.app.env.stats.registerTimer( |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
183 comp.__class__.__name__) |
|
803
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
184 else: |
|
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
185 for s in register_timer_suffixes: |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
186 self.app.env.stats.registerTimer( |
|
803
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
187 comp.__class__.__name__ + s) |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
188 |
|
7
343d08ef5668
More PieCrust 3 fixes, and a couple of miscellaneous bug fixes.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
189 if order_key is not None: |
|
343d08ef5668
More PieCrust 3 fixes, and a couple of miscellaneous bug fixes.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
190 all_components.sort(key=order_key) |
| 0 | 191 |
| 192 self._componentCache[name] = all_components | |
| 193 return all_components | |
| 194 |
