o
    2gt>                     @  s4  U d Z ddlmZ ddlmZm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mZmZmZmZ ddlmZmZmZmZmZmZmZmZmZm Z 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dZ,G dd de+d Z-G dd de&d Z.d'ddZ/d(ddZ0dZ1d e2d!< d)d"d#Z3d*d$d%Z4dS )+z,Fix up various things after deserialization.    )annotations)AnyFinal)lookup_fully_qualified)BlockClassDef	DecoratorFuncDefMypyFileOverloadedFuncDefParamSpecExprSymbolTable	TypeAliasTypeInfoTypeVarExprTypeVarTupleExprVar)	NOT_READYAnyTypeCallableTypeInstanceLiteralType
Overloaded
ParametersParamSpecType	TupleTypeTypeAliasTypeTypedDictType	TypeOfAnyTypeTypeTypeVarTupleTypeTypeVarTypeTypeVisitorUnboundType	UnionType
UnpackType)NodeVisitortreer
   modulesdict[str, MypyFile]allow_missingboolreturnNonec                 C  s   t ||}|| j| j d S N)	NodeFixervisit_symbol_tablenamesfullname)r'   r(   r*   
node_fixer r4   B/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/fixup.pyfixup_module2   s   
r6   c                   @  s   e Zd ZU dZded< d9d
dZd:ddZd;ddZd<ddZd=ddZ	d>d d!Z
d?d$d%Zd@d(d)ZdAd,d-ZdBd/d0ZdCd3d4ZdDd7d8ZdS )Er/   NzTypeInfo | Nonecurrent_infor(   r)   r*   r+   r,   r-   c                 C  s   || _ || _t| j || _d S r.   )r(   r*   	TypeFixer
type_fixerselfr(   r*   r4   r4   r5   __init__;   s   zNodeFixer.__init__infor   c                   s   j }z| _ |jr|j  |jr |j|j |jr*|jD ]}| j q!|jr9|jD ]}| j q0|j	rh|j	 j |
|j	 |jrht|jj|j_t|jjD ]\}}t|trg||j_qZ|jr|j j ||j |jrt|jj|j_t|jjD ]\}}t|tr||j_q|jr|j j |jr|j j |jr|j j t|g }||jjjvr|jjj| |jr fdd|jD |_d |_W | _ d S W | _ d S | _ w )Nc                   s   g | ]}t  j| jd qS )r*   )lookup_fully_qualified_typeinfor(   r*   ).0namer;   r4   r5   
<listcomp>k   s    
z-NodeFixer.visit_type_info.<locals>.<listcomp>)r7   defnacceptr1   r0   r2   basesr9   _promote
tuple_typeupdate_tuple_typespecial_aliaslist	type_varsalias_tvars	enumerate
isinstancer    tvar_tuple_indextypeddict_typeupdate_typeddict_typedeclared_metaclassmetaclass_typealt_promoter   typeappend	_mro_refsmro)r;   r=   	save_infobasepitinstancer4   rB   r5   visit_type_infoA   s`   






	zNodeFixer.visit_type_infosymtabr   table_fullnamestrc                 C  s  t | D ]{\}}|j}|d ur_d |_|| jv r | j| |_qt|| j| j d}|d urN||u r:t|d |_q|jd usIJ |d | |f|j|_q| jsXJ d| t| j|_qt	|jt
rl| |j q|jd urx|j|  qJ d|d| d S )Nraise_on_missingz@deleted.FzCould not find cross-ref zUnexpected empty node z: )rK   items	cross_refr(   noder   r*   r   missing_inforO   r   r`   rE   )r;   ra   rb   keyvaluerh   stnoder4   r4   r5   r0   v   s.   


zNodeFixer.visit_symbol_tablefuncr	   c                 C  2   | j d ur	| j |_|jd ur|j| j d S d S r.   r7   r=   rV   rE   r9   )r;   rn   r4   r4   r5   visit_func_def   
   

zNodeFixer.visit_func_defor   c                 C  sV   | j d ur	| j |_|jr|j| j |jD ]}||  q|jr)|j|  d S d S r.   )r7   r=   rV   rE   r9   rg   impl)r;   rs   itemr4   r4   r5   visit_overloaded_func_def   s   

z#NodeFixer.visit_overloaded_func_defdr   c                 C  sR   | j d ur
| j |j_|jr|j|  |jr|j|  |jD ]}||  qd S r.   )r7   varr=   rn   rE   
decorators)r;   rw   ri   r4   r4   r5   visit_decorator   s   


