Files
@ 9dd726706178
Branch filter:
Location: kallithea/rhodecode/lib/vcs/utils/lazy.py - annotation
9dd726706178
1.5 KiB
text/x-python
Complete copyright notices for web interface; change footer to link to them.
The original copyright notice found in the footer was not accurate as it
included only one of the many copyright holders in this project. This change
creates an "about" page, which currently contains just the copyright and
license information. It links to repository for additional potential copyright
holders not listed on the about page.
Unlisted contributors are mentioned in template comments.
Html links for Kallithea is fixed and we link to Conservancy.
Display of version information in the footer is improved.
The original copyright notice found in the footer was not accurate as it
included only one of the many copyright holders in this project. This change
creates an "about" page, which currently contains just the copyright and
license information. It links to repository for additional potential copyright
holders not listed on the about page.
Unlisted contributors are mentioned in template comments.
Html links for Kallithea is fixed and we link to Conservancy.
Display of version information in the footer is improved.
f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da c4d418b440d1 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da 324ac367a4da c4d418b440d1 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab 7ae9939409ab f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 f134d125fb67 | class _Missing(object):
def __repr__(self):
return 'no value'
def __reduce__(self):
return '_missing'
_missing = _Missing()
class LazyProperty(object):
"""
Decorator for easier creation of ``property`` from potentially expensive to
calculate attribute of the class.
Usage::
class Foo(object):
@LazyProperty
def bar(self):
print 'Calculating self._bar'
return 42
Taken from http://blog.pythonisito.com/2008/08/lazy-descriptors.html and
used widely.
"""
def __init__(self, func):
self._func = func
self.__module__ = func.__module__
self.__name__ = func.__name__
self.__doc__ = func.__doc__
def __get__(self, obj, klass=None):
if obj is None:
return self
value = obj.__dict__.get(self.__name__, _missing)
if value is _missing:
value = self._func(obj)
obj.__dict__[self.__name__] = value
return value
import threading
class ThreadLocalLazyProperty(LazyProperty):
"""
Same as above but uses thread local dict for cache storage.
"""
def __get__(self, obj, klass=None):
if obj is None:
return self
if not hasattr(obj, '__tl_dict__'):
obj.__tl_dict__ = threading.local().__dict__
value = obj.__tl_dict__.get(self.__name__, _missing)
if value is _missing:
value = self._func(obj)
obj.__tl_dict__[self.__name__] = value
return value
|