@@ -3044,14 +3044,9 @@ def foo(a=1, b=2, c=3):
30443044 self .assertEqual (_foo (* ba .args , ** ba .kwargs ), (12 , 10 , 20 ))
30453045
30463046
3047- def foo (a , b , c , d , ** kwargs ):
3047+ def foo (a , b , / , c , d , ** kwargs ):
30483048 pass
30493049 sig = inspect .signature (foo )
3050- params = sig .parameters .copy ()
3051- params ['a' ] = params ['a' ].replace (kind = Parameter .POSITIONAL_ONLY )
3052- params ['b' ] = params ['b' ].replace (kind = Parameter .POSITIONAL_ONLY )
3053- foo .__signature__ = inspect .Signature (params .values ())
3054- sig = inspect .signature (foo )
30553050 self .assertEqual (str (sig ), '(a, b, /, c, d, **kwargs)' )
30563051
30573052 self .assertEqual (self .signature (partial (foo , 1 )),
@@ -3556,14 +3551,9 @@ def test_signature_str_positional_only(self):
35563551 P = inspect .Parameter
35573552 S = inspect .Signature
35583553
3559- def test (a_po , * , b , ** kwargs ):
3554+ def test (a_po , / , * , b , ** kwargs ):
35603555 return a_po , kwargs
35613556
3562- sig = inspect .signature (test )
3563- new_params = list (sig .parameters .values ())
3564- new_params [0 ] = new_params [0 ].replace (kind = P .POSITIONAL_ONLY )
3565- test .__signature__ = sig .replace (parameters = new_params )
3566-
35673557 self .assertEqual (str (inspect .signature (test )),
35683558 '(a_po, /, *, b, **kwargs)' )
35693559
@@ -3593,6 +3583,14 @@ def test() -> 42:
35933583 self .assertEqual (sig .return_annotation , 42 )
35943584 self .assertEqual (sig , inspect .signature (test ))
35953585
3586+ def test_signature_replaced (self ):
3587+ def test ():
3588+ pass
3589+
3590+ spam_param = inspect .Parameter ('spam' , inspect .Parameter .POSITIONAL_ONLY )
3591+ sig = test .__signature__ = inspect .Signature (parameters = (spam_param ,))
3592+ self .assertEqual (sig , inspect .signature (test ))
3593+
35963594 def test_signature_on_mangled_parameters (self ):
35973595 class Spam :
35983596 def foo (self , __p1 :1 = 2 , * , __p2 :2 = 3 ):
@@ -4157,16 +4155,9 @@ def test(a, *args, b, z=100, **kwargs):
41574155 def test_signature_bind_positional_only (self ):
41584156 P = inspect .Parameter
41594157
4160- def test (a_po , b_po , c_po = 3 , foo = 42 , * , bar = 50 , ** kwargs ):
4158+ def test (a_po , b_po , c_po = 3 , / , foo = 42 , * , bar = 50 , ** kwargs ):
41614159 return a_po , b_po , c_po , foo , bar , kwargs
41624160
4163- sig = inspect .signature (test )
4164- new_params = collections .OrderedDict (tuple (sig .parameters .items ()))
4165- for name in ('a_po' , 'b_po' , 'c_po' ):
4166- new_params [name ] = new_params [name ].replace (kind = P .POSITIONAL_ONLY )
4167- new_sig = sig .replace (parameters = new_params .values ())
4168- test .__signature__ = new_sig
4169-
41704161 self .assertEqual (self .call (test , 1 , 2 , 4 , 5 , bar = 6 ),
41714162 (1 , 2 , 4 , 5 , 6 , {}))
41724163
0 commit comments