o
    2g
                     @  s   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 deZddddZdddZd	S )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                      sR   e Zd Zd fddZd fd	d
Zd fddZd fddZdddZ  ZS )RefInfoVisitortype_mapdict[Expression, Type]returnNonec                   s   t    || _g | _d S N)super__init__r   data)selfr   	__class__ D/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/refinfo.pyr      s   

zRefInfoVisitor.__init__exprr   c                      t  | | | d S r   )r   visit_name_exprrecord_ref_exprr   r#   r   r!   r"   r%   #      zRefInfoVisitor.visit_name_exprr   c                   r$   r   )r   visit_member_exprr&   r'   r   r!   r"   r)   '   r(   z RefInfoVisitor.visit_member_exprfuncr   c                   s<   |j r|j D ]}t|trt | qd S t | d S r   )expanded
isinstancer   r   visit_func_def)r   r*   itemr   r!   r"   r-   +   s   

zRefInfoVisitor.visit_func_defr	   c                 C  s   d }|j tkrd|jv r|j}n1t|trA| j|j}d }t|jtr(|jj	}|r9t
||}|r9| d|j }|sAd|j }|d urS| j|j|j|d d S d S )N.z*.)linecolumntarget)kindr   fullnamer,   r   r   getr#   r	   nodetype_fullnamenamer   appendr0   r1   )r   r#   r4   typsymtfnr!   r!   r"   r&   3   s"   

zRefInfoVisitor.record_ref_expr)r   r   r   r   )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!   r!   r   r"   r      s    r   Nr:   r   r6   SymbolNode | Noner   
str | Nonec                 C  s   t | } t| tr| jjS t| trt| jS t| tr-| 	 r-t|t
r(|jS t| jS t| tr8tt| S t| trBt| jS d S r   )r   r,   r   typer4   r   r7   r.   r   is_type_objr   fallbackr   r   r   upper_bound)r:   r6   r!   r!   r"   r7   F   s   







r7   treer   r   r   list[dict[str, object]]c                 C  s   t |}| | |jS r   )r   acceptr   )rG   r   visitorr!   r!   r"   get_undocumented_ref_info_jsonW   s   
rK   r   )r:   r   r6   rA   r   rB   )rG   r   r   r   r   rH   )__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   r7   rK   r!   r!   r!   r"   <module>   s    ,$)