Skip to content

Commit 7569781

Browse files
authored
gh-103406: Modernize pos-only arguments usage in test_signature (#103407)
1 parent a3d313a commit 7569781

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
@@ -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

Comments
 (0)