From: Pieter Eendebak Date: Mon, 17 Feb 2025 09:12:24 +0000 (+0100) Subject: [3.13] gh-127750: Fix functools.singledispatchmethod() (GH-130029) X-Git-Tag: v3.13.3~263 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8f33c7ac17fe4c34ed3d051de17cfb702170874c;p=thirdparty%2FPython%2Fcpython.git [3.13] gh-127750: Fix functools.singledispatchmethod() (GH-130029) Revert gh-107148 --- diff --git a/Lib/functools.py b/Lib/functools.py index 2bc5053bd1b5..4c1175b815d6 100644 --- a/Lib/functools.py +++ b/Lib/functools.py @@ -958,9 +958,6 @@ class singledispatchmethod: 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 @@ class singledispatchmethod: 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 @@ class singledispatchmethod: _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 000000000000..a82805454e45 --- /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`.