
    X-Phh!                    *   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 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Z/dZ0 G d de"          Z1dS )zETest cases for AST merge (used for fine-grained incremental checking)    )annotationsN)build)BuildResult)CompileError)BuildSource)UNBOUND_IMPORTED
ExpressionMypyFile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    S/var/www/html/test/jupyter/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-   r1   r9   kindmain_srcresultfine_grained_manageratarget_pathold_subexprnew_file	new_typesexprs                r/   run_casezASTMergeSuite.run_case1   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	
 	
 	
 	
 	
r0   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_builtinsrC   rD   r<   r   r*   r'   r,   openwriter   r   r   )r-   r\   r1   r'   	main_pathfrS   s          r/   r   zASTMergeSuite.builda   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_idrD   'tuple[MypyFile, dict[Expression, Type]]c                    |                                  |                    ||fgg            |j        j        |         }|j        |                                         }||fS N)flush_cacheupdater>   rI   graphtype_map)r-   r>   rs   rD   modulerz   s         r/   rK   zASTMergeSuite.build_increment{   sd     	D)*B///(3=+4466xr0   rQ   rH   	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   ).0r9   rO   rH   s      r/   
<dictcomp>z&ASTMergeSuite.dump.<locals>.<dictcomp>   s1     
 
 
%4DT`L`L`D$L`L`L`r0   FzInvalid kind )r>   rI   itemsr    	dump_astsr;   dump_typeinfosr   dump_symbol_tablesr   
dump_types)r-   r>   rQ   rH   rI   s      ` r/   rG   zASTMergeSuite.dump   s    
 
 
 
)0)@)F)F)H)H
 
 
 3;;>>'***X&&w///X**7333U]]??7G444,,d,,,,,r0   rI   dict[str, MypyFile]c                    g }t          |          D ]I}||                             | j                  }|                    |                                           J|S rv   )sortedacceptr*   rB   
splitlines)r-   rI   rU   mss        r/   r   zASTMergeSuite.dump_asts   sW     	% 	%A
!!$-00AHHQ\\^^$$$$r0   c                    g }t          |          D ]6}|                    |                     |||         j                             7|S rv   )r   rB   dump_symbol_tablenamesr-   rI   rU   ids       r/   r   z ASTMergeSuite.dump_symbol_tables   sO    // 	D 	DBHHT++B0ABBCCCCr0   symtabler   c           
         | dg}t          |          D ]L}|                    d          r|                    d| d|                     ||                               M|S )N:__z    : )r   
startswithrJ   format_symbol_table_node)r-   rs   r   rU   r9   s        r/   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r0   noder   c                   |j         |j        t          k    rdS dS t          t	          |j                   j                   d| j                            |j                    d}t          |j         t                    rS|j         j        rG|j         j
                            d          s(|                     |j         j                  }|d| dz  }|S )Nr   r$   <>ztyping.(r8   )r   rQ   r   r]   type__name__r+   r   rL   r   fullnamer   format_type)r-   r   r   typestrs       r/   r   z&ASTMergeSuite.format_symbol_table_node   s    9y,,,))64	??+,,NNt~/@/@/K/KNNNty#&&	 		  I&11)<<	 
 &&ty~66GWAr0   c                    g }t          |          D ]5}|                    |                     ||         j                             6|S rv   )r   rB   dump_typeinfos_recursiver   r   s       r/   r   zASTMergeSuite.dump_typeinfos   sM    // 	G 	GBHHT2272;3DEEFFFFr0   r   c                P   g }t          |                                d           D ]~\  }}t          |j        t                    r_|                    |                     |j                             |                    |                     |j        j                             |S )Nc                    | d         S )Nr   r   )xs    r/   <lambda>z8ASTMergeSuite.dump_typeinfos_recursive.<locals>.<lambda>   s
    ad r0   key)	r   r   rL   r   r   rB   dump_typeinfor   r   )r-   r   rU   r9   r   s        r/   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r0   infor   c                    |j         dk    rg S |                    | j        | j                  }|                                S )Nz	enum.Enum)r*   r,   )r   rG   r*   r,   r   )r-   r   r   s      r/   r   zASTMergeSuite.dump_typeinfo   s<    =K''IIIt}D<NIOO||~~r0   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     r/   r   z,ASTMergeSuite.dump_types.<locals>.<dictcomp>   s1       *.dV_N_N_ioN_N_N_r0   z## c                    | j         t          |           |                     j        j                  t          |                    z   fS rv   )rP   r   str_with_optionsr*   r'   r]   )nr-   rz   s    r/   r   z*ASTMergeSuite.dump_types.<locals>.<lambda>   s@    "1**4=+@AACQRDTDTT# r0   r   r   r   )
r   r>   r   ry   treer   rJ   r   rP   r   )
r-   rI   r>   rU   rs   r   rZ   typr   rz   s
   `       @@r/   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r0   r   r   c                6    |                     | j                  S rv   )r   r,   )r-   r   s     r/   r   zASTMergeSuite.format_type   s    zz$,---r0   )r#   r$   )r1   r   r#   r$   )r\   r]   r1   r   r#   r^   )r>   r   rs   r]   rD   r]   r#   rt   )r>   r   rQ   r]   rH   r|   r#   r|   )rI   r   r#   r|   )rs   r]   r   r   r#   r|   )r   r   r#   r]   )r   r   r#   r|   )r   r   r#   r|   )rI   r   r>   r   r#   r|   )r   r   r#   r]   )r   
__module____qualname__filesr)   r[   r   rK   rG   r   r   r   r   r   r   r   r   r   __classcell__)r.   s   @r/   r"   r"   '   sO       NEO O O O O O.
 .
 .
 .
`   4       - - - -                         8. . . . . . . .r0   r"   )2__doc__
__future__r   rC   rE   mypyr   
mypy.buildr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   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   r0   r/   <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 + + + + + + + + * * * * * * * * C. C. C. C. C.I C. C. C. C. C.r0   