--- /dev/null
+import typing
+from typing import Any, Iterator
+
+class NodeVisitor:
+ def visit(self, node: AST) -> Any: ...
+ def generic_visit(self, node: AST) -> None: ...
+
+class NodeTransformer(NodeVisitor):
+ def generic_visit(self, node: AST) -> None: ...
+
+def parse(source: str | bytes, filename: str | bytes = ..., mode: str = ..., feature_version: int = ...) -> AST: ...
+def copy_location(new_node: AST, old_node: AST) -> AST: ...
+def dump(node: AST, annotate_fields: bool = ..., include_attributes: bool = ...) -> str: ...
+def fix_missing_locations(node: AST) -> AST: ...
+def get_docstring(node: AST, clean: bool = ...) -> str | None: ...
+def increment_lineno(node: AST, n: int = ...) -> AST: ...
+def iter_child_nodes(node: AST) -> Iterator[AST]: ...
+def iter_fields(node: AST) -> Iterator[typing.Tuple[str, Any]]: ...
+def literal_eval(node_or_string: str | AST) -> Any: ...
+def walk(node: AST) -> Iterator[AST]: ...
+
+PyCF_ONLY_AST: int
+
+# ast classes
+
+identifier = str
+
+class AST:
+ _attributes: typing.Tuple[str, ...]
+ _fields: typing.Tuple[str, ...]
+ def __init__(self, *args: Any, **kwargs: Any) -> None: ...
+
+class mod(AST): ...
+
+class Module(mod):
+ body: list[stmt]
+ type_ignores: list[TypeIgnore]
+
+class Interactive(mod):
+ body: list[stmt]
+
+class Expression(mod):
+ body: expr
+
+class FunctionType(mod):
+ argtypes: list[expr]
+ returns: expr
+
+class Suite(mod):
+ body: list[stmt]
+
+class stmt(AST):
+ lineno: int
+ col_offset: int
+
+class FunctionDef(stmt):
+ name: identifier
+ args: arguments
+ body: list[stmt]
+ decorator_list: list[expr]
+ returns: expr | None
+ type_comment: str | None
+
+class AsyncFunctionDef(stmt):
+ name: identifier
+ args: arguments
+ body: list[stmt]
+ decorator_list: list[expr]
+ returns: expr | None
+ type_comment: str | None
+
+class ClassDef(stmt):
+ name: identifier
+ bases: list[expr]
+ keywords: list[keyword]
+ body: list[stmt]
+ decorator_list: list[expr]
+
+class Return(stmt):
+ value: expr | None
+
+class Delete(stmt):
+ targets: list[expr]
+
+class Assign(stmt):
+ targets: list[expr]
+ value: expr
+ type_comment: str | None
+
+class AugAssign(stmt):
+ target: expr
+ op: operator
+ value: expr
+
+class AnnAssign(stmt):
+ target: expr
+ annotation: expr
+ value: expr | None
+ simple: int
+
+class For(stmt):
+ target: expr
+ iter: expr
+ body: list[stmt]
+ orelse: list[stmt]
+ type_comment: str | None
+
+class AsyncFor(stmt):
+ target: expr
+ iter: expr
+ body: list[stmt]
+ orelse: list[stmt]
+ type_comment: str | None
+
+class While(stmt):
+ test: expr
+ body: list[stmt]
+ orelse: list[stmt]
+
+class If(stmt):
+ test: expr
+ body: list[stmt]
+ orelse: list[stmt]
+
+class With(stmt):
+ items: list[withitem]
+ body: list[stmt]
+ type_comment: str | None
+
+class AsyncWith(stmt):
+ items: list[withitem]
+ body: list[stmt]
+ type_comment: str | None
+
+class Raise(stmt):
+ exc: expr | None
+ cause: expr | None
+
+class Try(stmt):
+ body: list[stmt]
+ handlers: list[ExceptHandler]
+ orelse: list[stmt]
+ finalbody: list[stmt]
+
+class Assert(stmt):
+ test: expr
+ msg: expr | None
+
+class Import(stmt):
+ names: list[alias]
+
+class ImportFrom(stmt):
+ module: identifier | None
+ names: list[alias]
+ level: int | None
+
+class Global(stmt):
+ names: list[identifier]
+
+class Nonlocal(stmt):
+ names: list[identifier]
+
+class Expr(stmt):
+ value: expr
+
+class Pass(stmt): ...
+class Break(stmt): ...
+class Continue(stmt): ...
+class slice(AST): ...
+
+_slice = slice # this lets us type the variable named 'slice' below
+
+class Slice(slice):
+ lower: expr | None
+ upper: expr | None
+ step: expr | None
+
+class ExtSlice(slice):
+ dims: list[slice]
+
+class Index(slice):
+ value: expr
+
+class expr(AST):
+ lineno: int
+ col_offset: int
+
+class BoolOp(expr):
+ op: boolop
+ values: list[expr]
+
+class BinOp(expr):
+ left: expr
+ op: operator
+ right: expr
+
+class UnaryOp(expr):
+ op: unaryop
+ operand: expr
+
+class Lambda(expr):
+ args: arguments
+ body: expr
+
+class IfExp(expr):
+ test: expr
+ body: expr
+ orelse: expr
+
+class Dict(expr):
+ keys: list[expr]
+ values: list[expr]
+
+class Set(expr):
+ elts: list[expr]
+
+class ListComp(expr):
+ elt: expr
+ generators: list[comprehension]
+
+class SetComp(expr):
+ elt: expr
+ generators: list[comprehension]
+
+class DictComp(expr):
+ key: expr
+ value: expr
+ generators: list[comprehension]
+
+class GeneratorExp(expr):
+ elt: expr
+ generators: list[comprehension]
+
+class Await(expr):
+ value: expr
+
+class Yield(expr):
+ value: expr | None
+
+class YieldFrom(expr):
+ value: expr
+
+class Compare(expr):
+ left: expr
+ ops: list[cmpop]
+ comparators: list[expr]
+
+class Call(expr):
+ func: expr
+ args: list[expr]
+ keywords: list[keyword]
+
+class Num(expr):
+ n: float | int | complex
+
+class Str(expr):
+ s: str
+ kind: str
+
+class FormattedValue(expr):
+ value: expr
+ conversion: int | None
+ format_spec: expr | None
+
+class JoinedStr(expr):
+ values: list[expr]
+
+class Bytes(expr):
+ s: bytes
+
+class NameConstant(expr):
+ value: Any
+
+class Ellipsis(expr): ...
+
+class Attribute(expr):
+ value: expr
+ attr: identifier
+ ctx: expr_context
+
+class Subscript(expr):
+ value: expr
+ slice: _slice
+ ctx: expr_context
+
+class Starred(expr):
+ value: expr
+ ctx: expr_context
+
+class Name(expr):
+ id: identifier
+ ctx: expr_context
+
+class List(expr):
+ elts: list[expr]
+ ctx: expr_context
+
+class Tuple(expr):
+ elts: list[expr]
+ ctx: expr_context
+
+class expr_context(AST): ...
+class AugLoad(expr_context): ...
+class AugStore(expr_context): ...
+class Del(expr_context): ...
+class Load(expr_context): ...
+class Param(expr_context): ...
+class Store(expr_context): ...
+class boolop(AST): ...
+class And(boolop): ...
+class Or(boolop): ...
+class operator(AST): ...
+class Add(operator): ...
+class BitAnd(operator): ...
+class BitOr(operator): ...
+class BitXor(operator): ...
+class Div(operator): ...
+class FloorDiv(operator): ...
+class LShift(operator): ...
+class Mod(operator): ...
+class Mult(operator): ...
+class MatMult(operator): ...
+class Pow(operator): ...
+class RShift(operator): ...
+class Sub(operator): ...
+class unaryop(AST): ...
+class Invert(unaryop): ...
+class Not(unaryop): ...
+class UAdd(unaryop): ...
+class USub(unaryop): ...
+class cmpop(AST): ...
+class Eq(cmpop): ...
+class Gt(cmpop): ...
+class GtE(cmpop): ...
+class In(cmpop): ...
+class Is(cmpop): ...
+class IsNot(cmpop): ...
+class Lt(cmpop): ...
+class LtE(cmpop): ...
+class NotEq(cmpop): ...
+class NotIn(cmpop): ...
+
+class comprehension(AST):
+ target: expr
+ iter: expr
+ ifs: list[expr]
+ is_async: int
+
+class ExceptHandler(AST):
+ type: expr | None
+ name: identifier | None
+ body: list[stmt]
+ lineno: int
+ col_offset: int
+
+class arguments(AST):
+ args: list[arg]
+ vararg: arg | None
+ kwonlyargs: list[arg]
+ kw_defaults: list[expr]
+ kwarg: arg | None
+ defaults: list[expr]
+
+class arg(AST):
+ arg: identifier
+ annotation: expr | None
+ lineno: int
+ col_offset: int
+ type_comment: str | None
+
+class keyword(AST):
+ arg: identifier | None
+ value: expr
+
+class alias(AST):
+ name: identifier
+ asname: identifier | None
+
+class withitem(AST):
+ context_expr: expr
+ optional_vars: expr | None
+
+class TypeIgnore(AST):
+ lineno: int