zNodeFixer.visit_decoratorcr   c                 C  s   |j D ]}|| j qd S r.   )rL   rE   r9   )r;   r{   vr4   r4   r5   visit_class_def   s   
zNodeFixer.visit_class_deftvr   c                 C  s8   |j D ]}|| j q|j| j |j| j d S r.   )valuesrE   r9   upper_bounddefault)r;   r~   rl   r4   r4   r5   visit_type_var_expr   s   
zNodeFixer.visit_type_var_exprr\   r   c                 C  s    |j | j |j| j d S r.   )r   rE   r9   r   r;   r\   r4   r4   r5   visit_paramspec_expr   s   zNodeFixer.visit_paramspec_exprr   c                 C  s.   |j | j |j| j |j| j d S r.   )r   rE   r9   tuple_fallbackr   )r;   r~   r4   r4   r5   visit_type_var_tuple_expr   s   z#NodeFixer.visit_type_var_tuple_exprr|   r   c                 C  ro   r.   rp   )r;   r|   r4   r4   r5   	visit_var   rr   zNodeFixer.visit_varar   c                 C  s*   |j | j |jD ]}|| j q
d S r.   )targetrE   r9   rM   )r;   r   r|   r4   r4   r5   visit_type_alias   s   
zNodeFixer.visit_type_aliasr(   r)   r*   r+   r,   r-   )r=   r   r,   r-   )ra   r   rb   rc   r,   r-   )rn   r	   r,   r-   )rs   r   r,   r-   )rw   r   r,   r-   )r{   r   r,   r-   )r~   r   r,   r-   )r\   r   r,   r-   )r~   r   r,   r-   )r|   r   r,   r-   )r   r   r,   r-   )__name__
__module____qualname__r7   __annotations__r<   r`   r0   rq   rv   rz   r}   r   r   r   r   r   r4   r4   r4   r5   r/   8   s   
 


5
,








r/   Nc                   @  s   e Zd ZdOddZdPddZdQddZdRddZdSddZdTddZdRddZ	dRddZ
dRd d!ZdRd"d#ZdRd$d%ZdUd(d)ZdVd,d-ZdWd0d1ZdXd4d5ZdYd8d9ZdZd;d<Zd[d?d@Zd\dBdCZd]dEdFZd^dIdJZd_dLdMZdNS )`r8   r(   r)   r*   r+   r,   r-   c                 C  s   || _ || _d S r.   )r(   r*   r:   r4   r4   r5   r<      s   
zTypeFixer.__init__instr   c                 C  s   |j }|d u r	d S d |_ t| j|| jd|_|jjD ]}|jtu r&||  q|jD ]}||  q*|j	d ur=|j	|  |j
rN|j
j D ]	}||  qFd S d S Nr>   )type_refr?   r(   r*   rV   rF   r   rE   argslast_known_valueextra_attrsattrsr   )r;   r   r   r[   r   r|   r4   r4   r5   visit_instance   s(   




zTypeFixer.visit_instancer^   r   c                 C  sF   |j }|d u r	d S d |_ t| j|| jd|_|jD ]}||  qd S r   )r   lookup_fully_qualified_aliasr(   r*   aliasr   rE   )r;   r^   r   r   r4   r4   r5   visit_type_alias_type   s   

zTypeFixer.visit_type_alias_typers   r   c                 C     d S r.   r4   r;   rs   r4   r4   r5   	visit_any     zTypeFixer.visit_anyctr   c                 C  s   |j r	|j |  |jD ]}|d ur||  q|jd ur#|j|  |jD ]}||  q&|jD ]	}|r:||  q1|jd urF|j|  |jd urS|j|  d S d S r.   )fallbackrE   	arg_typesret_type	variables
bound_args
type_guardtype_is)r;   r   argtr|   argr4   r4   r5   visit_callable_type  s&   







zTypeFixer.visit_callable_typer   c                 C     |j D ]}||  qd S r.   rg   rE   )r;   r^   r   r4   r4   r5   visit_overloaded     
zTypeFixer.visit_overloadedc                 C  
   t d|NzShouldn't get hereRuntimeErrorr   r4   r4   r5   visit_erased_type  s   
zTypeFixer.visit_erased_typec                 C  r   r.   r4   r   r4   r4   r5   visit_deleted_type  r   zTypeFixer.visit_deleted_typec                 C  r   r.   r4   r   r4   r4   r5   visit_none_type"  r   zTypeFixer.visit_none_typec                 C  r   r.   r4   r   r4   r4   r5   visit_uninhabited_type%  r   z TypeFixer.visit_uninhabited_typec                 C  r   r   r   r   r4   r4   r5   visit_partial_type(  s   
zTypeFixer.visit_partial_typettr   c                 C  s:   |j r|j D ]}||  q|jd ur|j|  d S d S r.   )rg   rE   partial_fallback)r;   r   itr4   r4   r5   visit_tuple_type+  s   

