summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2010-11-25 08:11:57 (GMT)
committerRaymond Hettinger <python@rcn.com>2010-11-25 08:11:57 (GMT)
commit5fa40c01ad6144ea2dac37e48860334b590806fc (patch)
tree00b40dc7299903e625822a2466c1ef163cb0596c
parent99f9637de8893ecdb08ade606fe3a988e6a8c848 (diff)
downloadcpython-5fa40c01ad6144ea2dac37e48860334b590806fc.zip
cpython-5fa40c01ad6144ea2dac37e48860334b590806fc.tar.gz
cpython-5fa40c01ad6144ea2dac37e48860334b590806fc.tar.bz2
Clean-up docstring, comments, and whitespace.
-rw-r--r--Lib/functools.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/Lib/functools.py b/Lib/functools.py
index f45ba00..c1fa170 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -118,13 +118,22 @@ def lru_cache(maxsize=100):
"""Least-recently-used cache decorator.
Arguments to the cached function must be hashable.
- Cache performance statistics stored in f.hits and f.misses.
- Clear the cache using f.clear().
- http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used
+
+ Performance statistics stored in f.cache_hits and f.cache_misses.
+ Clear the cache and statistics using f.cache_clear().
+ The underlying function is stored in f.__wrapped__.
+
+ See: http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used
"""
- def decorating_function(user_function, tuple=tuple, sorted=sorted,
- len=len, KeyError=KeyError):
+ # Users should only access the lru_cache through its public API:
+ # cache_hits, cache_misses, cache_clear(), and __wrapped__
+ # The internals of the lru_cache are encapsulated for thread safety and
+ # to allow the implementation to change (including a possible C version).
+
+ def decorating_function(user_function,
+ tuple=tuple, sorted=sorted, len=len, KeyError=KeyError):
+
cache = OrderedDict() # ordered least recent to most recent
cache_popitem = cache.popitem
cache_renew = cache.move_to_end
@@ -159,4 +168,5 @@ def lru_cache(maxsize=100):
wrapper.cache_hits = wrapper.cache_misses = 0
wrapper.cache_clear = cache_clear
return wrapper
+
return decorating_function