mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
bpo-30149: Fix partialmethod without explicit self parameter (#1308)
This commit is contained in:
parent
f8d05b3a24
commit
378d70642a
3 changed files with 48 additions and 4 deletions
|
@ -1986,6 +1986,41 @@ class TestSignatureObject(unittest.TestCase):
|
|||
('kwargs', ..., int, "var_keyword")),
|
||||
...))
|
||||
|
||||
def test_signature_without_self(self):
|
||||
def test_args_only(*args): # NOQA
|
||||
pass
|
||||
|
||||
def test_args_kwargs_only(*args, **kwargs): # NOQA
|
||||
pass
|
||||
|
||||
class A:
|
||||
@classmethod
|
||||
def test_classmethod(*args): # NOQA
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def test_staticmethod(*args): # NOQA
|
||||
pass
|
||||
|
||||
f1 = functools.partialmethod((test_classmethod), 1)
|
||||
f2 = functools.partialmethod((test_args_only), 1)
|
||||
f3 = functools.partialmethod((test_staticmethod), 1)
|
||||
f4 = functools.partialmethod((test_args_kwargs_only),1)
|
||||
|
||||
self.assertEqual(self.signature(test_args_only),
|
||||
((('args', ..., ..., 'var_positional'),), ...))
|
||||
self.assertEqual(self.signature(test_args_kwargs_only),
|
||||
((('args', ..., ..., 'var_positional'),
|
||||
('kwargs', ..., ..., 'var_keyword')), ...))
|
||||
self.assertEqual(self.signature(A.f1),
|
||||
((('args', ..., ..., 'var_positional'),), ...))
|
||||
self.assertEqual(self.signature(A.f2),
|
||||
((('args', ..., ..., 'var_positional'),), ...))
|
||||
self.assertEqual(self.signature(A.f3),
|
||||
((('args', ..., ..., 'var_positional'),), ...))
|
||||
self.assertEqual(self.signature(A.f4),
|
||||
((('args', ..., ..., 'var_positional'),
|
||||
('kwargs', ..., ..., 'var_keyword')), ...))
|
||||
@cpython_only
|
||||
@unittest.skipIf(MISSING_C_DOCSTRINGS,
|
||||
"Signature information for builtins requires docstrings")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue