@@ -127,6 +127,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
127
127
_optionals : _ArgumentGroup
128
128
_subparsers : _ArgumentGroup | None
129
129
130
+ # Note: the constructor arguments are also used in _SubParsersAction.add_parser.
130
131
if sys .version_info >= (3 , 9 ):
131
132
def __init__ (
132
133
self ,
@@ -458,8 +459,43 @@ class _SubParsersAction(Action, Generic[_ArgumentParserT]):
458
459
help : str | None = ...,
459
460
metavar : str | tuple [str , ...] | None = ...,
460
461
) -> 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
+
463
499
def _get_subactions (self ) -> list [Action ]: ...
464
500
465
501
# undocumented
0 commit comments