Skip to content

Commit 739a052

Browse files
authored
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[...])
1 parent 84fd495 commit 739a052

File tree

1 file changed

+52
-4
lines changed

1 file changed

+52
-4
lines changed

stdlib/ast.pyi

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,18 +167,66 @@ if sys.version_info >= (3, 8):
167167
@overload
168168
def parse(
169169
source: str | bytes,
170-
filename: str | bytes = ...,
171-
mode: str = ...,
170+
filename: str | bytes,
171+
mode: Literal["eval"],
172+
*,
173+
type_comments: bool = ...,
174+
feature_version: None | int | _typing.Tuple[int, int] = ...,
175+
) -> Expression: ...
176+
@overload
177+
def parse(
178+
source: str | bytes,
179+
filename: str | bytes,
180+
mode: Literal["func_type"],
181+
*,
182+
type_comments: bool = ...,
183+
feature_version: None | int | _typing.Tuple[int, int] = ...,
184+
) -> FunctionType: ...
185+
@overload
186+
def parse(
187+
source: str | bytes,
188+
filename: str | bytes,
189+
mode: Literal["single"],
190+
*,
191+
type_comments: bool = ...,
192+
feature_version: None | int | _typing.Tuple[int, int] = ...,
193+
) -> Interactive: ...
194+
@overload
195+
def parse(
196+
source: str | bytes,
172197
*,
198+
mode: Literal["eval"],
173199
type_comments: bool = ...,
174200
feature_version: None | int | _typing.Tuple[int, int] = ...,
175-
) -> AST: ...
201+
) -> Expression: ...
202+
@overload
203+
def parse(
204+
source: str | bytes,
205+
*,
206+
mode: Literal["func_type"],
207+
type_comments: bool = ...,
208+
feature_version: None | int | _typing.Tuple[int, int] = ...,
209+
) -> FunctionType: ...
210+
@overload
211+
def parse(
212+
source: str | bytes,
213+
*,
214+
mode: Literal["single"],
215+
type_comments: bool = ...,
216+
feature_version: None | int | _typing.Tuple[int, int] = ...,
217+
) -> Interactive: ...
176218

177219
else:
178220
@overload
179221
def parse(source: str | bytes, filename: str | bytes = ..., mode: Literal["exec"] = ...) -> Module: ...
180222
@overload
181-
def parse(source: str | bytes, filename: str | bytes = ..., mode: str = ...) -> AST: ...
223+
def parse(source: str | bytes, filename: str | bytes, mode: Literal["eval"]) -> Expression: ...
224+
@overload
225+
def parse(source: str | bytes, filename: str | bytes, mode: Literal["single"]) -> Interactive: ...
226+
@overload
227+
def parse(source: str | bytes, *, mode: Literal["eval"]) -> Expression: ...
228+
@overload
229+
def parse(source: str | bytes, *, mode: Literal["single"]) -> Interactive: ...
182230

183231
if sys.version_info >= (3, 9):
184232
def unparse(ast_obj: AST) -> str: ...

0 commit comments

Comments
 (0)