Skip to content

Commit 2e0ead5

Browse files
gh-103406: Modernize pos-only arguments usage in test_signature (GH-103407)
(cherry picked from commit 7569781) Co-authored-by: Nikita Sobolev <[email protected]>
1 parent 3b929a7 commit 2e0ead5

File tree

1 file changed

+11
-20
lines changed

1 file changed

+11
-20
lines changed

Lib/test/test_inspect.py

+11-20
Original file line numberDiff line numberDiff line change
@@ -2882,14 +2882,9 @@ def foo(a=1, b=2, c=3):
28822882
self.assertEqual(_foo(*ba.args, **ba.kwargs), (12, 10, 20))
28832883

28842884

2885-
def foo(a, b, c, d, **kwargs):
2885+
def foo(a, b, /, c, d, **kwargs):
28862886
pass
28872887
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)
28932888
self.assertEqual(str(sig), '(a, b, /, c, d, **kwargs)')
28942889

28952890
self.assertEqual(self.signature(partial(foo, 1)),
@@ -3394,14 +3389,9 @@ def test_signature_str_positional_only(self):
33943389
P = inspect.Parameter
33953390
S = inspect.Signature
33963391

3397-
def test(a_po, *, b, **kwargs):
3392+
def test(a_po, /, *, b, **kwargs):
33983393
return a_po, kwargs
33993394

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-
34053395
self.assertEqual(str(inspect.signature(test)),
34063396
'(a_po, /, *, b, **kwargs)')
34073397

@@ -3431,6 +3421,14 @@ def test() -> 42:
34313421
self.assertEqual(sig.return_annotation, 42)
34323422
self.assertEqual(sig, inspect.signature(test))
34333423

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+
34343432
def test_signature_on_mangled_parameters(self):
34353433
class Spam:
34363434
def foo(self, __p1:1=2, *, __p2:2=3):
@@ -3962,16 +3960,9 @@ def test(a, *args, b, z=100, **kwargs):
39623960
def test_signature_bind_positional_only(self):
39633961
P = inspect.Parameter
39643962

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):
39663964
return a_po, b_po, c_po, foo, bar, kwargs
39673965

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-
39753966
self.assertEqual(self.call(test, 1, 2, 4, 5, bar=6),
39763967
(1, 2, 4, 5, 6, {}))
39773968

0 commit comments

Comments
 (0)