mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
inspect.signature: Check for function-like objects before builtins. Issue #17159
This commit is contained in:
parent
e2df3ea682
commit
8dfb4576a9
2 changed files with 20 additions and 4 deletions
|
@ -14,6 +14,7 @@ import sys
|
|||
import types
|
||||
import unicodedata
|
||||
import unittest
|
||||
import unittest.mock
|
||||
|
||||
try:
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
@ -1836,6 +1837,21 @@ class TestSignatureObject(unittest.TestCase):
|
|||
('kwargs', ..., ..., "var_keyword")),
|
||||
...))
|
||||
|
||||
# Test with cython-like builtins:
|
||||
_orig_isdesc = inspect.ismethoddescriptor
|
||||
def _isdesc(obj):
|
||||
if hasattr(obj, '_builtinmock'):
|
||||
return True
|
||||
return _orig_isdesc(obj)
|
||||
|
||||
with unittest.mock.patch('inspect.ismethoddescriptor', _isdesc):
|
||||
builtin_func = funclike(func)
|
||||
# Make sure that our mock setup is working
|
||||
self.assertFalse(inspect.ismethoddescriptor(builtin_func))
|
||||
builtin_func._builtinmock = True
|
||||
self.assertTrue(inspect.ismethoddescriptor(builtin_func))
|
||||
self.assertEqual(inspect.signature(builtin_func), sig_func)
|
||||
|
||||
def test_signature_functionlike_class(self):
|
||||
# We only want to duck type function-like objects,
|
||||
# not classes.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue