Skip to content

Commit aa56a2f

Browse files
committed
test pos_only_index
1 parent 1572b61 commit aa56a2f

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

mypy/stubdoc.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ class FunctionSig(NamedTuple):
7777
name: str
7878
args: list[ArgSig]
7979
ret_type: str | None
80+
pos_only_index: int | None = None
81+
kwarg_only_index: int | None = None
8082
type_args: str = "" # TODO implement in stubgenc and remove the default
8183
docstring: str | None = None
8284

@@ -139,6 +141,11 @@ def format_sig(
139141

140142
args.append(arg_def)
141143

144+
if self.pos_only_index:
145+
args.insert(self.pos_only_index, '/')
146+
if self.kwarg_only_index:
147+
args.insert(self.kwarg_only_index, '*')
148+
142149
retfield = ""
143150
ret_type = self.ret_type if self.ret_type else any_val
144151
if ret_type is not None:
@@ -342,7 +349,7 @@ def add_token(self, token: tokenize.TokenInfo) -> None:
342349

343350
if self.found:
344351
self.signatures.append(
345-
FunctionSig(name=self.function_name, args=self.args, ret_type=self.ret_type)
352+
FunctionSig(name=self.function_name, args=self.args, pos_only_index=self.pos_only, kwarg_only_index=self.keyword_only, ret_type=self.ret_type)
346353
)
347354
self.found = False
348355
self.args = []

mypy/test/teststubgen.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,17 +477,17 @@ def test_infer_sig_from_docstring_positional_only_arguments(self) -> None:
477477
def test_infer_sig_from_docstring_keyword_only_arguments(self) -> None:
478478
assert_equal(
479479
infer_sig_from_docstring("func(*, x) -> str", "func"),
480-
[FunctionSig(name="func", args=[ArgSig(name="x")], ret_type="str")],
480+
[FunctionSig(name="func", args=[ArgSig(name="x")], ret_type="str", pos_only_index=0)],
481481
)
482482

483483
assert_equal(
484484
infer_sig_from_docstring("func(x, *, y) -> str", "func"),
485-
[FunctionSig(name="func", args=[ArgSig(name="x"), ArgSig(name="y")], ret_type="str")],
485+
[FunctionSig(name="func", args=[ArgSig(name="x"), ArgSig(name="y")], ret_type="str", pos_only_index=1)],
486486
)
487487

488488
assert_equal(
489489
infer_sig_from_docstring("func(*, x, y) -> str", "func"),
490-
[FunctionSig(name="func", args=[ArgSig(name="x"), ArgSig(name="y")], ret_type="str")],
490+
[FunctionSig(name="func", args=[ArgSig(name="x"), ArgSig(name="y")], ret_type="str", pos_only_index=0)],
491491
)
492492

493493
assert_equal(
@@ -497,6 +497,7 @@ def test_infer_sig_from_docstring_keyword_only_arguments(self) -> None:
497497
name="func",
498498
args=[ArgSig(name="x"), ArgSig(name="kwonly"), ArgSig("**kwargs")],
499499
ret_type="str",
500+
pos_only_index=1,
500501
)
501502
],
502503
)
@@ -514,6 +515,8 @@ def test_infer_sig_from_docstring_pos_only_and_keyword_only_arguments(self) -> N
514515
name="func",
515516
args=[ArgSig(name="x"), ArgSig(name="y"), ArgSig(name="z")],
516517
ret_type="str",
518+
pos_only_index=1,
519+
kwarg_only_index=3
517520
)
518521
],
519522
)
@@ -530,6 +533,8 @@ def test_infer_sig_from_docstring_pos_only_and_keyword_only_arguments(self) -> N
530533
ArgSig("**kwargs"),
531534
],
532535
ret_type="str",
536+
pos_only_index=1,
537+
kwarg_only_index=3
533538
)
534539
],
535540
)

0 commit comments

Comments
 (0)