mirror of
https://github.com/python/cpython.git
synced 2026-01-08 08:22:41 +00:00
[3.13] gh-122087: Restore ismethoddescriptor() and isroutine() for partial objects (GH-122218)
Now they return False again.
This commit is contained in:
parent
716c6771fc
commit
4e7716554b
3 changed files with 10 additions and 0 deletions
|
|
@ -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__")
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Restore :func:`inspect.ismethoddescriptor` and :func:`inspect.isroutine`
|
||||
returning ``False`` for :class:`functools.partial` objects.
|
||||
Loading…
Add table
Add a link
Reference in a new issue