
    6 f!                    .   d Z ddlmZ ddlZddlZddlmZ ddl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mZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z"m#Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* ddl+m,Z,m-Z- dZ.dZ/dZ0dZ1 G d de#          Z2dS )zETest cases for AST merge (used for fine-grained incremental checking)    )annotationsN)build)BuildResult)CompileError)BuildSource)	UNBOUND_IMPORTED
ExpressionMypyFileNodeSymbolTableSymbolTableNodeTypeInfoTypeVarExprVar)Options)get_subexpressions)FineGrainedBuildManager)StrConv)test_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalnormalize_error_messagesparse_options)TypeTypeStrVisitor)IdMapper
short_typeSYMTABLEz	 TYPEINFOTYPESASTc                       e Zd ZdgZd* fdZd+dZd,dZd-dZd.dZd/dZ	d/dZ
d0dZd1dZd/d Zd2d"Zd3d%Zd4d&Zd5d)Z xZS )6ASTMergeSuitez
merge.testreturnNonec                   t                                                       t          dt                                | _        | j        j        J | j        j        | _        t          | j        t                                | _        d S )NT)show_idsoptions)r(   )supersetupr   r   str_conv	id_mapperr   type_str_conv)self	__class__s    I/var/www/equiseq/venv/lib/python3.11/site-packages/mypy/test/testmerge.pyr*   zASTMergeSuite.setup+   sj    wyyAAA}&222#'=#:+DNGIINNN    testcaser   c           	        |j         }|                    d          rt          }nA|                    d          rt          }n$|                    d          rt          }nt
          }d                    |j                  }|                     ||          }|
J d            |j	        j
                                         t          |          }g }|j        r|                    |j                   t          j                            t"          d          }t%          j        t          j                            t"          d          |           |                    |                     |||j                             t-          |j	        j        d                   }	|                    d	           |                     |d|          \  }
}|                    |                     |||j                             |	D ]}t5          |t6                    r||vsJ |j        rt;          |          }t=          |j        |d
|j          d|j!         d           d S )N	_symtable	_typeinfo_types
z3cases where CompileError occurred should not be runz	target.pyztarget.py.nexttargetz==>zInvalid output (z, line ))"nameendswithr   TYPEINFOr    r!   joininputr   managerfscacheflushr   errorsextendospathr   shutilcopydumptest_modulesr   modulesappendbuild_increment
isinstancer   normalize_outputr   r   outputfileline)r.   r2   r:   kindmain_srcresultfine_grained_manageratarget_pathold_subexprnew_file	new_typesexprs                r0   run_casezASTMergeSuite.run_case2   s9   } ==%% 	DD]];'' 	DD]]8$$ 	DDD99X^,,Hh//!!#X!!!$$&&&6v>>= 	$HHV]###gll=+>>BGLL0@AA;OOO	/x7LMMNNN()?)IJJ	"223GS^__)	/x7LMMNNN 	) 	)D$,, y((((($ 	,(++A"OQ Y8= Y Y Y Y Y	
 	
 	
 	
 	
r1   sourcestrBuildResult | Nonec                   t          ||d          }d|_        d|_        d|_        d|_        d|_        d|_        d|_        t          j	        
                    t          d          }|| j        _        || j        _        t          |dd          5 }|                    |           d d d            n# 1 swxY w Y   	 t#          j        t%          |d d           g|t                    }n# t&          $ r Y d S w xY w|S )	N   )incremental_stepTmainwutf8)encoding)sourcesr(   alt_lib_path)r   incrementalfine_grained_incrementaluse_builtins_fixturesexport_typesshow_tracebackallow_empty_bodiesforce_uppercase_builtinsrD   rE   r=   r   r+   r(   r-   openwriter   r   r   )r.   r]   r2   r(   	main_pathfrT   s          r0   r   zASTMergeSuite.buildb   sN   1EEE"+/((,%#!%%)"+/(GLL77	 '%,")S6222 	aGGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 		[$Yd;;<*  FF
  	 	 	44	 s$   B55B9<B9,C. .
C<;C<r?   r   	module_idrE   'tuple[MypyFile, dict[Expression, Type]]c                    |                                  |                    ||fgg            |j        j        |         }|j        |                                         }||fS N)flush_cacheupdater?   rJ   graphtype_map)r.   r?   rt   rE   moduler{   s         r0   rL   zASTMergeSuite.build_increment|   sd     	D)*B///(3=+4466xr1   rR   rI   	list[str]c                t   fd|j         j                                        D             }|t          k    r|                     |          S |t
          k    r|                     |          S |t          k    r|                     |          S |t          k    r| 
                    ||          S J d|             )Nc                $    i | ]\  }}|v 	||S  r   ).0r:   rP   rI   s      r0   
