inspect.signature: Check for function-like objects before builtins. Issue #17159

This commit is contained in:
Yury Selivanov 2014-02-21 18:30:53 -05:00
parent e2df3ea682
commit 8dfb4576a9
2 changed files with 20 additions and 4 deletions

View file

@ -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.