
    X-Ph                       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mZ ddlmZmZmZmZmZ  edg d          Zej        dk     re                    d           d&dZ G d de          Zd'dZ  G d de          Z!d'dZ" G d  d!e          Z# G d" d#e          Z$ G d$ d%e%e&ef                   Z'dS )(zSemantic analyzer test cases    )annotationsN)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                x    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   optionss      U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/test/testsemanal.pyget_semanal_optionsr(   )   s@    L(A66G$(G!%)G"!G,G'+G$N    c                      e Zd ZeZdZddZdS )	SemAnalSuiteTr   r   r   Nonec                $    t          |           d S N)test_semanalselfr   s     r'   run_casezSemAnalSuite.run_case7   s    Xr)   Nr   r   r   r,   )__name__
__module____qualname__semanal_filesfiles
native_sepr2    r)   r'   r+   r+   3   s2        EJ     r)   r+   r,   c           	        	 d                     | j                  }t          ||           }t          | j                  |_        t          j        t          dd|          g|t                    }|j	        }|rt          |          t          |j                                                  D ]A}|| j        v r6||j        |                             |                              d          z  }Bn# t          $ r}|j        }Y d}~nd}~ww xY w| j        rt'          |          }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   sortedr8   keystest_modulesstr_with_optionssplitmessagesnormalize_outputr   r   outputline)r   srcr&   resultamodulees          r'   r/   r/   ;   sx   ii''%c844!3HM!B!B s334gTa
 
 
 M 	"q//! V\..0011 	P 	PF...V\&)::7CCII$OOO	P    J  ($Q''	SX]SS8=SSS    s   C/C2 2
D<DDc                  \    e Zd ZdgZej        dk    re                    d           d
dZd	S )SemAnalErrorSuiter   r   r   r   r   r   r,   c                $    t          |           d S r.   )test_semanal_errorr0   s     r'   r2   zSemAnalErrorSuite.run_cased   s    8$$$$$r)   Nr3   )	r4   r5   r6   r8   sysversion_infor7   appendr2   r:   r)   r'   rW   rW   _   sS        "#E
7""<===% % % % % %r)   rW   c           	     v   	 d                     | j                  }t          j        t          dd|          gt	          ||           t
                    }|j        }n# t          $ r}|j        }Y d}~nd}~ww xY w| j	        rt          |          }t          | j        |d| j         d| j         d           dS )Perform a test case.r<   r=   Nr>   zInvalid compiler output (rB   rC   )rD   rE   r   r   r(   r
   rG   r   rM   rN   r   r   rO   rF   rP   )r   rQ   resrS   rU   s        r'   rY   rY   h   s    ii''k s334'X66&
 
 

 J    J   ($Q''^^^hm^^^    s   AA 
A9(A44A9c                       e Zd ZdZdgZd	dZdS )
SemAnalSymtableSuiteTr   r   r   r   r,   c           	        	 d                     |j                  }t          j        t          dd|          gt	          ||          t
                    }|j        }|rt          |          t          |j	        
                                          D ]p}||j        v re|                    | d           t          |j	        |         j                                      d          D ]}|                    d|z              qn# t          $ r}|j        }Y d}~nd}~ww xY wt#          |j        |d|j         d|j         d	           dS )
r^   r<   r=   Nr>   :  rA   rB   rC   )rD   rE   r   r   r(   r
   rG   r   rH   r8   rI   rJ   r\   r   namesrL   rM   r   rO   rF   rP   )r1   r   rQ   rR   rS   rT   srU   s           r'   r2   zSemAnalSymtableSuite.run_case   sx   	))HN++C[$VT3778+C::*  F A &"1oo% !2!2!4!455 + +X222HH\\\*** f!5!;<<BB4HH + +****	+
  	 	 	
AAAAAA	"OWWWx}WWW	
 	
 	
 	
 	
s   DD 
D!DD!Nr3   r4   r5   r6   required_out_sectionr8   r2   r:   r)   r'   ra   ra      s6        $%E
 
 
 
 
 
r)   ra   c                       e Zd ZdZdgZd	dZdS )
SemAnalTypeInfoSuiteTr   r   r   r   r,   c           	       	 	 d                     |j                  }t          j        t          dd|          gt	          ||          t
                    }|j        }|rt          |          t                      }|j	        
                                D ]|\  }}||j        v rn|j                                        D ]T	t          	j        t                     r8	j        sJ t%          	fd|j        D                       r	j        |	j        <   U}t'          |                              d          }n# t          $ r}|j        }Y d}~nd}~ww xY wt-          |j        |d|j         d|j         d           dS )	r^   r<   r=   Nr>   c              3  R   K   | ]!}j                             |d z             V  "dS ).N)fullname
startswith).0mns     r'   	<genexpr>z0SemAnalTypeInfoSuite.run_case.<locals>.<genexpr>   s7      "a"aa1:#8#8S#A#A"a"a"a"a"a"ar)   rA   rB   rC   )rD   rE   r   r   r(   r
   rG   r   TypeInfoMapr8   itemsrJ   re   values
isinstancenoder   rn   anyr   rL   rM   r   rO   rF   rP   )
r1   r   rQ   rR   rS   	typeinfosrT   rF   rU   rr   s
            @r'   r2   zSemAnalTypeInfoSuite.run_case   s   	))HN++C[$VT3778+C::*  F
 A &"1oo% $I & 2 2 4 4 ? ?X222!Z..00 ? ?%afh77 ?#$:---""a"a"a"a8K`"a"a"aaa ?89	!* 5 I$$T**AA 	 	 	
AAAAAA	"OWWWx}WWW	
 	
 	
 	
 	
s   D2D6 6
E EENr3   rg   r:   r)   r'   rj   rj      s6        $%E 
  
  
  
  
  
r)   rj   c                      e Zd ZddZdS )rt   r   r   c                @   dg}t          |                                           D ]U\  }}d                    t          |                              d                    }|                    d| d|            V|dxx         dz  cc<   d                    |          S )NzTypeInfoMap(z
  r<   rd   z : rC   )rH   ru   rD   r   rL   r\   )r1   rS   xytis        r'   __str__zTypeInfoMap.__str__   s    &'4::<<(( 	& 	&DAq##CFFLL$6$677BHH_!____%%%%	"yy||r)   N)r   r   )r4   r5   r6   r   r:   r)   r'   rt   rt      s(             r)   rt   )r   r   r   r   r   r	   r3   )(__doc__
__future__r   rZ   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   r7   r[   remover(   r+   r/   rW   rY   ra   rj   dictr   rt   r:   r)   r'   <module>r      su   " " " " " " " " 



       ) ) ) ) ) ) $ $ $ $ $ $ ) ) ) ) ) )                   * * * * * * 8 8 8 8 8 8 8 8                    g1222       9      H% % % % %	 % % %   2
 
 
 
 
9 
 
 
B$
 $
 $
 $
 $
9 $
 $
 $
N    $sH}%     r)   