Mercurial > piecrust2
annotate piecrust/plugins/base.py @ 1071:7f94407d037d 3.0.0
cm: Regenerate the CHANGELOG.
| author | Ludovic Chabant <ludovic@chabant.com> |
|---|---|
| date | Tue, 13 Feb 2018 23:48:18 -0800 |
| parents | 2e5c5d33d62c |
| children | 8af2ea1f5c34 |
| 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 |
| 0 | 47 def initialize(self, app): |
| 48 pass | |
| 49 | |
| 50 | |
| 51 class PluginLoader(object): | |
| 52 def __init__(self, app): | |
| 53 self.app = app | |
| 54 self._plugins = None | |
| 55 self._componentCache = {} | |
| 56 | |
| 57 @property | |
| 58 def plugins(self): | |
| 59 self._ensureLoaded() | |
| 60 return self._plugins | |
| 61 | |
| 62 def getFormatters(self): | |
|
312
10bb8e8600f5
plugins: Remove unused API endpoints.
Ludovic Chabant <ludovic@chabant.com>
parents:
306
diff
changeset
|
63 return self._getPluginComponents( |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
64 'getFormatters', |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
65 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
|
66 order_key=lambda f: f.priority) |
| 0 | 67 |
| 68 def getTemplateEngines(self): | |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
69 return self._getPluginComponents( |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
70 'getTemplateEngines', |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
71 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
|
72 register_timer_suffixes=['_segment', '_layout']) |
| 0 | 73 |
|
849
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
74 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
|
75 return self._getPluginComponents('getTemplateEngineExtensions', |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
76 engine_name) |
|
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
77 |
| 0 | 78 def getDataProviders(self): |
| 79 return self._getPluginComponents('getDataProviders') | |
| 80 | |
| 81 def getProcessors(self): | |
|
312
10bb8e8600f5
plugins: Remove unused API endpoints.
Ludovic Chabant <ludovic@chabant.com>
parents:
306
diff
changeset
|
82 return self._getPluginComponents( |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
83 'getProcessors', |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
84 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
|
85 order_key=lambda p: p.priority) |
| 0 | 86 |
| 87 def getImporters(self): | |
| 88 return self._getPluginComponents('getImporters') | |
| 89 | |
| 90 def getCommands(self): | |
| 91 return self._getPluginComponents('getCommands') | |
| 92 | |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
93 def getCommandExtensions(self): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
94 return self._getPluginComponents('getCommandExtensions') |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
95 |
| 0 | 96 def getBakerAssistants(self): |
| 97 return self._getPluginComponents('getBakerAssistants') | |
| 98 | |
|
3
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
99 def getSources(self): |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
100 return self._getPluginComponents('getSources') |
|
f485ba500df3
Gigantic change to basically make PieCrust 2 vaguely functional.
Ludovic Chabant <ludovic@chabant.com>
parents:
1
diff
changeset
|
101 |
|
852
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
102 def getPipelines(self): |
|
4850f8c21b6e
core: Start of the big refactor for PieCrust 3.0.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
103 return self._getPluginComponents('getPipelines') |
|
711
ab5c6a8ae90a
bake: Replace hard-coded taxonomy support with "generator" system.
Ludovic Chabant <ludovic@chabant.com>
parents:
613
diff
changeset
|
104 |
|
613
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
105 def getPublishers(self): |
|
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
106 return self._getPluginComponents('getPublishers') |
|
e2e955a3bb25
publish: Add publish command.
Ludovic Chabant <ludovic@chabant.com>
parents:
413
diff
changeset
|
107 |
| 0 | 108 def _ensureLoaded(self): |
| 109 if self._plugins is not None: | |
| 110 return | |
| 111 | |
|
1
aaa8fb7c8918
Re-arranged modules to reduce dependencies to builtin stuff.
Ludovic Chabant <ludovic@chabant.com>
parents:
0
diff
changeset
|
112 from piecrust.plugins.builtin import BuiltInPlugin |
| 0 | 113 self._plugins = [BuiltInPlugin()] |
| 114 | |
|
306
7122976bc751
plugins: Fix crash for sites that don't specify a `site/plugins` setting.
Ludovic Chabant <ludovic@chabant.com>
parents:
305
diff
changeset
|
115 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
|
116 if to_install: |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
117 for name in to_install: |
|
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
118 plugin = self._loadPlugin(name) |
|
999
46025a1b5434
plugins: Support multiple customizable plugins directories.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
119 if plugin is not None: |
|
46025a1b5434
plugins: Support multiple customizable plugins directories.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
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. |
|
999
46025a1b5434
plugins: Support multiple customizable plugins directories.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
135 for plugins_dir in self.app.plugins_dirs: |
|
46025a1b5434
plugins: Support multiple customizable plugins directories.
Ludovic Chabant <ludovic@chabant.com>
parents:
849
diff
changeset
|
136 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
|
137 if os.path.isfile(pfile): |
| 1005 | 138 if sys.version_info[1] >= 5: |
| 139 # Python 3.5+ | |
| 140 from importlib.util import (spec_from_file_location, | |
| 141 module_from_spec) | |
| 142 spec = spec_from_file_location(plugin_name, pfile) | |
| 143 mod = module_from_spec(spec) | |
| 144 spec.loader.exec_module(mod) | |
| 145 sys.modules[mod_name] = mod | |
| 146 else: | |
| 147 # Python 3.4, 3.3. | |
| 148 from importlib.machinery import SourceFileLoader | |
| 149 mod = SourceFileLoader( | |
| 150 plugin_name, pfile).load_module() | |
| 151 sys.modules[mod_name] = mod | |
|
848
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
152 |
|
7d83b9484b98
plugins: Add support for "ad-hoc" local plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
803
diff
changeset
|
153 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
|
154 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
|
155 return |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
156 |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
157 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
|
158 if plugin_class is None: |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
159 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
|
160 "`__piecrust_plugin__` class." % plugin_name) |
|
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 try: |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
164 plugin = plugin_class() |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
165 except Exception as ex: |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
166 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
|
167 (plugin_name, ex)) |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
168 return |
|
5dbab01daaba
plugins: First pass for a working plugin loader functionality.
Ludovic Chabant <ludovic@chabant.com>
parents:
7
diff
changeset
|
169 |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
170 return plugin |
| 0 | 171 |
|
849
8f8bbb2e70e1
templating: Template engines can now load extensions directly from plugins.
Ludovic Chabant <ludovic@chabant.com>
parents:
848
diff
changeset
|
172 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
|
173 initialize=False, |
|
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
174 register_timer=False, |
|
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
175 register_timer_suffixes=None, |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
176 order_key=None): |
| 0 | 177 if name in self._componentCache: |
| 178 return self._componentCache[name] | |
| 179 | |
| 180 all_components = [] | |
| 181 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
|
182 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
|
183 # 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
|
184 plugin_components = list(plugin_components) |
| 0 | 185 all_components += plugin_components |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
186 |
| 0 | 187 if initialize: |
| 188 for comp in plugin_components: | |
| 189 comp.initialize(self.app) | |
| 190 | |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
191 if register_timer: |
|
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
192 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
|
193 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
|
194 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
|
195 comp.__class__.__name__) |
|
803
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
196 else: |
|
bf9f4e55f751
rendering: Separate performance timers for renering segments and layouts.
Ludovic Chabant <ludovic@chabant.com>
parents:
711
diff
changeset
|
197 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
|
198 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
|
199 comp.__class__.__name__ + s) |
|
413
eacf0a3afd0c
internal: Register performance timers for plugin components.
Ludovic Chabant <ludovic@chabant.com>
parents:
312
diff
changeset
|
200 |
|
7
343d08ef5668
More PieCrust 3 fixes, and a couple of miscellaneous bug fixes.
Ludovic Chabant <ludovic@chabant.com>
parents:
3
diff
changeset
|
201 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
|
202 all_components.sort(key=order_key) |
| 0 | 203 |
| 204 self._componentCache[name] = all_components | |
| 205 return all_components | |
| 206 |
