[Python-checkins] cpython (3.6): Sync-up with 3.7 by backporting minor lru_cache code beautification

raymond.hettinger python-checkins at python.org
Sun Jan 8 21:22:47 EST 2017


https://hg.python.org/cpython/rev/35c1ca2aa994
changeset:   106049:35c1ca2aa994
branch:      3.6
parent:      106046:48c750c26710
user:        Raymond Hettinger <python at rcn.com>
date:        Sun Jan 08 18:22:24 2017 -0800
summary:
  Sync-up with 3.7 by backporting minor lru_cache code beautification

files:
  Lib/functools.py |  7 ++++---
  1 files changed, 4 insertions(+), 3 deletions(-)


diff --git a/Lib/functools.py b/Lib/functools.py
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -492,6 +492,7 @@
     hits = misses = 0
     full = False
     cache_get = cache.get    # bound method to lookup a key or return None
+    cache_len = cache.__len__  # get cache size without calling len()
     lock = RLock()           # because linkedlist updates aren't threadsafe
     root = []                # root of the circular doubly linked list
     root[:] = [root, root, None, None]     # initialize by pointing to self
@@ -573,16 +574,16 @@
                     last = root[PREV]
                     link = [last, root, key, result]
                     last[NEXT] = root[PREV] = cache[key] = link
-                    # Use the __len__() method instead of the len() function
+                    # Use the cache_len bound method instead of the len() function
                     # which could potentially be wrapped in an lru_cache itself.
-                    full = (cache.__len__() >= maxsize)
+                    full = (cache_len() >= maxsize)
                 misses += 1
             return result
 
     def cache_info():
         """Report cache statistics"""
         with lock:
-            return _CacheInfo(hits, misses, maxsize, cache.__len__())
+            return _CacheInfo(hits, misses, maxsize, cache_len())
 
     def cache_clear():
         """Clear the cache and cache statistics"""

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list