Skip to content

Commit cb05183

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 1e1a586 commit cb05183

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

stdlib/argparse.pyi

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
127127
_optionals: _ArgumentGroup
128128
_subparsers: _ArgumentGroup | None
129129

130+
# Note: the constructor arguments are also used in _SubParsersAction.add_parser.
130131
if sys.version_info >= (3, 9):
131132
def __init__(
132133
self,
@@ -458,8 +459,43 @@ class _SubParsersAction(Action, Generic[_ArgumentParserT]):
458459
help: str | None = ...,
459460
metavar: str | tuple[str, ...] | None = ...,
460461
) -> None: ...
461-
# TODO: Type keyword args properly.
462-
def add_parser(self, name: str, **kwargs: Any) -> _ArgumentParserT: ...
462+
463+
# The signature of add_parser matches that of ArgumentParser.__init__, except
464+
# add_parser returns an ArgumentParser.
465+
if sys.version_info >= (3, 9):
466+
def add_parser(
467+
self,
468+
prog: str | None = ...,
469+
usage: str | None = ...,
470+
description: str | None = ...,
471+
epilog: str | None = ...,
472+
parents: Sequence[_ArgumentParserT] = ...,
473+
formatter_class: _FormatterClass = ...,
474+
prefix_chars: str = ...,
475+
fromfile_prefix_chars: str | None = ...,
476+
argument_default: Any = ...,
477+
conflict_handler: str = ...,
478+
add_help: bool = ...,
479+
allow_abbrev: bool = ...,
480+
exit_on_error: bool = ...,
481+
) -> None: ...
482+
else:
483+
def add_parser(
484+
self,
485+
prog: str | None = ...,
486+
usage: str | None = ...,
487+
description: str | None = ...,
488+
epilog: str | None = ...,
489+
parents: Sequence[_ArgumentParserT] = ...,
490+
formatter_class: _FormatterClass = ...,
491+
prefix_chars: str = ...,
492+
fromfile_prefix_chars: str | None = ...,
493+
argument_default: Any = ...,
494+
conflict_handler: str = ...,
495+
add_help: bool = ...,
496+
allow_abbrev: bool = ...,
497+
) -> _ArgumentParserT: ...
498+
463499
def _get_subactions(self) -> list[Action]: ...
464500

465501
# undocumented

0 commit comments

Comments
 (0)