o
    2g	                     @  s   d Z ddlmZ ddl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 dd	lmZmZ dd
lmZ ddlmZmZ ddlmZmZ G dd deZdS )zDTest cases for AST diff (used for fine-grained incremental checking)    )annotationsN)build)CompileError)BuildSource)MypyFile)Options)compare_symbol_table_snapshotssnapshot_symbol_table)test_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalparse_optionsc                   @  s&   e Zd ZdgZdddZdddZdS )ASTDiffSuitez	diff.testtestcaser   returnNonec                 C  s  d |j}t|j}|d }t||d}|jtjkr t	d | 
||\}}| 
||\}}	g }
|r9|
| |rE|
d |
| |d urM|	d usQJ dd}t||d j}t||	d j}t|||}t|D ]}|
| qmt|j|
d|j d	|j d
 d S )N
ztmp/next.py   z)Test case requires a newer Python versionz
== next ==z3cases where CompileError occurred should not be run__main__zInvalid output (z, line ))joininputdictfilesr   python_versionsysversion_infopytestskipr   extendappendr	   namesr   sortedr   outputfileline)selfr   	first_src
files_dict
second_srcoptions	messages1files1	messages2files2aprefix	snapshot1	snapshot2difftrigger r6   J/home/garg/my-data/venv/lib/python3.10/site-packages/mypy/test/testdiff.pyrun_case   s4   




zASTDiffSuite.run_casesourcestrr+   r   ,tuple[list[str], dict[str, MypyFile] | None]c              
   C  st   d|_ d|_tj|_d|_ztjtdd |g|td}W n t	y3 } z|j
d fW  Y d }~S d }~ww |j|jfS )NTmain)sourcesr+   alt_lib_path)use_builtins_fixturesshow_tracebackosdevnull	cache_dirallow_empty_bodiesr   r   r
   r   messageserrorsr   )r'   r9   r+   resulter6   r6   r7   r   8   s   
zASTDiffSuite.buildN)r   r   r   r   )r9   r:   r+   r   r   r;   )__name__
__module____qualname__r   r8   r   r6   r6   r6   r7   r      s    
 r   )__doc__
__future__r   rA   r   r   mypyr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   mypy.optionsr   mypy.server.astdiffr   r	   mypy.test.configr
   mypy.test.datar   r   mypy.test.helpersr   r   r   r6   r6   r6   r7   <module>   s    