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