https://github.com/python/cpython/commit/4e7716554b3d1107f0ab201555cb4c1fefd21413
commit: 4e7716554b3d1107f0ab201555cb4c1fefd21413
branch: 3.13
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2024-07-25T10:11:47+03:00
summary:
[3.13] gh-122087: Restore ismethoddescriptor() and isroutine() for partial
objects (GH-122218)
Now they return False again.
files:
A Misc/NEWS.d/next/Library/2024-07-24-09-29-55.gh-issue-122087.FdBrWo.rst
M Lib/inspect.py
M Lib/test/test_inspect/test_inspect.py
diff --git a/Lib/inspect.py b/Lib/inspect.py
index bf979e8e63ff65..845d55f41751a0 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -325,6 +325,11 @@ def ismethoddescriptor(object):
if isclass(object) or ismethod(object) or isfunction(object):
# mutual exclusion
return False
+ if isinstance(object, functools.partial):
+ # Lie for children. The addition of partial.__get__
+ # doesn't currently change the partial objects behaviour,
+ # not counting a warning about future changes.
+ return False
tp = type(object)
return (hasattr(tp, "__get__")
and not hasattr(tp, "__set__")
diff --git a/Lib/test/test_inspect/test_inspect.py
b/Lib/test/test_inspect/test_inspect.py
index 5d0f32884d1406..de17558dd2d86a 100644
--- a/Lib/test/test_inspect/test_inspect.py
+++ b/Lib/test/test_inspect/test_inspect.py
@@ -405,6 +405,8 @@ def test_isroutine(self):
self.assertFalse(inspect.isroutine(type))
self.assertFalse(inspect.isroutine(int))
self.assertFalse(inspect.isroutine(type('some_class', (), {})))
+ # partial
+ self.assertFalse(inspect.isroutine(functools.partial(mod.spam)))
def test_isclass(self):
self.istest(inspect.isclass, 'mod.StupidGit')
@@ -1906,6 +1908,7 @@ def function():
self.assertFalse(inspect.ismethoddescriptor(Owner.static_method))
self.assertFalse(inspect.ismethoddescriptor(function))
self.assertFalse(inspect.ismethoddescriptor(a_lambda))
+
self.assertFalse(inspect.ismethoddescriptor(functools.partial(function)))
def test_descriptor_being_a_class(self):
class MethodDescriptorMeta(type):
diff --git
a/Misc/NEWS.d/next/Library/2024-07-24-09-29-55.gh-issue-122087.FdBrWo.rst
b/Misc/NEWS.d/next/Library/2024-07-24-09-29-55.gh-issue-122087.FdBrWo.rst
new file mode 100644
index 00000000000000..0e77741b3534ad
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-07-24-09-29-55.gh-issue-122087.FdBrWo.rst
@@ -0,0 +1,2 @@
+Restore :func:`inspect.ismethoddescriptor` and :func:`inspect.isroutine`
+returning ``False`` for :class:`functools.partial` objects.
_______________________________________________
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]