from __future__ import annotations

from typing import Any

from paddle.utils import gast

class NameVisitor(gast.NodeVisitor):
    current_seen_vars: Any = ...
    current_loop: Any = ...
    nodes_with_scope: Any = ...
    blacklist_names: Any = ...
    before_loop_body_vars: Any = ...
    in_loop_vars: Any = ...
    write_in_loop: Any = ...
    condition_vars: Any = ...
    in_condition: bool = ...
    type_vars: Any = ...
    static_analysis_visitor: Any = ...
    node_to_wrapper_map: Any = ...
    def __init__(self, root_node: Any) -> None: ...
    def get_loop_var_names(self, node: Any): ...
    def visit_Name(self, node: Any) -> None: ...
    def visit_FunctionDef(self, node: Any) -> None: ...
    def visit(self, node: Any): ...
    def visit_Attribute(self, node: Any) -> None: ...
    def visit_For(self, node: Any) -> None: ...
    def visit_While(self, node: Any) -> None: ...
    def visit_Call(self, node: Any) -> None: ...

class LoopTransformer(gast.NodeTransformer):
    wrapper_root: Any = ...
    root: Any = ...
    def __init__(self, wrapper_root: Any) -> None: ...
    name_visitor: Any = ...
    def transform(self) -> None: ...
    def visit(self, node: Any): ...
    def replace_stmt_list(self, body_list: Any) -> None: ...
    def get_for_stmt_nodes(self, node: Any): ...
    def get_while_stmt_nodes(self, node: Any): ...
