Add more ast.parse() mode overrides (#6522)

eval -> Expression
func_type -> FunctionType
single -> Interactive

We need (simplified) to cover all cases in Python >= 3.8

- 1 case: parse(filename: str = ...)
- 4 cases: parse(filename: str, mode: Literal[...])
- 4 cases: parse(*, mode: Literal[...])
This commit is contained in:
Pavel Karateev
2021-12-10 20:22:23 +03:00
committed by GitHub
parent 84fd495b65
commit 739a052c40

View File

@@ -167,18 +167,66 @@ if sys.version_info >= (3, 8):
@overload
def parse(
source: str | bytes,
filename: str | bytes = ...,
mode: str = ...,
filename: str | bytes,
mode: Literal["eval"],
*,
type_comments: bool = ...,
feature_version: None | int | _typing.Tuple[int, int] = ...,
) -> AST: ...
) -> Expression: ...
@overload
def parse(
source: str | bytes,
filename: str | bytes,
mode: Literal["func_type"],
*,
type_comments: bool = ...,
feature_version: None | int | _typing.Tuple[int, int] = ...,
) -> FunctionType: ...
@overload
def parse(
source: str | bytes,
filename: str | bytes,
mode: Literal["single"],
*,
type_comments: bool = ...,
feature_version: None | int | _typing.Tuple[int, int] = ...,
) -> Interactive: ...
@overload
def parse(
source: str | bytes,
*,
mode: Literal["eval"],
type_comments: bool = ...,
feature_version: None | int | _typing.Tuple[int, int] = ...,
) -> Expression: ...
@overload
def parse(
source: str | bytes,
*,
mode: Literal["func_type"],
type_comments: bool = ...,
feature_version: None | int | _typing.Tuple[int, int] = ...,
) -> FunctionType: ...
@overload
def parse(
source: str | bytes,
*,
mode: Literal["single"],
type_comments: bool = ...,
feature_version: None | int | _typing.Tuple[int, int] = ...,
) -> Interactive: ...
else:
@overload
def parse(source: str | bytes, filename: str | bytes = ..., mode: Literal["exec"] = ...) -> Module: ...
@overload
def parse(source: str | bytes, filename: str | bytes = ..., mode: str = ...) -> AST: ...
def parse(source: str | bytes, filename: str | bytes, mode: Literal["eval"]) -> Expression: ...
@overload
def parse(source: str | bytes, filename: str | bytes, mode: Literal["single"]) -> Interactive: ...
@overload
def parse(source: str | bytes, *, mode: Literal["eval"]) -> Expression: ...
@overload
def parse(source: str | bytes, *, mode: Literal["single"]) -> Interactive: ...
if sys.version_info >= (3, 9):
def unparse(ast_obj: AST) -> str: ...