]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-143825: Micro-optimizations to _make_key. (gh-143844)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Wed, 14 Jan 2026 21:20:53 +0000 (15:20 -0600)
committerGitHub <noreply@github.com>
Wed, 14 Jan 2026 21:20:53 +0000 (15:20 -0600)
Lib/functools.py

index 836eb680ccd4d4671bb423cd82c2640a75679827..075418b1605a4874d78bdf54f41dd5a8508480fa 100644 (file)
@@ -517,7 +517,7 @@ def _unwrap_partialmethod(func):
 ### LRU Cache function decorator
 ################################################################################
 
-_CacheInfo = namedtuple("CacheInfo", ["hits", "misses", "maxsize", "currsize"])
+_CacheInfo = namedtuple("CacheInfo", ("hits", "misses", "maxsize", "currsize"))
 
 def _make_key(args, kwds, typed,
              kwd_mark = (object(),),
@@ -539,13 +539,15 @@ def _make_key(args, kwds, typed,
     # distinct call from f(y=2, x=1) which will be cached separately.
     key = args
     if kwds:
+        key = list(key)
         key += kwd_mark
         for item in kwds.items():
             key += item
+        key = tuple(key)
     if typed:
-        key += tuple(type(v) for v in args)
+        key += tuple([type(v) for v in args])
         if kwds:
-            key += tuple(type(v) for v in kwds.values())
+            key += tuple([type(v) for v in kwds.values()])
     elif len(key) == 1 and type(key[0]) in fasttypes:
         return key[0]
     return key