
    %^gt>                    \   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Z, G d	 d
e+d         Z- G d de&d         Z.	 	 	 	 	 	 	 	 ddZ/	 	 	 	 	 	 	 	 ddZ0dZ1de2d<   ddZ3ddZ4y)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)NodeVisitorc                h    t        ||      }|j                  | j                  | j                         y N)	NodeFixervisit_symbol_tablenamesfullname)treemodulesallow_missing
node_fixers       *lib/python3.12/site-packages/mypy/fixup.pyfixup_moduler3   2   s&    7M2J!!$**dmm<    c                  |    e Zd ZU dZded<   ddZddZddZddZddZ	dd	Z
dd
ZddZddZddZddZddZy)r*   NzTypeInfo | Nonecurrent_infoc                V    || _         || _        t        | j                   |      | _        y r)   )r/   r0   	TypeFixer
type_fixerselfr/   r0   s      r2   __init__zNodeFixer.__init__;   s#    *#DLL-@r4   c                   | j                   }	 || _         |j                  r|j                  j                  |        |j                  r&| j	                  |j                  |j
                         |j                  r,|j                  D ]  }|j                  | j                          |j                  r,|j                  D ]  }|j                  | j                          |j                  r|j                  j                  | j                         |j                  |j                         |j                  rwt        |j                  j                        |j                  _        t        |j                  j                        D ]'  \  }}t!        |t"              s||j                  _        ) |j&                  r|j&                  j                  | j                         |j)                  |j&                         |j                  rwt        |j                  j                        |j                  _        t        |j                  j                        D ]'  \  }}t!        |t"              s||j                  _        ) |j*                  r%|j*                  j                  | j                         |j,                  r%|j,                  j                  | j                         |j.                  r|j.                  j                  | j                         t1        |g       }||j.                  j2                  j                  vr/|j.                  j2                  j                  j5                  |       |j6                  rF|j6                  D cg c]$  }t9        | j:                  || j<                        & c}|_        d |_        || _         y c c}w # || _         w xY wNr0   ) r6   defnacceptr,   r+   r-   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lookup_fully_qualified_typeinfor/   r0   mro)	r;   info	save_infobasepitinstancenames	            r2   visit_type_infozNodeFixer.visit_type_infoA   s   %%	0	* $Dyy		  &zz''

DMMBzz JJDKK0 '}}AHHT__- '&&t7&&t7%%59$)):M:M5ND&&2 )$))*=*= >1%a)9:BCD..? !? ""##**4??;**4+>+>?%%59$)):M:M5ND&&2 )$))*=*= >1%a)9:BCD..? !? &&''..t?""##**4??;  ''8#D"- 4#3#3#8#8#A#AA$$))2299(C~~
 !%	 !/ 4d$:L:L !/	 "& )D !*Ds,   FO CO )DO )O/O O 	Oc                   t        |j                               D ]D  \  }}|j                  }|d |_        || j                  v r| j                  |   |_        ?t        || j                  | j                         }|E||u rt        |dz         |_        ||j                  J |dz   |z   |f       |j                  |_        | j                  s
J d|        t        | j                        |_        t        |j                  t              r| j                  |j                         |j                  |j                  j                  |        :J d|d|         y )Nraise_on_missingz@deleted.zCould not find cross-ref zUnexpected empty node z: )rG   items	cross_refr/   noder   r0   r   missing_inforK   r   r_   rA   )r;   symtabtable_fullnamekeyvaluere   stnodes          r2   r+   zNodeFixer.visit_symbol_tablev   s@   v||~.JCI$"&,!%i!8EJ3!4<<dFXFXBXF )!U? *-S:-=)>EJ#);;#:c^c=QTW=WYb<cc#:)/EJ!//M(A)&MMu &2$,,%?
ejj(3((4ZZ+JJ%%d+K$:3'E7"KK5Q /r4   c                    | j                   | j                   |_        |j                  &|j                  j                  | j                         y y r)   r6   rW   rR   rA   r9   )r;   funcs     r2   visit_func_defzNodeFixer.visit_func_def   s@    ())DI99 IIT__- !r4   c                4   | j                   | j                   |_        |j                  r%|j                  j                  | j                         |j
                  D ]  }|j                  |         |j                  r|j                  j                  |        y y r)   )r6   rW   rR   rA   r9   rd   impl)r;   oitems      r2   visit_overloaded_func_defz#NodeFixer.visit_overloaded_func_def   sl    (&&AF66FFMM$//*GGDKK 66FFMM$ r4   c                2   | j                   | j                   |j                  _        |j                  r|j                  j	                  |        |j                  r|j                  j	                  |        |j
                  D ]  }|j	                  |         y r)   )r6   varrW   ro   rA   
