
    X-Ph
                        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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                  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 )RefInfoVisitortype_mapdict[Expression, Type]returnNonec                d    t                                                       || _        g | _        d S N)super__init__r   data)selfr   	__class__s     L/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/refinfo.pyr   zRefInfoVisitor.__init__   s+     -/			    exprr	   c                t    t                                          |           |                     |           d S r   )r   visit_name_exprrecord_ref_exprr!   r%   r"   s     r#   r'   zRefInfoVisitor.visit_name_expr#   s5    %%%T"""""r$   r   c                t    t                                          |           |                     |           d S r   )r   visit_member_exprr(   r)   s     r#   r+   z RefInfoVisitor.visit_member_expr'   s5    !!$'''T"""""r$   funcr   c                    |j         rB|j         D ]8}t          |t                    r!t                                          |           9d S t                                          |           d S r   )expanded
isinstancer   r   visit_func_def)r!   r,   itemr"   s      r#   r0   zRefInfoVisitor.visit_func_def+   ss    = 	) 1 1dG,, 1GG**40001 1 GG""4(((((r$   r
   c                   d }|j         t          k    rd|j        v r|j        }nt          |t                    rs| j                            |j                  }d }t          |j        t                    r|j        j	        }|rt          ||          }|r| d|j         }|s
d|j         }|*| j                            |j        |j        |d           d S d S )N.z*.)linecolumntarget)kindr   fullnamer/   r   r   getr%   r
   nodetype_fullnamenamer    appendr4   r5   )r!   r%   r8   typsymtfns         r#   r(   zRefInfoVisitor.record_ref_expr3   s    9!5!5}HHj)) 
	,-##DI..CC$)W-- %in 4#C-- 4"%33	33H ,+	++Idi4;RZ[[\\\\\  r$   )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+   r0   r(   __classcell__)r"   s   @r#   r   r      s        0 0 0 0 0 0
# # # # # ## # # # # #) ) ) ) ) )] ] ] ] ] ] ] ]r$   r   Nr>   r   r:   SymbolNode | Noner   
str | Nonec                   t          |           } t          | t                    r| j        j        S t          | t
                    rt          | j                  S t          | t                    rD| 	                                r0t          |t                    r|j        S t          | j                  S t          | t                    rt          t          |                     S t          | t                    rt          | j                  S d S r   )r   r/   r   typer8   r   r;   r1   r   is_type_objr   fallbackr   r   r   upper_bound)r>   r:   s     r#   r;   r;   F   s    
#

C#x   .x  	C	"	" 	.SX&&&	C	&	& .3??+<+< .dH%% 	!= S\***	C	#	# .^C00111	C	)	) .S_---4r$   treer   r   r   list[dict[str, object]]c                X    t          |          }|                     |           |j        S r   )r   acceptr    )rL   r   visitors      r#   get_undocumented_ref_info_jsonrQ   W   s+     X&&GKK<r$   r   )r>   r   r:   rE   r   rF   )rL   r   r   r   r   rM   )__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   r;   rQ    r$   r#   <module>rY      sv   R R " " " " " "
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 , + + + + + ' ' ' ' ' '                 &] &] &] &] &]% &] &] &]R    "     r$   