mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-08 04:54:47 +08:00
Make argparse._SubParsersAction generic (#6178)
This commit is contained in:
@@ -1,8 +1,24 @@
|
||||
import sys
|
||||
from typing import IO, Any, Callable, Generator, Iterable, NoReturn, Pattern, Protocol, Sequence, Tuple, Type, TypeVar, overload
|
||||
from typing import (
|
||||
IO,
|
||||
Any,
|
||||
Callable,
|
||||
Generator,
|
||||
Generic,
|
||||
Iterable,
|
||||
NoReturn,
|
||||
Pattern,
|
||||
Protocol,
|
||||
Sequence,
|
||||
Tuple,
|
||||
Type,
|
||||
TypeVar,
|
||||
overload,
|
||||
)
|
||||
|
||||
_T = TypeVar("_T")
|
||||
_ActionT = TypeVar("_ActionT", bound=Action)
|
||||
_ArgumentParserT = TypeVar("_ArgumentParserT", bound=ArgumentParser)
|
||||
_N = TypeVar("_N")
|
||||
|
||||
ONE_OR_MORE: str
|
||||
@@ -135,34 +151,63 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
|
||||
@overload
|
||||
def parse_args(self, *, namespace: _N) -> _N: ...
|
||||
if sys.version_info >= (3, 7):
|
||||
@overload
|
||||
def add_subparsers(
|
||||
self,
|
||||
self: _ArgumentParserT,
|
||||
*,
|
||||
title: str = ...,
|
||||
description: str | None = ...,
|
||||
prog: str = ...,
|
||||
parser_class: Type[ArgumentParser] = ...,
|
||||
action: Type[Action] = ...,
|
||||
option_string: str = ...,
|
||||
dest: str | None = ...,
|
||||
required: bool = ...,
|
||||
help: str | None = ...,
|
||||
metavar: str | None = ...,
|
||||
) -> _SubParsersAction: ...
|
||||
else:
|
||||
) -> _SubParsersAction[_ArgumentParserT]: ...
|
||||
@overload
|
||||
def add_subparsers(
|
||||
self,
|
||||
*,
|
||||
title: str = ...,
|
||||
description: str | None = ...,
|
||||
prog: str = ...,
|
||||
parser_class: Type[ArgumentParser] = ...,
|
||||
parser_class: Type[_ArgumentParserT] = ...,
|
||||
action: Type[Action] = ...,
|
||||
option_string: str = ...,
|
||||
dest: str | None = ...,
|
||||
required: bool = ...,
|
||||
help: str | None = ...,
|
||||
metavar: str | None = ...,
|
||||
) -> _SubParsersAction[_ArgumentParserT]: ...
|
||||
else:
|
||||
@overload
|
||||
def add_subparsers(
|
||||
self: _ArgumentParserT,
|
||||
*,
|
||||
title: str = ...,
|
||||
description: str | None = ...,
|
||||
prog: str = ...,
|
||||
action: Type[Action] = ...,
|
||||
option_string: str = ...,
|
||||
dest: str | None = ...,
|
||||
help: str | None = ...,
|
||||
metavar: str | None = ...,
|
||||
) -> _SubParsersAction: ...
|
||||
) -> _SubParsersAction[_ArgumentParserT]: ...
|
||||
@overload
|
||||
def add_subparsers(
|
||||
self,
|
||||
*,
|
||||
title: str = ...,
|
||||
description: str | None = ...,
|
||||
prog: str = ...,
|
||||
parser_class: Type[_ArgumentParserT] = ...,
|
||||
action: Type[Action] = ...,
|
||||
option_string: str = ...,
|
||||
dest: str | None = ...,
|
||||
help: str | None = ...,
|
||||
metavar: str | None = ...,
|
||||
) -> _SubParsersAction[_ArgumentParserT]: ...
|
||||
def print_usage(self, file: IO[str] | None = ...) -> None: ...
|
||||
def print_help(self, file: IO[str] | None = ...) -> None: ...
|
||||
def format_usage(self) -> str: ...
|
||||
@@ -379,19 +424,19 @@ class _VersionAction(Action):
|
||||
) -> None: ...
|
||||
|
||||
# undocumented
|
||||
class _SubParsersAction(Action):
|
||||
class _SubParsersAction(Action, Generic[_ArgumentParserT]):
|
||||
_ChoicesPseudoAction: Type[Any] # nested class
|
||||
_prog_prefix: str
|
||||
_parser_class: Type[ArgumentParser]
|
||||
_name_parser_map: dict[str, ArgumentParser]
|
||||
choices: dict[str, ArgumentParser]
|
||||
_parser_class: Type[_ArgumentParserT]
|
||||
_name_parser_map: dict[str, _ArgumentParserT]
|
||||
choices: dict[str, _ArgumentParserT]
|
||||
_choices_actions: list[Action]
|
||||
if sys.version_info >= (3, 7):
|
||||
def __init__(
|
||||
self,
|
||||
option_strings: Sequence[str],
|
||||
prog: str,
|
||||
parser_class: Type[ArgumentParser],
|
||||
parser_class: Type[_ArgumentParserT],
|
||||
dest: str = ...,
|
||||
required: bool = ...,
|
||||
help: str | None = ...,
|
||||
@@ -402,13 +447,13 @@ class _SubParsersAction(Action):
|
||||
self,
|
||||
option_strings: Sequence[str],
|
||||
prog: str,
|
||||
parser_class: Type[ArgumentParser],
|
||||
parser_class: Type[_ArgumentParserT],
|
||||
dest: str = ...,
|
||||
help: str | None = ...,
|
||||
metavar: str | Tuple[str, ...] | None = ...,
|
||||
) -> None: ...
|
||||
# TODO: Type keyword args properly.
|
||||
def add_parser(self, name: str, **kwargs: Any) -> ArgumentParser: ...
|
||||
def add_parser(self, name: str, **kwargs: Any) -> _ArgumentParserT: ...
|
||||
def _get_subactions(self) -> list[Action]: ...
|
||||
|
||||
# undocumented
|
||||
|
||||
Reference in New Issue
Block a user