<dictcomp>z&ASTMergeSuite.dump.<locals>.<dictcomp>   s1     
 
 
%4DT`L`L`D$L`L`L`r1   FzInvalid kind )r?   rJ   itemsr!   	dump_astsr<   dump_typeinfosr   dump_symbol_tablesr    
dump_types)r.   r?   rR   rI   rJ   s      ` r0   rH   zASTMergeSuite.dump   s    
 
 
 
)0)@)F)F)H)H
 
 
 3;;>>'***X&&w///X**7333U]]??7G444,,d,,,,ur1   rJ   dict[str, MypyFile]c                    g }t          |          D ]I}||                             | j                  }|                    |                                           J|S rw   )sortedacceptr+   rC   
splitlines)r.   rJ   rV   mss        r0   r   zASTMergeSuite.dump_asts   sW     	% 	%A
!!$-00AHHQ\\^^$$$$r1   c                    g }t          |          D ]6}|                    |                     |||         j                             7|S rw   )r   rC   dump_symbol_tablenamesr.   rJ   rV   ids       r0   r   z ASTMergeSuite.dump_symbol_tables   sO    // 	D 	DBHHT++B0ABBCCCCr1   symtabler   c           
         | dg}t          |          D ]L}|                    d          r|                    d| d|                     ||                               M|S )N:__z    : )r   
startswithrK   format_symbol_table_node)r.   rt   r   rV   r:   s        r0   r   zASTMergeSuite.dump_symbol_table   s}    ___8$$ 	U 	UDt$$ HHSDSSD$A$A(4.$Q$QSSTTTTr1   noder   c                   |j         |j        t          k    rdS dS t          |j         t                    rJt          t          |j                   j                   d| j        	                    |j                    d}ndt          |j                    d}t          |j         t                    rS|j         j        rG|j         j                            d          s(|                     |j         j                  }|d| dz  }|S )	Nr   r%   <>z? (r9   ztyping.()r   rR   r   rM   r   r^   type__name__r,   r   r   fullnamer   format_type)r.   r   r   typestrs       r0   r   z&ASTMergeSuite.format_symbol_table_node   s    9y,,,))6di&& 	)tDI/00RR4>3D3DTY3O3ORRRAA(d49oo(((Aty#&&	 		  I&11)<<	 
 &&ty~66GWAr1   c                    g }t          |          D ]5}|                    |                     ||         j                             6|S rw   )r   rC   dump_typeinfos_recursiver   r   s       r0   r   zASTMergeSuite.dump_typeinfos   sM    // 	G 	GBHHT2272;3DEEFFFFr1   r   c                P   g }t          |                                d           D ]~\  }}t          |j        t                    r_|                    |                     |j                             |                    |                     |j        j                             |S )Nc                    | d         S )Nr   r   )xs    r0   <lambda>z8ASTMergeSuite.dump_typeinfos_recursive.<locals>.<lambda>   s
    ad r1   key)	r   r   rM   r   r   rC   dump_typeinfor   r   )r.   r   rV   r:   r   s        r0   r   z&ASTMergeSuite.dump_typeinfos_recursive   s     NNCCC 	I 	IJD$$)X.. I++DI6677766tyGGHHHr1   infor   c                    |j         dk    rg S |                    | j        | j                  }|                                S )Nz	enum.Enum)r+   r-   )r   rH   r+   r-   r   )r.   r   r   s      r0   r   zASTMergeSuite.dump_typeinfo   s<    =K''IIIt}D<NIOO||~~r1   c                   	 g }t          |          D ]}|j        j        |j        |         j        }|J fdt          |          D             		rz|                    d|            t          	 	fd          D ]L}	|         }|                    t          |           d|j         d 	                    |                      M|S )Nc                *    i | ]}|v ||         S r   r   )r   r   	all_typess     r0   r   z,ASTMergeSuite.dump_types.<locals>.<dictcomp>   s1       *.dV_N_N_ioN_N_N_r1   z## c                    | j         t          |           |                     j        j                  t          |                    z   fS rw   )rQ   r   str_with_optionsr+   r(   r^   )nr.   r{   s    r0   r   z*ASTMergeSuite.dump_types.<locals>.<lambda>   s@    "1**4=+@AACQRDTDTT# r1   r   r   r   )
r   r?   r   rz   treer   rK   r   rQ   r   )
r.   rJ   r?   rV   rt   r   r[   typr   r{   s
   `       @@r0   r   zASTMergeSuite.dump_types   s1       	Y 	YI1I=+0D###   2DT2J2J  H  Y*y**+++"       	Y 	YD #4.CHH
4 0 0WW49WW@P@PQT@U@UWWXXXXr1   r   r   c                6    |                     | j                  S rw   )r   r-   )r.   r   s     r0   r   zASTMergeSuite.format_type   s    zz$,---r1   )r$   r%   )r2   r   r$   r%   )r]   r^   r2   r   r$   r_   )r?   r   rt   r^   rE   r^   r$   ru   )r?   r   rR   r^   rI   r}   r$   r}   )rJ   r   r$   r}   )rt   r^   r   r   r$   r}   )r   r   r$   r^   )r   r   r$   r}   )r   r   r$   r}   )rJ   r   r?   r   r$   r}   )r   r   r$   r^   )r   
__module____qualname__filesr*   r\   r   rL   rH   r   r   r   r   r   r   r   r   r   __classcell__)r/   s   @r0   r#   r#   (   sO       NEO O O O O O.
 .
 .
 .
`   4       - - - -             $            8. . . . . . . .r1   r#   )3__doc__
__future__r   rD   rF   mypyr   
mypy.buildr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   r	   r
   r   r   r   r   r   r   mypy.optionsr   mypy.server.subexprr   mypy.server.updater   mypy.strconvr   mypy.test.configr   mypy.test.datar   r   mypy.test.helpersr   r   r   
mypy.typesr   r   	mypy.utilr   r   r   r<   r    r!   r#   r   r1   r0   <module>r      s   K K " " " " " " 				        " " " " " " $ $ $ $ $ $ ) ) ) ) ) )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 !           2 2 2 2 2 2 6 6 6 6 6 6             * * * * * * 8 8 8 8 8 8 8 8 a a a a a a a a a a + + + + + + + + * * * * * * * * F. F. F. F. F.I F. F. F. F. F.r1   