Mercurial > kallithea
view rhodecode/lib/vcs/utils/lazy.py @ 2865:6d9b3ade3051 beta
Allowing multiple issue servers to be autolinked in the changeset view;
linking is now contingent on issue_server_link, issue_pat and issue_prefix
being defined; multiple servers can be used by specifying a common suffix on all
the above variables, ie ..
issue_server_link_1
issue_pat_1
issue_prefix_1
.. and ..
issue_server_link_other
issue_pat_other
issue_prefix_other
.. would be treated as two distinct servers, but ..
issue_pat_thing
.. would be ignored (since the other two requisite vars aren't present).
This patch is backwards compatible with existing variables (as a suffix
isn't needed).
author | Zachary Auclair <zach101@gmail.com> |
---|---|
date | Thu, 20 Sep 2012 20:30:55 -0400 |
parents | c4d418b440d1 |
children | 7ae9939409ab |
line wrap: on
line source
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 result = obj.__dict__[self.__name__] = self._func(obj) return result