view piecrust/decorators.py @ 2:40fa08b261b9

Added unit tests (using `py.test`) for `Configuration`. Fixed some configuration module bugs.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 25 Dec 2013 22:16:46 -0800
parents a212a3f2e3ee
children
line wrap: on
line source

import functools


def lazy(f):
    @functools.wraps(f)
    def lazy_wrapper(*args, **kwargs):
        if f.__lazyresult__ is None:
            f.__lazyresult__ = f(*args, **kwargs)
        return f.__lazyresult__

    f.__lazyresult__ = None
    return lazy_wrapper


def lazy_property(f):
    return property(lazy(f))