comparison babel/support.py @ 559:8831b754f81e trunk

Allow disabling cache behaviour in LazyProxy (fixes #208, initial patch Pedro Algarvio)
author fschwarz
date Wed, 31 Aug 2011 12:38:06 +0000
parents ca203b2af83c
children 7c81bb0d32e5
comparison
equal deleted inserted replaced
557:4e561e6411ba 559:8831b754f81e
181 ... print greeting 181 ... print greeting
182 Hello, Joe! 182 Hello, Joe!
183 Hello, universe! 183 Hello, universe!
184 Hello, world! 184 Hello, world!
185 """ 185 """
186 __slots__ = ['_func', '_args', '_kwargs', '_value'] 186 __slots__ = ['_func', '_args', '_kwargs', '_value', '_is_cache_enabled']
187 187
188 def __init__(self, func, *args, **kwargs): 188 def __init__(self, func, *args, **kwargs):
189 is_cache_enabled = kwargs.pop('enable_cache', True)
189 # Avoid triggering our own __setattr__ implementation 190 # Avoid triggering our own __setattr__ implementation
190 object.__setattr__(self, '_func', func) 191 object.__setattr__(self, '_func', func)
191 object.__setattr__(self, '_args', args) 192 object.__setattr__(self, '_args', args)
192 object.__setattr__(self, '_kwargs', kwargs) 193 object.__setattr__(self, '_kwargs', kwargs)
194 object.__setattr__(self, '_is_cache_enabled', is_cache_enabled)
193 object.__setattr__(self, '_value', None) 195 object.__setattr__(self, '_value', None)
194 196
195 def value(self): 197 def value(self):
196 if self._value is None: 198 if self._value is None:
197 value = self._func(*self._args, **self._kwargs) 199 value = self._func(*self._args, **self._kwargs)
200 if not self._is_cache_enabled:
201 return value
198 object.__setattr__(self, '_value', value) 202 object.__setattr__(self, '_value', value)
199 return self._value 203 return self._value
200 value = property(value) 204 value = property(value)
201 205
202 def __contains__(self, key): 206 def __contains__(self, key):
Copyright (C) 2012-2017 Edgewall Software