@@ -1954,6 +1954,41 @@ def test(a, b:'foo'=10, *args:'bar', spam:'baz', ham=123, **kwargs:int):
19541954 ('kwargs' , ..., int , "var_keyword" )),
19551955 ...))
19561956
1957+ def test_signature_without_self (self ):
1958+ def test_args_only (* args ): # NOQA
1959+ pass
1960+
1961+ def test_args_kwargs_only (* args , ** kwargs ): # NOQA
1962+ pass
1963+
1964+ class A :
1965+ @classmethod
1966+ def test_classmethod (* args ): # NOQA
1967+ pass
1968+
1969+ @staticmethod
1970+ def test_staticmethod (* args ): # NOQA
1971+ pass
1972+
1973+ f1 = functools .partialmethod ((test_classmethod ), 1 )
1974+ f2 = functools .partialmethod ((test_args_only ), 1 )
1975+ f3 = functools .partialmethod ((test_staticmethod ), 1 )
1976+ f4 = functools .partialmethod ((test_args_kwargs_only ),1 )
1977+
1978+ self .assertEqual (self .signature (test_args_only ),
1979+ ((('args' , ..., ..., 'var_positional' ),), ...))
1980+ self .assertEqual (self .signature (test_args_kwargs_only ),
1981+ ((('args' , ..., ..., 'var_positional' ),
1982+ ('kwargs' , ..., ..., 'var_keyword' )), ...))
1983+ self .assertEqual (self .signature (A .f1 ),
1984+ ((('args' , ..., ..., 'var_positional' ),), ...))
1985+ self .assertEqual (self .signature (A .f2 ),
1986+ ((('args' , ..., ..., 'var_positional' ),), ...))
1987+ self .assertEqual (self .signature (A .f3 ),
1988+ ((('args' , ..., ..., 'var_positional' ),), ...))
1989+ self .assertEqual (self .signature (A .f4 ),
1990+ ((('args' , ..., ..., 'var_positional' ),
1991+ ('kwargs' , ..., ..., 'var_keyword' )), ...))
19571992 @cpython_only
19581993 @unittest .skipIf (MISSING_C_DOCSTRINGS ,
19591994 "Signature information for builtins requires docstrings" )
0 commit comments