decorators)r;   drf   s      r2   visit_decoratorzNodeFixer.visit_decorator   sg    (**AEEJ66FFMM$55EELLLLDKK !r4   c                \    |j                   D ]  }|j                  | j                          y r)   )rH   rA   r9   )r;   cvs      r2   visit_class_defzNodeFixer.visit_class_def   s     AHHT__% r4   c                    |j                   D ]  }|j                  | j                          |j                  j                  | j                         |j                  j                  | j                         y r)   )valuesrA   r9   upper_bounddefault)r;   tvrk   s      r2   visit_type_var_exprzNodeFixer.visit_type_var_expr   sL    YYELL) 
doo.


$//*r4   c                    |j                   j                  | j                         |j                  j                  | j                         y r)   )r   rA   r9   r   r;   rZ   s     r2   visit_paramspec_exprzNodeFixer.visit_paramspec_expr   s.    	T__-			)r4   c                    |j                   j                  | j                         |j                  j                  | j                         |j                  j                  | j                         y r)   )r   rA   r9   tuple_fallbackr   )r;   r   s     r2   visit_type_var_tuple_exprz#NodeFixer.visit_type_var_tuple_expr   sF    
doo.
  1


$//*r4   c                    | j                   | j                   |_        |j                  &|j                  j                  | j                         y y r)   rn   )r;   r}   s     r2   	visit_varzNodeFixer.visit_var   s>    (&&AF66FFMM$//* r4   c                    |j                   j                  | j                         |j                  D ]  }|j                  | j                          y r)   )targetrA   r9   rI   )r;   ar}   s      r2   visit_type_aliaszNodeFixer.visit_type_alias   s4    	(AHHT__% r4   r/   dict[str, MypyFile]r0   boolreturnNone)rW   r   r   r   )rh   r   ri   strr   r   )ro   r
   r   r   )rs   r   r   r   )ry   r	   r   r   )r|   r   r   r   )r   r   r   r   )rZ   r   r   r   )r   r   r   r   )r}   r   r   r   )r   r   r   r   )__name__
__module____qualname__r6   __annotations__r<   r_   r+   rp   ru   rz   r~   r   r   r   r   r    r4   r2   r*   r*   8   sL    $(L/(A2*j*LX. &+*+
+&r4   r*   Nc                      e Zd ZddZddZddZddZddZddZddZ	ddZ
dd	Zdd
ZddZddZddZd dZd!dZd"dZd#dZd$dZd%dZd&dZd'dZd(dZy))r8   c                     || _         || _        y r)   )r/   r0   r:   s      r2   r<   zTypeFixer.__init__   s    *r4   c                   |j                   }|y d |_         t        | j                  || j                        |_        |j                  j
                  D ]&  }|j                  t        u s|j                  |        ( |j                  D ]  }|j                  |         |j                  |j                  j                  |        |j                  r;|j                  j                  j                         D ]  }|j                  |         y y r>   )type_refrU   r/   r0   rR   rB   r   rA   argslast_known_valueextra_attrsattrsr   )r;   instr   rY   r   r}   s         r2   visit_instancezTypeFixer.visit_instance   s    ==3LL($2D2D
	
 IIOODyyI%D! $ AHHTN   ,!!((.%%++224 5 r4   c                    |j                   }|y d |_         t        | j                  || j                        |_        |j
                  D ]  }|j                  |         y r>   )r   lookup_fully_qualified_aliasr/   r0   aliasr   rA   )r;   r\   r   r   s       r2   visit_type_alias_typezTypeFixer.visit_type_alias_type   sS    ::
.LL($2D2D
 AHHTN r4   c                     y r)   r   r;   rs   s     r2   	visit_anyzTypeFixer.visit_any      r4   c                   |j                   r|j                   j                  |        |j                  D ]  }||j                  |         |j                  |j                  j                  |        |j                  D ]  }|j                  |         |j
                  D ]  }|s|j                  |         |j                  |j                  j                  |        |j                  |j                  j                  |        y y r)   )fallbackrA   	arg_typesret_type	variables
bound_args
type_guardtype_is)r;   ctargtr}   args        r2   visit_callable_typezTypeFixer.visit_callable_type  s    ;;KKt$LLDD! ! ;;"KKt$AHHTN ==C

4  ! ==$MM  &::!JJd# "r4   c                H    |j                   D ]  }|j                  |         y r)   rd   rA   )r;   r\   r   s      r2   visit_overloadedzTypeFixer.visit_overloaded  s    ''BIIdO r4   c                    t        d|      NzShouldn't get hereRuntimeErrorr   s     r2   visit_erased_typezTypeFixer.visit_erased_type  s    /33r4   c                     y r)   r   r   s     r2   visit_deleted_typezTypeFixer.visit_deleted_type  r   r4   c                     y r)   r   r   s     r2   visit_none_typezTypeFixer.visit_none_type"  r   r4   c                     y r)   r   r   s     r2   visit_uninhabited_typez TypeFixer.visit_uninhabited_type%  r   r4   c                    t        d|      r   r   r   s     r2   visit_partial_typezTypeFixer.visit_partial_type(  s    /33r4   c                    |j                   r"|j                   D ]  }|j                  |         |j                  |j                  j                  |        y y r)   )rd   rA   partial_fallback)r;   ttits      r2   visit_tuple_typezTypeFixer.visit_tuple_type+  sG    88hh		$ *&&t, +r4   c                   |j                   r0|j                   j                         D ]  }|j                  |         |j                  {|j                  j                  It        |j                  j                  | j                  | j                         	 d|j                  _        |j                  j                  |        y y )Nra   ztyping._TypedDict)rd   r   rA   r   r   r   r/   r0   )r;   tdtr   s      r2   visit_typeddict_typezTypeFixer.visit_typeddict_type2  s    99ii&&(		$ )<<#||$$0*---1-?-?)?
  -@CLL)LL% $r4   c                :    |j                   j                  |        y r)   )r   rA   )r;   lts     r2   visit_literal_typezTypeFixer.visit_literal_typeE  s    
