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