Mercurial > piecrust2
comparison piecrust/environment.py @ 427:3b658190c02b
performance: Compute default layout extensions only once.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 26 Jun 2015 09:51:06 -0700 |
parents | eef887cec776 |
children | cb3446be44b7 |
comparison
equal
deleted
inserted
replaced
426:ed5ccd4cce49 | 427:3b658190c02b |
---|---|
48 self._page_stack = [] | 48 self._page_stack = [] |
49 | 49 |
50 | 50 |
51 class Environment(object): | 51 class Environment(object): |
52 def __init__(self): | 52 def __init__(self): |
53 self.app = None | |
53 self.start_time = None | 54 self.start_time = None |
54 self.exec_info_stack = ExecutionInfoStack() | 55 self.exec_info_stack = ExecutionInfoStack() |
55 self.was_cache_cleaned = False | 56 self.was_cache_cleaned = False |
56 self.base_asset_url_format = '%uri%' | 57 self.base_asset_url_format = '%uri%' |
57 self.page_repository = MemCache() | 58 self.page_repository = MemCache() |
58 self.rendered_segments_repository = MemCache() | 59 self.rendered_segments_repository = MemCache() |
59 self.fs_caches = { | 60 self.fs_caches = { |
60 'renders': self.rendered_segments_repository} | 61 'renders': self.rendered_segments_repository} |
61 self.fs_cache_only_for_main_page = False | 62 self.fs_cache_only_for_main_page = False |
63 self._default_layout_extensions = None | |
62 self._timers = {} | 64 self._timers = {} |
63 | 65 |
66 @property | |
67 def default_layout_extensions(self): | |
68 if self._default_layout_extensions is not None: | |
69 return self._default_layout_extensions | |
70 | |
71 if self.app is None: | |
72 raise Exception("This environment has not been initialized yet.") | |
73 | |
74 from piecrust.rendering import get_template_engine | |
75 dte = get_template_engine(self.app, None) | |
76 self._default_layout_extensions = ['.' + e.lstrip('.') | |
77 for e in dte.EXTENSIONS] | |
78 return self._default_layout_extensions | |
79 | |
64 def initialize(self, app): | 80 def initialize(self, app): |
81 self.app = app | |
65 self.start_time = time.perf_counter() | 82 self.start_time = time.perf_counter() |
66 self.exec_info_stack.clear() | 83 self.exec_info_stack.clear() |
67 self.was_cache_cleaned = False | 84 self.was_cache_cleaned = False |
68 self.base_asset_url_format = '%uri%' | 85 self.base_asset_url_format = '%uri%' |
86 | |
69 self._onSubCacheDirChanged(app) | 87 self._onSubCacheDirChanged(app) |
70 | 88 |
71 def registerTimer(self, category, *, raise_if_registered=True): | 89 def registerTimer(self, category, *, raise_if_registered=True): |
72 if raise_if_registered and category in self._timers: | 90 if raise_if_registered and category in self._timers: |
73 raise Exception("Timer '%s' has already been registered." % | 91 raise Exception("Timer '%s' has already been registered." % |