https://github.com/python/cpython/commit/0147be09d585e6b5e013ea2d1b24c77500d9a083
commit: 0147be09d585e6b5e013ea2d1b24c77500d9a083
branch: main
author: Lukas Geiger <lukas.geige...@gmail.com>
committer: rhettinger <rhettin...@users.noreply.github.com>
date: 2025-03-31T08:23:41-05:00
summary:

gh-131525: Remove `_HashedSeq` wrapper from `lru_cache` (gh-131922)

files:
M Lib/functools.py

diff --git a/Lib/functools.py b/Lib/functools.py
index e0e45bc336c1ef..714070c6ac9460 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -516,22 +516,6 @@ def _unwrap_partialmethod(func):
 
 _CacheInfo = namedtuple("CacheInfo", ["hits", "misses", "maxsize", "currsize"])
 
-class _HashedSeq(list):
-    """ This class guarantees that hash() will be called no more than once
-        per element.  This is important because the lru_cache() will hash
-        the key multiple times on a cache miss.
-
-    """
-
-    __slots__ = 'hashvalue'
-
-    def __init__(self, tup, hash=hash):
-        self[:] = tup
-        self.hashvalue = hash(tup)
-
-    def __hash__(self):
-        return self.hashvalue
-
 def _make_key(args, kwds, typed,
              kwd_mark = (object(),),
              fasttypes = {int, str},
@@ -561,7 +545,7 @@ def _make_key(args, kwds, typed,
             key += tuple(type(v) for v in kwds.values())
     elif len(key) == 1 and type(key[0]) in fasttypes:
         return key[0]
-    return _HashedSeq(key)
+    return key
 
 def lru_cache(maxsize=128, typed=False):
     """Least-recently-used cache decorator.

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: arch...@mail-archive.com

Reply via email to