o
    2g7                     @  sB  d Z ddlm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 rde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force_uppercase_builtins)r   r   options r&   M/home/garg/my-data/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_case8      zSemAnalSuite.run_caseNr   r   r   r*   )__name__
__module____qualname__semanal_filesfiles
native_sepr0   r&   r&   r&   r'   r)   4   s    r)   r*   c              
   C  s   zEd | j}t|| }t| j|_tjtdd|g|td}|j	}|r(t
|t|j D ]}|| jv rC||j| |d7 }q/W n t
yZ } z	|j}W Y d}~nd}~ww | jrbt|}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_path"Invalid semantic analyzer output (, line ))joininputr(   r   filer#   r   r   r
   errorsr   sortedr7   keystest_modulesstr_with_optionssplitmessagesnormalize_outputr   r   outputline)r   srcr%   resultamoduleer&   r&   r'   r-   <   s4   

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   e   r1   zSemAnalErrorSuite.run_caseNr2   )	r3   r4   r5   r7   sysversion_infor6   appendr0   r&   r&   r&   r'   rS   `   s
    

rS   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?   r@   )rA   rB   r   r   r(   r
   rD   r   rJ   rK   r   r   rL   rC   rM   )r   rN   resrP   rR   r&   r&   r'   rT   i   s"   
rT   c                   @      e Zd ZdZdgZd
ddZd	S )SemAnalSymtableSuiteTr   r   r   r   r*   c              
   C  s   zMd |j}tjtdd|gt||td}|j}|r t|t|j	
 D ]$}||jv rK|| d t|j	| jdD ]	}|d|  qAq'W n tyb } z	|j}W Y d}~nd}~ww t|j|d|j d|j d	 dS )
rX   r9   r:   Nr;   :  r>   r?   r@   )rA   rB   r   r   r(   r
   rD   r   rE   r7   rF   rG   rW   r   namesrI   rJ   r   rL   rC   rM   )r/   r   rN   rO   rP   rQ   srR   r&   r&   r'   r0      s4   
zSemAnalSymtableSuite.run_caseNr2   r3   r4   r5   required_out_sectionr7   r0   r&   r&   r&   r'   r[          r[   c                   @  rZ   )SemAnalTypeInfoSuiteTr   r   r   r   r*   c           	   
     s  z_d |j}tjtdd|gt||td}|j}|r t|t }|j	
 D ].\}}||jv rV|j D ] t jtrU jsCJ t fdd|jD rU j| j< q6q(t|d}W n tyt } z	|j}W Y d}~nd}~ww t|j|d|j d|j d	 dS )
rX   r9   r:   Nr;   c                 3  s     | ]} j |d  V  qdS ).N)fullname
startswith).0mnr&   r'   	<genexpr>   s    z0SemAnalTypeInfoSuite.run_case.<locals>.<genexpr>r>   r?   r@   )rA   rB   r   r   r(   r
   rD   r   TypeInfoMapr7   itemsrG   r^   values
isinstancenoder   re   anyr   rI   rJ   r   rL   rC   rM   )	r/   r   rN   rO   rP   	typeinfosrQ   rC   rR   r&   ri   r'   r0      s:   

zSemAnalTypeInfoSuite.run_caseNr2   r`   r&   r&   r&   r'   rc      rb   rc   c                   @  s   e Zd ZdddZdS )rl   r   r   c                 C  s`   dg}t |  D ]\}}dt|d}|d| d|  q	|d  d7  < d|S )NzTypeInfoMap(z
  r9   r]   z : r@   )rE   rm   rA   r   rI   rW   )r/   rP   xytir&   r&   r'   __str__   s   
zTypeInfoMap.__str__N)r   r   )r3   r4   r5   rw   r&   r&   r&   r'   rl      s    rl   )r   r   r   r   r   r	   r2   ))__doc__
__future__r   rU   typingr   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   rV   remover(   r)   r-   rS   rT   r[   rc   r   rl   r&   r&   r&   r'   <module>   s6    




$
	!'