@@ -1989,6 +1989,41 @@ def test(a, b:'foo'=10, *args:'bar', spam:'baz', ham=123, **kwargs:int):
19891989 ('kwargs' , ..., int , "var_keyword" )),
19901990 ...))
19911991
1992+ def test_signature_without_self (self ):
1993+ def test_args_only (* args ): # NOQA
1994+ pass
1995+
1996+ def test_args_kwargs_only (* args , ** kwargs ): # NOQA
1997+ pass
1998+
1999+ class A :
2000+ @classmethod
2001+ def test_classmethod (* args ): # NOQA
2002+ pass
2003+
2004+ @staticmethod
2005+ def test_staticmethod (* args ): # NOQA
2006+ pass
2007+
2008+ f1 = functools .partialmethod ((test_classmethod ), 1 )
2009+ f2 = functools .partialmethod ((test_args_only ), 1 )
2010+ f3 = functools .partialmethod ((test_staticmethod ), 1 )
2011+ f4 = functools .partialmethod ((test_args_kwargs_only ),1 )
2012+
2013+ self .assertEqual (self .signature (test_args_only ),
2014+ ((('args' , ..., ..., 'var_positional' ),), ...))
2015+ self .assertEqual (self .signature (test_args_kwargs_only ),
2016+ ((('args' , ..., ..., 'var_positional' ),
2017+ ('kwargs' , ..., ..., 'var_keyword' )), ...))
2018+ self .assertEqual (self .signature (A .f1 ),
2019+ ((('args' , ..., ..., 'var_positional' ),), ...))
2020+ self .assertEqual (self .signature (A .f2 ),
2021+ ((('args' , ..., ..., 'var_positional' ),), ...))
2022+ self .assertEqual (self .signature (A .f3 ),
2023+ ((('args' , ..., ..., 'var_positional' ),), ...))
2024+ self .assertEqual (self .signature (A .f4 ),
2025+ ((('args' , ..., ..., 'var_positional' ),
2026+ ('kwargs' , ..., ..., 'var_keyword' )), ...))
19922027 @cpython_only
19932028 @unittest .skipIf (MISSING_C_DOCSTRINGS ,
19942029 "Signature information for builtins requires docstrings" )
0 commit comments