from __future__ import annotations

from typing import Any, Optional

from paddle.utils import gast

STATIC_CONVERT_VAR_SHAPE_SUFFIX: str

def create_convert_shape_node(var_shape_node: Any, slice_node: Optional[Any] = ..., in_control_flow: bool = ...): ...
def create_choose_shape_node(attr_shape_name: Any, api_shape_name: Any, slice_node: Optional[Any] = ...): ...

class ShapeAttributeTransformer(gast.NodeTransformer):
    def visit_Attribute(self, node: Any): ...

class TensorShapeTransformer(gast.NodeTransformer):
    wrapper_root: Any = ...
    root: Any = ...
    name_to_var_shape: Any = ...
    static_analysis_visitor: Any = ...
    node_to_wrapper_map: Any = ...
    scope_var_type_dict: Any = ...
    def __init__(self, wrapper_root: Any) -> None: ...
    def transform(self) -> None: ...
    def visit_Assign(self, node: Any): ...
    def visit_Subscript(self, node: Any): ...
    def visit_Attribute(self, node: Any): ...
    def visit_Name(self, node: Any): ...
    def visit_Call(self, node: Any): ...
    def visit_If(self, node: Any): ...
    def visit_While(self, node: Any): ...
    def visit_For(self, node: Any): ...
