
    %^g
                        d Z ddlmZ ddlmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZmZmZmZmZmZmZ  G d de      Zddd
Z	 	 	 	 	 	 ddZy	)zLFind line-level reference information from a mypy AST (undocumented feature)    )annotations)	LDEF
ExpressionFuncDef
MemberExprMypyFileNameExprRefExpr
SymbolNodeTypeInfo)TraverserVisitor)tuple_fallback)FunctionLikeInstance	TupleTypeTypeTypeTypeTypeVarLikeTypeget_proper_typec                  L     e Zd Zd fdZd fdZd fdZd	 fdZd
dZ xZS )RefInfoVisitorc                >    t         |           || _        g | _        y N)super__init__type_mapdata)selfr   	__class__s     ,lib/python3.12/site-packages/mypy/refinfo.pyr   zRefInfoVisitor.__init__   s     -/	    c                F    t         |   |       | j                  |       y r   )r   visit_name_exprrecord_ref_exprr   exprr   s     r    r#   zRefInfoVisitor.visit_name_expr#   s    %T"r!   c                F    t         |   |       | j                  |       y r   )r   visit_member_exprr$   r%   s     r    r(   z RefInfoVisitor.visit_member_expr'   s    !$'T"r!   c                    |j                   r2|j                   D ]"  }t        |t              st        |   |       $ y t        |   |       y r   )expanded
isinstancer   r   visit_func_def)r   funcitemr   s      r    r,   zRefInfoVisitor.visit_func_def+   s>    ==dG,G*40 & G"4(r!   c                   d }|j                   t        k7  rd|j                  v r|j                  }nt        |t              r| j
                  j                  |j                        }d }t        |j                  t              r|j                  j                  }|rt        ||      }|r| d|j                   }|sd|j                   }|4| j                  j                  |j                  |j                  |d       y y )N.z*.)linecolumntarget)kindr   fullnamer+   r   r   getr&   r
   nodetype_fullnamenamer   appendr1   r2   )r   r&   r5   typsymtfns         r    r$   zRefInfoVisitor.record_ref_expr3   s    99!5}}Hj)--##DII.CC$))W-iinn#C-"%a		{3H		{+IIdii4;;RZ[\  r!   )r   dict[Expression, Type]returnNone)r&   r	   r?   r@   )r&   r   r?   r@   )r-   r   r?   r@   )r&   r
   r?   r@   )	__name__
__module____qualname__r   r#   r(   r,   r$   __classcell__)r   s   @r    r   r      s    0
##)]r!   r   Nc                   t        |       } t        | t              r| j                  j                  S t        | t
              rt        | j                        S t        | t              rA| j                         r1t        |t              r|j                  S t        | j                        S t        | t              rt        t        |             S t        | t              rt        | j                        S y r   )r   r+   r   typer5   r   r8   r.   r   is_type_objr   fallbackr   r   r   upper_bound)r;   r7   s     r    r8   r8   F   s    
#
C#x xx   	C	"SXX&&	C	&3??+<dH%== S\\**	C	#^C011	C	)S__--r!   c                R    t        |      }| j                  |       |j                  S r   )r   acceptr   )treer   visitors      r    get_undocumented_ref_info_jsonrN   W   s$     X&GKK<<r!   r   )r;   r   r7   zSymbolNode | Noner?   z
str | None)rL   r   r   r>   r?   zlist[dict[str, object]])__doc__
__future__r   
mypy.nodesr   r   r   r   r   r	   r
   r   r   mypy.traverserr   mypy.typeopsr   
mypy.typesr   r   r   r   r   r   r   r   r8   rN    r!   r    <module>rV      sc    R "
 
 
 , '  &]% &]R"
4r!   