@@ -145,6 +145,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
145
145
_optionals : _ArgumentGroup
146
146
_subparsers : _ArgumentGroup | None
147
147
148
+ # Note: the constructor arguments are also used in _SubParsersAction.add_parser.
148
149
if sys .version_info >= (3 , 9 ):
149
150
def __init__ (
150
151
self ,
@@ -494,8 +495,42 @@ class _SubParsersAction(Action, Generic[_ArgumentParserT]):
494
495
help : str | None = ...,
495
496
metavar : str | tuple [str , ...] | None = ...,
496
497
) -> 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
+
499
534
def _get_subactions (self ) -> list [Action ]: ...
500
535
501
536
# undocumented
0 commit comments