Mercurial > babel > mirror
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): |