diff options
author | Raymond Hettinger <python@rcn.com> | 2010-11-25 08:11:57 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2010-11-25 08:11:57 (GMT) |
commit | 5fa40c01ad6144ea2dac37e48860334b590806fc (patch) | |
tree | 00b40dc7299903e625822a2466c1ef163cb0596c /Lib/functools.py | |
parent | 99f9637de8893ecdb08ade606fe3a988e6a8c848 (diff) | |
download | cpython-5fa40c01ad6144ea2dac37e48860334b590806fc.zip cpython-5fa40c01ad6144ea2dac37e48860334b590806fc.tar.gz cpython-5fa40c01ad6144ea2dac37e48860334b590806fc.tar.bz2 |
Clean-up docstring, comments, and whitespace.
Diffstat (limited to 'Lib/functools.py')
-rw-r--r-- | Lib/functools.py | 20 |
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 |