https://github.com/python/cpython/commit/8f33c7ac17fe4c34ed3d051de17cfb702170874c
commit: 8f33c7ac17fe4c34ed3d051de17cfb702170874c
branch: 3.13
author: Pieter Eendebak <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2025-02-17T11:12:24+02:00
summary:
[3.13] gh-127750: Fix functools.singledispatchmethod() (GH-130029)
Revert gh-107148
files:
A Misc/NEWS.d/next/Library/2025-02-12-09-48-25.gh-issue-127750.ibhIZg.rst
M Lib/functools.py
diff --git a/Lib/functools.py b/Lib/functools.py
index 2bc5053bd1b53f..4c1175b815d6ec 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -958,9 +958,6 @@ def __init__(self, func):
self.dispatcher = singledispatch(func)
self.func = func
- import weakref # see comment in singledispatch function
- self._method_cache = weakref.WeakKeyDictionary()
-
def register(self, cls, method=None):
"""generic_method.register(cls, func) -> func
@@ -969,16 +966,6 @@ def register(self, cls, method=None):
return self.dispatcher.register(cls, func=method)
def __get__(self, obj, cls=None):
- if self._method_cache is not None:
- try:
- _method = self._method_cache[obj]
- except TypeError:
- self._method_cache = None
- except KeyError:
- pass
- else:
- return _method
-
dispatch = self.dispatcher.dispatch
funcname = getattr(self.func, '__name__', 'singledispatchmethod
method')
def _method(*args, **kwargs):
@@ -991,9 +978,6 @@ def _method(*args, **kwargs):
_method.register = self.register
update_wrapper(_method, self.func)
- if self._method_cache is not None:
- self._method_cache[obj] = _method
-
return _method
@property
diff --git
a/Misc/NEWS.d/next/Library/2025-02-12-09-48-25.gh-issue-127750.ibhIZg.rst
b/Misc/NEWS.d/next/Library/2025-02-12-09-48-25.gh-issue-127750.ibhIZg.rst
new file mode 100644
index 00000000000000..a82805454e45f3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-02-12-09-48-25.gh-issue-127750.ibhIZg.rst
@@ -0,0 +1,2 @@
+Remove broken :func:`functools.singledispatchmethod` caching introduced in
+:gh:`85160`.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]