summaryrefslogtreecommitdiff
path: root/django/utils/functional.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/utils/functional.py')
-rw-r--r--django/utils/functional.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/django/utils/functional.py b/django/utils/functional.py
index 0c31c1f375..a57546ad2d 100644
--- a/django/utils/functional.py
+++ b/django/utils/functional.py
@@ -3,6 +3,21 @@ def curry(_curried_func, *args, **kwargs):
return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
return _curried
+def memoize(func, cache):
+ """
+ Wrap a function so that results for any argument tuple are stored in
+ 'cache'. Note that the args to the function must be usable as dictionary
+ keys.
+ """
+ def wrapper(*args):
+ if args in cache:
+ return cache[args]
+
+ result = func(*args)
+ cache[args] = result
+ return result
+ return wrapper
+
class Promise:
"""
This is just a base class for the proxy class created in