diff piecrust/decorators.py @ 0:a212a3f2e3ee

Initial commit.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 21 Dec 2013 14:44:02 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/piecrust/decorators.py	Sat Dec 21 14:44:02 2013 -0800
@@ -0,0 +1,17 @@
+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))
+