Skip to content

Commit ee3b3af

Browse files
committed
argparse: type subparser helper's add_parser
A drive-by. I grepped for TODO and this one seemed easy enough.
1 parent c94fb40 commit ee3b3af

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

stdlib/argparse.pyi

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
145145
_optionals: _ArgumentGroup
146146
_subparsers: _ArgumentGroup | None
147147

148+
# Note: the constructor arguments are also used in _SubParsersAction.add_parser.
148149
if sys.version_info >= (3, 9):
149150
def __init__(
150151
self,
@@ -494,8 +495,42 @@ class _SubParsersAction(Action, Generic[_ArgumentParserT]):
494495
help: str | None = ...,
495496
metavar: str | tuple[str, ...] | None = ...,
496497
) -> None: ...
497-
# TODO: Type keyword args properly.
498-
def add_parser(self, name: str, **kwargs: Any) -> _ArgumentParserT: ...
498+
# The signature of add_parser matches that of ArgumentParser.__init__, except
499+
# add_parser returns an ArgumentParser.
500+
if sys.version_info >= (3, 9):
501+
def add_parser(
502+
self,
503+
prog: str | None = ...,
504+
usage: str | None = ...,
505+
description: str | None = ...,
506+
epilog: str | None = ...,
507+
parents: Sequence[_ArgumentParserT] = ...,
508+
formatter_class: _FormatterClass = ...,
509+
prefix_chars: str = ...,
510+
fromfile_prefix_chars: str | None = ...,
511+
argument_default: Any = ...,
512+
conflict_handler: str = ...,
513+
add_help: bool = ...,
514+
allow_abbrev: bool = ...,
515+
exit_on_error: bool = ...,
516+
) -> None: ...
517+
else:
518+
def add_parser(
519+
self,
520+
prog: str | None = ...,
521+
usage: str | None = ...,
522+
description: str | None = ...,
523+
epilog: str | None = ...,
524+
parents: Sequence[_ArgumentParserT] = ...,
525+
formatter_class: _FormatterClass = ...,
526+
prefix_chars: str = ...,
527+
fromfile_prefix_chars: str | None = ...,
528+
argument_default: Any = ...,
529+
conflict_handler: str = ...,
530+
add_help: bool = ...,
531+
allow_abbrev: bool = ...,
532+
) -> _ArgumentParserT: ...
533+
499534
def _get_subactions(self) -> list[Action]: ...
500535

501536
# undocumented

0 commit comments

Comments
 (0)