zTypeFixer.visit_tuple_typetdtr   c                 C  sn   |j r|j  D ]}||  q|jd ur5|jjd ur-t|jj| j| j dd u r-d|j_|j|  d S d S )Nrd   ztyping._TypedDict)rg   r   rE   r   r   r   r(   r*   )r;   r   r   r4   r4   r5   visit_typeddict_type2  s   
	zTypeFixer.visit_typeddict_typeltr   c                 C     |j |  d S r.   )r   rE   )r;   r   r4   r4   r5   visit_literal_typeE     zTypeFixer.visit_literal_typetvtr!   c                 C  s8   |j r|j D ]}||  q|j|  |j|  d S r.   )r   rE   r   r   )r;   r   vtr4   r4   r5   visit_type_varH  s
   
zTypeFixer.visit_type_varr\   r   c                 C  s   |j |  |j|  d S r.   )r   rE   r   r   r4   r4   r5   visit_param_specO  s   zTypeFixer.visit_param_specr    c                 C  s(   |j |  |j|  |j|  d S r.   )r   rE   r   r   r;   r^   r4   r4   r5   visit_type_var_tupleS  s   zTypeFixer.visit_type_var_tupleur%   c                 C  r   r.   )rV   rE   )r;   r   r4   r4   r5   visit_unpack_typeX  r   zTypeFixer.visit_unpack_typer   c                 C  s8   |j D ]}|d ur||  q|jD ]}||  qd S r.   )r   rE   r   )r;   r\   r   rx   r4   r4   r5   visit_parameters[  s   


zTypeFixer.visit_parametersr#   c                 C  r   r.   )r   rE   )r;   rs   r   r4   r4   r5   visit_unbound_typeb  r   zTypeFixer.visit_unbound_typeutr$   c                 C  s$   |j r|j D ]	}||  qd S d S r.   r   )r;   r   r   r4   r4   r5   visit_union_typef  s
   
zTypeFixer.visit_union_typer   c                 C  r   r.   )ru   rE   r   r4   r4   r5   visit_type_typek  r   zTypeFixer.visit_type_typeNr   )r   r   r,   r-   )r^   r   r,   r-   )rs   r   r,   r-   )r   r   r,   r-   )r^   r   r,   r-   )r   r   r,   r-   )r   r   r,   r-   )r   r   r,   r-   )r   r!   r,   r-   )r\   r   r,   r-   )r^   r    r,   r-   )r   r%   r,   r-   )r\   r   r,   r-   )rs   r#   r,   r-   )r   r$   r,   r-   )r^   r   r,   r-   )r   r   r   r<   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r4   r4   r5   r8      s.    




















r8   rA   rc   r   c                C  s\   t || | d}|r|jnd }t|tr|S |s*J dt|j|r&|jdt| S )Nrd   zCShould never get here in normal mode, got {}:{} instead of TypeInfo )	r   ri   rO   r   formatrV   r   r2   rj   )r(   rA   r*   rm   ri   r4   r4   r5   r?   o  s   
r?   r   c                C  s   t || | d}|r|jnd }t|tr|S t|tr?|jr!|jS |jr*t|}n|jr3t	|}n|s7J t
 S ||_|S |sSJ dt|j|rO|jdt
 S )Nrd   zDShould never get here in normal mode, got {}:{} instead of TypeAliasr   )r   ri   rO   r   r   rJ   rH   from_tuple_typerQ   from_typeddict_typemissing_aliasr   rV   r   r2   )r(   rA   r*   rm   ri   r   r4   r4   r5   r     s2   

r   z@<missing {}: *should* have gone away during fine-grained update>r   _SUGGESTIONc                 C  sV   t d}t|tg }||_tt |d}t| ddd}t|g g|_	||g|_
|S )Nr=   z	<missing>zbuiltins.objectFr>   )r   r   r   r   r2   r   r   r?   r   rF   rY   )r(   
suggestion	dummy_defr=   obj_typer4   r4   r5   rj     s   

rj   c                  C  s    t d} tttj| dddS )Nr   )linecolumn)r   r   r   r   r   special_form)r   r4   r4   r5   r     s   
r   )r'   r
   r(   r)   r*   r+   r,   r-   )r(   r)   rA   rc   r*   r+   r,   r   )r(   r)   rA   rc   r*   r+   r,   r   )r(   r)   r,   r   )r,   r   )5__doc__
__future__r   typingr   r   mypy.lookupr   
mypy.nodesr   r   r   r	   r
   r   r   r   r   r   r   r   r   
mypy.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   mypy.visitorr&   r6   r/   r8   r?   r   r   r   rj   r   r4   r4   r4   r5   <module>   s"    <T
 $ 


