@@ -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,53 @@ 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
+ # 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
+
463
509
def _get_subactions (self ) -> list [Action ]: ...
464
510
465
511
# undocumented
0 commit comments