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." %