##// END OF EJS Templates
move old shortlog as lightweight changelog into option, it's still useful to have since it's less resources to generate data for it.
move old shortlog as lightweight changelog into option, it's still useful to have since it's less resources to generate data for it.

File last commit:

r3057:79c5967a beta
r3290:e4025b36 beta
Show More
lazy.py
45 lines | 1.2 KiB | text/x-python | PythonLexer
Added VCS into rhodecode core for faster and easier deployments of new versions
r2007 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
small fix for lazy property
r2494 self.__module__ = func.__module__
Added VCS into rhodecode core for faster and easier deployments of new versions
r2007 self.__name__ = func.__name__
self.__doc__ = func.__doc__
def __get__(self, obj, klass=None):
if obj is None:
small fix for lazy property
r2494 return self
Added VCS into rhodecode core for faster and easier deployments of new versions
r2007 result = obj.__dict__[self.__name__] = self._func(obj)
return result
Use ThreadLocal storage for dulwich cached repos, finally fixes issues on concurent opening git pack files via dulwich
r3050
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__
result = obj.__tl_dict__[self.__name__] = self._func(obj)
return result