o
    tBhO"                     @  s"  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 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Z/dZ0G dd de!Z1ddd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)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AST)builtinstypingabc
contextlibsysmypy_extensionstyping_extensionsenumc                      s   e Zd ZdgZd7 fddZd8dd	Z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d?d+d,Zd@d/d0ZdAd1d2ZdBd5d6Z  ZS )CASTMergeSuitez
merge.testreturnNonec                   s@   t    tdd| _| jjd usJ | jj| _t| j| _d S )NT)show_ids)supersetupr   str_conv	id_mapperr   type_str_conv)self	__class__ j/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/test/testmerge.pyr-   6   s
   

zASTMergeSuite.setuptestcaser   c                 C  sT  |j }|drt}n|drt}n
|drt}nt}d|j}| ||}|d us1J d|j	j
  t|}g }|jrF||j tjtd}ttjtd| || || t|j	jd }	|d	 | |d|\}
}|| || |	D ]}t|trq||vsJ q|jrt|}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dumpr   modulesappendbuild_increment
isinstancer   normalize_outputr   r   outputfileline)r1   r6   r=   kindmain_srcresultfine_grained_manageratarget_pathold_subexprnew_file	new_typesexprr4   r4   r5   run_case=   s@   




zASTMergeSuite.run_casesourcestrBuildResult | Nonec                 C  s   t ||dd}d|_d|_d|_d|_d|_tjt	d}t
|ddd}|| W d    n1 s4w   Y  ztjt|d d g|t	d}W |S  tyS   Y d S w )	N   )incremental_stepTmainwutf8)encoding)sourcesoptionsalt_lib_path)r   incrementalfine_grained_incrementaluse_builtins_fixturesexport_typesshow_tracebackrG   rH   r@   r   openwriter   r   r   )r1   r_   r6   ri   	main_pathfrV   r4   r4   r5   r   m   s(   zASTMergeSuite.buildrB   r   	module_idrH   'tuple[MypyFile, dict[Expression, Type]]c                 C  s<   |   |||fgg  |jj| }|j|  }||fS N)flush_cacheupdaterB   rL   graphtype_map)r1   rB   rt   rH   modulerz   r4   r4   r5   rN      s
   zASTMergeSuite.build_incrementrT   	list[str]c                 C  s^   |j j}|tkr| |S |tkr| |S |tkr| |S |tkr(| 	|S J d| )NFzInvalid kind )
rB   rL   r   	dump_astsr?   dump_typeinfosr   dump_symbol_tablesr   
dump_types)r1   rB   rT   rL   r4   r4   r5   rK      s   



zASTMergeSuite.dumprL   dict[str, MypyFile]c                 C  s>   g }t |D ]}|tv rq|| | j}||  q|S rv   )sortedNOT_DUMPED_MODULESacceptr.   rF   
splitlines)r1   rL   rX   msr4   r4   r5   r}      s   zASTMergeSuite.dump_astsc                 C  s8   g }t |D ]}t|sq|| ||| j q|S rv   )r   is_dumped_modulerF   dump_symbol_tablenamesr1   rL   rX   idr4   r4   r5   r      s   z ASTMergeSuite.dump_symbol_tablessymtabler   c              
   C  sJ   | dg}t |D ]}|drq
|d| d| ||   q
|S )N:__z    : )r   
startswithrM   format_symbol_table_node)r1   rt   r   rX   r=   r4   r4   r5   r      s   
"zASTMergeSuite.dump_symbol_tablenoder   c                 C  s   |j d u r|jtkrdS dS t|j tr(tt|j j d| j	|j  d}n	dt|j  d}t|j t
rQ|j jrQ|j jdsQ| |j j}|d| d7 }|S )	Nr   r*   <>z? (r<   ztyping.()r   rT   r   rO   r
   r`   type__name__r/   r   r   fullnamer   format_type)r1   r   r   typestrr4   r4   r5   r      s    

(
z&ASTMergeSuite.format_symbol_table_nodec                 C  s6   g }t |D ]}t|sq|| || j q|S rv   )r   r   rF   dump_typeinfos_recursiver   r   r4   r4   r5   r~      s   zASTMergeSuite.dump_typeinfosr   c                 C  sX   g }t | dd dD ]\}}t|jtr)|| |j || |jj q|S )Nc                 S  s   | d S )Nr   r4   )xr4   r4   r5   <lambda>   s    z8ASTMergeSuite.dump_typeinfos_recursive.<locals>.<lambda>key)	r   itemsrO   r   r   rF   dump_typeinfor   r   )r1   r   rX   r=   r   r4   r4   r5   r      s   z&ASTMergeSuite.dump_typeinfos_recursiveinfor   c                 C  s(   |j dkrg S |j| j| jd}| S )Nz	enum.Enum)r.   r0   )r   rK   r.   r0   r   )r1   r   r   r4   r4   r5   r      s   
zASTMergeSuite.dump_typeinfoc                   s   g }t |jjD ]P}t|sq|jj |j| j}|d usJ  fddt|D rX|d|  t fdddD ]}| }|t	| d|j
 d| |  q>q|S )	Nc                   s   i | ]}| v r| | qS r4   r4   ).0r   )	all_typesr4   r5   
<dictcomp>   s    z,ASTMergeSuite.dump_types.<locals>.<dictcomp>z## c                   s    | j t| t| t |   fS rv   )rS   r   r`   )n)rz   r4   r5   r      s     z*ASTMergeSuite.dump_types.<locals>.<lambda>r   r   r   )r   rB   rL   r   r   ry   treer   rM   r   rS   r   )r1   rB   rX   rt   r   r]   typr4   )r   rz   r5   r      s&   

(zASTMergeSuite.dump_typesr   r   c                 C  s   | | jS rv   )r   r0   )r1   r   r4   r4   r5   r      s   zASTMergeSuite.format_type)r)   r*   )r6   r   r)   r*   )r_   r`   r6   r   r)   ra   )rB   r   rt   r`   rH   r`   r)   ru   )rB   r   rT   r`   r)   r|   )rL   r   r)   r|   )rt   r`   r   r   r)   r|   )r   r   r)   r`   )r   r   r)   r|   )r   r   r)   r|   )rB   r   r)   r|   )r   r   r)   r`   )r   
__module____qualname__filesr-   r^   r   rN   rK   r}   r   r   r   r~   r   r   r   r   __classcell__r4   r4   r2   r5   r(   3   s     

0

	



	




r(   r   r`   r)   boolc                 C  s   | t vo| d p| dkS )N___main__)r   r   )r   r4   r4   r5   r      s   r   )r   r`   r)   r   )3__doc__
__future__r   rG   rI   mypyr   
mypy.buildr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   r   r	   r
   r   r   r   r   r   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(   r   r4   r4   r4   r5   <module>   s2    , D