@@ -2882,14 +2882,9 @@ def foo(a=1, b=2, c=3):
2882
2882
self .assertEqual (_foo (* ba .args , ** ba .kwargs ), (12 , 10 , 20 ))
2883
2883
2884
2884
2885
- def foo (a , b , c , d , ** kwargs ):
2885
+ def foo (a , b , / , c , d , ** kwargs ):
2886
2886
pass
2887
2887
sig = inspect .signature (foo )
2888
- params = sig .parameters .copy ()
2889
- params ['a' ] = params ['a' ].replace (kind = Parameter .POSITIONAL_ONLY )
2890
- params ['b' ] = params ['b' ].replace (kind = Parameter .POSITIONAL_ONLY )
2891
- foo .__signature__ = inspect .Signature (params .values ())
2892
- sig = inspect .signature (foo )
2893
2888
self .assertEqual (str (sig ), '(a, b, /, c, d, **kwargs)' )
2894
2889
2895
2890
self .assertEqual (self .signature (partial (foo , 1 )),
@@ -3394,14 +3389,9 @@ def test_signature_str_positional_only(self):
3394
3389
P = inspect .Parameter
3395
3390
S = inspect .Signature
3396
3391
3397
- def test (a_po , * , b , ** kwargs ):
3392
+ def test (a_po , / , * , b , ** kwargs ):
3398
3393
return a_po , kwargs
3399
3394
3400
- sig = inspect .signature (test )
3401
- new_params = list (sig .parameters .values ())
3402
- new_params [0 ] = new_params [0 ].replace (kind = P .POSITIONAL_ONLY )
3403
- test .__signature__ = sig .replace (parameters = new_params )
3404
-
3405
3395
self .assertEqual (str (inspect .signature (test )),
3406
3396
'(a_po, /, *, b, **kwargs)' )
3407
3397
@@ -3431,6 +3421,14 @@ def test() -> 42:
3431
3421
self .assertEqual (sig .return_annotation , 42 )
3432
3422
self .assertEqual (sig , inspect .signature (test ))
3433
3423
3424
+ def test_signature_replaced (self ):
3425
+ def test ():
3426
+ pass
3427
+
3428
+ spam_param = inspect .Parameter ('spam' , inspect .Parameter .POSITIONAL_ONLY )
3429
+ sig = test .__signature__ = inspect .Signature (parameters = (spam_param ,))
3430
+ self .assertEqual (sig , inspect .signature (test ))
3431
+
3434
3432
def test_signature_on_mangled_parameters (self ):
3435
3433
class Spam :
3436
3434
def foo (self , __p1 :1 = 2 , * , __p2 :2 = 3 ):
@@ -3962,16 +3960,9 @@ def test(a, *args, b, z=100, **kwargs):
3962
3960
def test_signature_bind_positional_only (self ):
3963
3961
P = inspect .Parameter
3964
3962
3965
- def test (a_po , b_po , c_po = 3 , foo = 42 , * , bar = 50 , ** kwargs ):
3963
+ def test (a_po , b_po , c_po = 3 , / , foo = 42 , * , bar = 50 , ** kwargs ):
3966
3964
return a_po , b_po , c_po , foo , bar , kwargs
3967
3965
3968
- sig = inspect .signature (test )
3969
- new_params = collections .OrderedDict (tuple (sig .parameters .items ()))
3970
- for name in ('a_po' , 'b_po' , 'c_po' ):
3971
- new_params [name ] = new_params [name ].replace (kind = P .POSITIONAL_ONLY )
3972
- new_sig = sig .replace (parameters = new_params .values ())
3973
- test .__signature__ = new_sig
3974
-
3975
3966
self .assertEqual (self .call (test , 1 , 2 , 4 , 5 , bar = 6 ),
3976
3967
(1 , 2 , 4 , 5 , 6 , {}))
3977
3968
0 commit comments