4 r4   c                    |j                   r"|j                   D ]  }|j                  |         |j                  j                  |        |j                  j                  |        y r)   )r   rA   r   r   )r;   tvtvts      r2   visit_type_varzTypeFixer.visit_type_varH  sF    ::jj		$ !t$4 r4   c                p    |j                   j                  |        |j                  j                  |        y r)   )r   rA   r   r   s     r2   visit_param_speczTypeFixer.visit_param_specO  s&    	T"			r4   c                    |j                   j                  |        |j                  j                  |        |j                  j                  |        y r)   )r   rA   r   r   r;   r\   s     r2   visit_type_var_tuplezTypeFixer.visit_type_var_tupleS  s:    	%	T"			r4   c                :    |j                   j                  |        y r)   )rR   rA   )r;   us     r2   visit_unpack_typezTypeFixer.visit_unpack_typeX      	dr4   c                    |j                   D ]  }||j                  |         |j                  D ]  }|j                  |         y r)   )r   rA   r   )r;   rZ   r   rw   s       r2   visit_parameterszTypeFixer.visit_parameters[  s>    KKDD!   ;;CJJt r4   c                H    |j                   D ]  }|j                  |         y r)   )r   rA   )r;   rs   r   s      r2   visit_unbound_typezTypeFixer.visit_unbound_typeb  s    AHHTN r4   c                b    |j                   r#|j                   D ]  }|j                  |         y y r)   r   )r;   utr   s      r2   visit_union_typezTypeFixer.visit_union_typef  s'    88hh		$  r4   c                :    |j                   j                  |        y r)   )rt   rA   r   s     r2   visit_type_typezTypeFixer.visit_type_typek  r   r4   Nr   )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   )rZ   r   r   r   )r\   r!   r   r   )r   r&   r   r   )rZ   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   r4   r2   r8   r8      sp    +,	$&44-&&!!
 
r4   r8   c                   t        || |       }|r|j                  nd }t        |t              r|S |s@J dj	                  t        |      j                  |r|j                               d             t        |       S )Nra   zCShould never get here in normal mode, got {}:{} instead of TypeInfo )	r   rf   rK   r   formatrR   r   r-   rg   )r/   r^   r0   rl   rf   s        r2   rU   rU   o  s     $D'DUVF 6;;dD$! 	
PWWJ$
	
<>
	
 G$$r4   c                  t        || |       }|r|j                  nd }t        |t              r|S t        |t              rs|j
                  r|j
                  S |j                  rt        j                  |      }n0|j                  rt        j                  |      }n|sJ t               S ||_        |S |s@J dj                  t        |      j                  |r|j                               d             t               S )Nra   zDShould never get here in normal mode, got {}:{} instead of TypeAliasr   )r   rf   rK   r   r   rF   rD   from_tuple_typerM   from_typeddict_typemissing_aliasr   rR   r   r-   )r/   r^   r0   rl   rf   r   s         r2   r   r     s     $D'DUVF 6;;dD$	"	D(	#%%%??--d3E  11$7E  = ?"" 	
QXXJ$
	
<>
	
 r4   z@<missing {}: *should* have gone away during fine-grained update>r   _SUGGESTIONc                    t         j                  d      }t        |t        g             }||_        t        t               |d      }t        | dd      }t        |g       g|_	        ||g|_
        |S )NrW   z	<missing>zbuiltins.objectFr?   )r   r   r   r   r-   r   r   rU   r   rB   rV   )r/   
suggestion	dummy_defrW   obj_types        r2   rg   rg     sl    ##F+JU2Y/I#IKM9k:D.w8IY^_H8R()DJhDHKr4   c                 x    t         j                  d      } t        t        t        j
                        | dd      S )Nr   )linecolumn)r   r   r   r   r   special_form)r   s    r2   r   r     s/    ##G,JWY334jrRTUUr4   )r.   r   r/   r   r0   r   r   r   )r/   r   r^   r   r0   r   r   r   )r/   r   r^   r   r0   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'   r3   r*   r8   rU   r   r   r   rg   r   r   r4   r2   <module>r     s    2 "  .        * %=`&D! `&FQD! Qh% %(+%?C%%" (+?C< XU W	Vr4   