bpo-33009: Fix inspect.signature() for single-parameter partialmethods. (GH-6004)

(cherry picked from commit 8a387219bd)

Co-authored-by: Yury Selivanov <yury@magic.io>
This commit is contained in:
Miss Islington (bot) 2018-03-06 10:23:48 -08:00 committed by GitHub
parent 5a0c3987ab
commit 112f799666
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 1 deletions

View file

@ -2254,7 +2254,8 @@ def _signature_from_callable(obj, *,
return sig
else:
sig_params = tuple(sig.parameters.values())
assert first_wrapped_param is not sig_params[0]
assert (not sig_params or
first_wrapped_param is not sig_params[0])
new_params = (first_wrapped_param,) + sig_params
return sig.replace(parameters=new_params)

View file

@ -2580,6 +2580,16 @@ class TestSignatureObject(unittest.TestCase):
('c', 1, ..., 'keyword_only')),
'spam'))
class Spam:
def test(self: 'anno', x):
pass
g = partialmethod(test, 1)
self.assertEqual(self.signature(Spam.g),
((('self', ..., 'anno', 'positional_or_keyword'),),
...))
def test_signature_on_fake_partialmethod(self):
def foo(a): pass
foo._partialmethod = 'spam'

View file

@ -0,0 +1 @@
Fix inspect.signature() for single-parameter partialmethods.