o
    tBh                     @  sJ  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 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mZmZ edg ddZej dk rhe!d d*ddZ"G dd deZ#d+ddZ$G d d! d!eZ%d+d"d#Z&G d$d% d%eZ'G d&d' d'eZ(G d(d) d)ee)ef Z*dS ),zSemantic analyzer test cases    )annotationsN)Dict)build)PYTHON3_VERSION)CompileError)BuildSource)TypeInfo)Options)test_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalfind_test_filesnormalize_error_messagesparse_optionstestfile_pyversionzsemanal-*.test)semanal-errors-python310.testsemanal-errors.testsemanal-typeinfo.testsemanal-symtable.test)patternexclude   
   zsemanal-python310.testprogram_textstrtestcaser   returnr	   c                 C  s.   t | |d}d|_d|_d|_t|_d|_|S )N   T)r   use_builtins_fixturessemantic_analysis_onlyshow_tracebackr   python_versionenable_incomplete_features)r   r   options r&   l/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/test/testsemanal.pyget_semanal_options+   s   r(   c                   @  s   e Zd ZeZdZd	ddZdS )
SemAnalSuiteTr   r   r   Nonec                 C     t | d S N)test_semanalselfr   r&   r&   r'   run_case9      zSemAnalSuite.run_caseNr   r   r   r*   )__name__
__module____qualname__semanal_filesfiles
native_sepr0   r&   r&   r&   r'   r)   5   s    r)   r*   c              
   C  s4  zkd | j}t|| }t| j|_tjtdd|g|td}|j	}|r(t
|t|j D ]:}|j| }|jtjd dddd	d
dfsitj|jdsitjtj|jd dsi|t|d7 }q/W n t
y } z	|j}W Y d}~nd}~ww | jrt|}t| j|d| j d| j d dS )zPerform a semantic analysis test case.

    The testcase argument contains a description of the test case
    (inputs and output).
    
mainNsourcesr%   alt_lib_pathzbuiltins.pyiz
typing.pyizmypy_extensions.pyiztyping_extensions.pyizabc.pyizcollections.pyizsys.pyi_r   "Invalid semantic analyzer output (, line ))joininputr(   r   filer#   r   r   r
   errorsr   sortedr7   keyspathendswithossepbasename
startswithsplitextr   splitmessagesnormalize_outputr   r   outputline)r   srcr%   resultafnamfer&   r&   r'   r-   =   sR   

r-   c                   @  s0   e Zd ZdgZejdkred ddd	Zd
S )SemAnalErrorSuiter   r   r   r   r   r   r*   c                 C  r+   r,   )test_semanal_errorr.   r&   r&   r'   r0   x   r1   zSemAnalErrorSuite.run_caseNr2   )	r3   r4   r5   r7   sysversion_infor6   appendr0   r&   r&   r&   r'   rZ   s   s
    

rZ   c              
   C  s   zd | j}tjtdd|gt|| td}|j}W n ty0 } z	|j}W Y d}~nd}~ww | j	r8t
|}t| j|d| j d| j d dS )Perform a test case.r9   r:   Nr;   zInvalid compiler output (r@   rA   )rB   rC   r   r   r(   r
   rE   r   rP   rQ   r   r   rR   rD   rS   )r   rT   resrV   rY   r&   r&   r'   r[   |   s"   
r[   c                   @      e Zd ZdZdgZd
ddZd	S )SemAnalSymtableSuiteTr   r   r   r   r*   c              
   C  s   zLd |j}tjtdd|gt||td}|j}|r t|t|j	
 D ]#}|dvrJ|| d t|j	| jdD ]	}|d|  q@q'W n tya } z	|j}W Y d}~nd}~ww t|j|d|j d	|j d
 dS )r_   r9   r:   Nr;   )builtinstypingabc:  r?   r@   rA   )rB   rC   r   r   r(   r
   rE   r   rF   r7   rG   r^   r   namesrO   rP   r   rR   rD   rS   )r/   r   rT   rU   rV   rX   srY   r&   r&   r'   r0      s4   zSemAnalSymtableSuite.run_caseNr2   r3   r4   r5   required_out_sectionr7   r0   r&   r&   r&   r'   rb          rb   c                   @  ra   )SemAnalTypeInfoSuiteTr   r   r   r   r*   c           	   
   C  s   zNd |j}tjtdd|gt||td}|j}|r t|t }|j	
 D ]}|j
 D ]}t|jtrD|jdus>J |j||j< q/q(t|d}W n tyc } z	|j}W Y d}~nd}~ww t|j|d|j d|j d dS )r_   r9   r:   Nr;   r?   r@   rA   )rB   rC   r   r   r(   r
   rE   r   TypeInfoMapr7   valuesrh   
isinstancenoder   fullnamer   rO   rP   r   rR   rD   rS   )	r/   r   rT   rU   rV   	typeinfosrX   nrY   r&   r&   r'   r0      s8   zSemAnalTypeInfoSuite.run_caseNr2   rj   r&   r&   r&   r'   rm      rl   rm   c                   @  s   e Zd ZdddZdS )rn   r   r   c                 C  s   dg}t |  D ]-\}}t|tr6|ds6|ds6|ds6dt|d}|d| d|  q	|d	  d
7  < d|S )NzTypeInfoMap(z	builtins.ztyping.zabc.z
  r9   rg   z : rA   )rF   itemsrp   r   rM   rB   rO   r^   )r/   rV   xytir&   r&   r'   __str__   s   

zTypeInfoMap.__str__N)r   r   )r3   r4   r5   rz   r&   r&   r&   r'   rn      s    rn   )r   r   r   r   r   r	   r2   )+__doc__
__future__r   os.pathrJ   r\   rd   r   mypyr   mypy.defaultsr   mypy.errorsr   mypy.modulefinderr   
mypy.nodesr   mypy.optionsr	   mypy.test.configr
   mypy.test.datar   r   mypy.test.helpersr   r   r   r   r   r6   r]   remover(   r)   r-   rZ   r[   rb   rm   r   rn   r&   r&   r&   r'   <module>   s8    




6
	!%