Skip to content

Commit 0428069

Browse files
authored
argparse: type subparser helper's add_parser (#8558)
1 parent 3082910 commit 0428069

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

stdlib/argparse.pyi

Lines changed: 48 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,53 @@ 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+
# Note: `add_parser` accepts all kwargs of `ArgumentParser.__init__`. It also
464+
# accepts its own `help` and `aliases` kwargs.
465+
if sys.version_info >= (3, 9):
466+
def add_parser(
467+
self,
468+
name: str,
469+
*,
470+
help: str | None = ...,
471+
aliases: Sequence[str] = ...,
472+
# Kwargs from ArgumentParser constructor
473+
prog: str | None = ...,
474+
usage: str | None = ...,
475+
description: str | None = ...,
476+
epilog: str | None = ...,
477+
parents: Sequence[_ArgumentParserT] = ...,
478+
formatter_class: _FormatterClass = ...,
479+
prefix_chars: str = ...,
480+
fromfile_prefix_chars: str | None = ...,
481+
argument_default: Any = ...,
482+
conflict_handler: str = ...,
483+
add_help: bool = ...,
484+
allow_abbrev: bool = ...,
485+
exit_on_error: bool = ...,
486+
) -> _ArgumentParserT: ...
487+
else:
488+
def add_parser(
489+
self,
490+
name: str,
491+
*,
492+
help: str | None = ...,
493+
aliases: Sequence[str] = ...,
494+
# Kwargs from ArgumentParser constructor
495+
prog: str | None = ...,
496+
usage: str | None = ...,
497+
description: str | None = ...,
498+
epilog: str | None = ...,
499+
parents: Sequence[_ArgumentParserT] = ...,
500+
formatter_class: _FormatterClass = ...,
501+
prefix_chars: str = ...,
502+
fromfile_prefix_chars: str | None = ...,
503+
argument_default: Any = ...,
504+
conflict_handler: str = ...,
505+
add_help: bool = ...,
506+
allow_abbrev: bool = ...,
507+
) -> _ArgumentParserT: ...
508+
463509
def _get_subactions(self) -> list[Action]: ...
464510

465511
# undocumented

0 commit comments

Comments
 (0)