
    i
:                       d Z ddlmZ ddlZddl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mZmZ ddlmZmZ dd	lmZmZmZ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% 	 ej&        dk    r e' ej(        d                    rdZ)nddl)Z)n# e*$ r dZ)Y nw xY wddl+Z+ ed          Z,ej&        dk     re,-                    d           ej&        dk     re,-                    d           ej&        dk     re,-                    d           ej&        dk     re,-                    d            G d de          Z.dS )zType checker test cases    )annotationsN)Path)build)CompileError)BuildSourceFindModuleCacheSearchPaths)test_data_prefixtest_temp_dir)DataDrivenTestCase	DataSuiteFileOperationmodule_from_path)	assert_module_equivalenceassert_string_arrays_equalassert_target_equivalencecheck_test_output_filesfind_test_filesnormalize_error_messagesparse_optionsperform_file_operationsremove_typevar_ids)update_testcase_output)      Py_GIL_DISABLEDzcheck-*.test)pattern)r      zcheck-python311.test)r      zcheck-python312.test)r      zcheck-python313.testzcheck-python314.testc                  T    e Zd ZeZd dZd!dZ	 	 d"d#dZd$dZd%dZ	d&dZ
	 d'd(dZd	S ))TypeCheckSuitetestcaser   returnNonec                   t           j                            |j                  dk    rt	          j        dd          5 }t          |j                  }|                    |j        	                                          
                                st          j        d           d d d            n# 1 swxY w Y   t          <t           j                            |j                  dk    rt          j        d           d|j                                        v pd|j        v pd	|j        v }|r,t          d
gt!          |j                                                  z             }t          j        t           j                  D ]k\  }}}|D ]b}	t+          j        d|	          }
|
rIt/          |
                    d                    |k    r#t3          d                    |	|                    cl|                                }t9          d|dz             D ]A}|d
z
  }|t;          |          k     r|dk    r||         ng }|                     |||           Bd S |                     |           d S )Nzcheck-modules-case.testtest.)prefixdirz#File system is not case-insensitivezcheck-reports.testz$Cannot import lxml. Is it installed?incremental	serialize   z
\.([2-9])$   z7Output file {} exists though test case only has {} runsr   )ospathbasenamefiletempfileNamedTemporaryFiler   name	with_nameupperexistspytestskiplxmllowermaxlistoutput2keyswalkcurdirresearchintgroup
ValueErrorformat
find_stepsrangelenrun_case_once)selfr#   	temp_file	temp_pathr+   	num_stepsdndirsfilesr2   mstepsstepidxopss                  R/root/projects/qq-shell/venv/lib64/python3.11/site-packages/mypy/test/testcheck.pyrun_casezTypeCheckSuite.run_case<   s   7HM**.GGG,FDDD G	 00	 **9>+?+?+A+ABBIIKK GK EFFFG G G G G G G G G G G G G G G <BG,,X];;?SSSK>???X]00222 ,-,hm+ 	
  	) QC$x'7'<'<'>'>"?"??@@I#%729#5#5  D%!  D	-66A S__y88(U\\ $i    ''))EaQ// 8 8Qh$'#e**$4$4eCjjr""8S$77778 8
 x(((((s   A'B22B69B6a	list[str]c                   |j         }|j        r|t          |j                  k    rd S d	dd t	          fd|D                       D             t          |j        |d          fd          |j        |d <   d S )
N_msgstrr$   c                8    |                      d          d         S )N:r   )	partition)r^   s    rY   	_filenamez8TypeCheckSuite._sort_output_if_needed.<locals>._filenamed   s    >>#&&q))    c                    i | ]\  }}||	S  rf   ).0rW   r2   s      rY   
<dictcomp>z9TypeCheckSuite._sort_output_if_needed.<locals>.<dictcomp>g   s    ZZZic4cZZZrd   c              3  .   K   | ]} |          V  d S )Nrf   )rg   msgrc   s     rY   	<genexpr>z8TypeCheckSuite._sort_output_if_needed.<locals>.<genexpr>g   s,      <Y<YPSYYs^^<Y<Y<Y<Y<Y<Yrd   c                B                          |           d          S )N)get)rj   rc   file_weightss    rY   <lambda>z7TypeCheckSuite._sort_output_if_needed.<locals>.<lambda>i   s     <3C3CIIcNNTV3W3W rd   )key)r^   r_   r$   r_   )output_inline_startrS   rK   output	enumeratesorted)rM   r#   r[   rW   rc   ro   s       @@rY   _sort_output_if_neededz%TypeCheckSuite._sort_output_if_needed_   s    *~ 	HO(<(<!<!<F	* 	* 	* 	* [Z9<Y<Y<Y<YWX<Y<Y<Y3Y3YZZZ &OCDD!'W'W'W'W'W!
 !
 !
rd   Nr   
operationslist[FileOperation] | Noneincremental_steprE   c                t   |g }d                     j                  }|                     ||          }j        D ]D\  }}t	          |          }|                    d          r|t          j        v rt          j        |= E|dk    s|dk    rQ|D ]M\  }	}
}|	dk    rAt          |
dd          5 }|	                    |           d d d            n# 1 swxY w Y    nNn|dk    rt          |           t          ||          }d	|_        d	|_        t          t          j                            d
                    |_        j                            d           |_        |j        rWd	|_        d	|_        j        rt1          j        d          j                            d          rt1          j        d          |j        r.j                            d          rt1          j        d          dj        v rd	|_        dj        v rd|_        dj        vr j                            d           |_        |r|j        s|j        dk    rd	|_        nd|_        j        st          j         |_!        g }|D ].\  }	}
}|"                    tG          |
|	|rd n|                     /t          j$                             tJ          d          }d }|j        dk    rt          j        &                                }t          j$        '                    t          j$        '                    t          j$        '                    tP                                        }t          j)                             ||g          |d<   ||d<   tT          |d<   t          j$        +                    d|           d }d}	 tY          j,        ||tT          |          }|j-        }n # t\          $ r}|j/        }d	}Y d }~nd }~ww xY wt          j$        d         |k    sJ t          j$        d= n*# t          j$        d         |k    sJ t          j$        d= w xY wj0        rtc          |          }|dk     r1|dk    rd}n
|dk    sJ d}| 2                    |           j3        }n#d| dz   }j4                            |g           }||k    r-j5        6                    d d          rto          ||!           |j        dk    rtq          |          }tq          |          }ts          |||:                    j        j;                             |rV|j!        t          j         k    r| <                    ||j=        ||           d"}|r|t}          |dz             z  }j?                            |dz             }fd#|j=        j@        D             }|j        dk    r|t          |||           |dk    r|dk    rd$nt}          |dz
            }jB                            |dz
            }|t          d%|z   ||j=        jD                   jE                            |dz
            }|t          d&|z   ||j=        jF                   |j=        jG        H                                 j        rt          |d'(           d S d S ))N
_pluginr   r.   __main__wutf8encodingTTEST_NATIVE_PARSER_no_verbose_revealz*Reports are not supported in parallel mode_no_parallelz'Test not supported in parallel mode yet_no_native_parsez'Test not supported by native parser yetcolumns
errorcodesFabstract	_no_emptyplugins
PYTHONPATHMYPY_TEST_PREFIXMYPY_ALT_LIB_PATH)sourcesoptionsalt_lib_path
worker_envr-   zBUnexpected type checker output in incremental, run 1 ({}, line {})z,Unexpected type checker output ({}, line {})z3Unexpected type checker output in incremental, run z ({}, line {})z--update-data)ry   targetsc                ,    g | ]\  }}|j         v |S rf   )test_modules)rg   moduletargetr#   s      rY   
<listcomp>z0TypeCheckSuite.run_case_once.<locals>.<listcomp>   s5       "FFX222 222rd    	recheckedstaleztmp/)strip_prefix)Jjoininputparse_modulerS   r   endswithsysmodulesopenwriter   r   use_builtins_fixturesshow_tracebackboolr/   environrn   native_parserr5   reveal_verbose_typesnum_workersfixed_format_cacheoutput_filesr9   r:   r2   show_column_numbershide_error_codesallow_empty_bodiesr+   writescachedevnull	cache_dirappendr   r0   r
   copydirname__file__pathsepr   insertr   errorsr   messagesnormalize_outputr   rv   rs   r?   config	getoptionr   r   r   rH   lineverify_cachemanagerr_   expected_fine_grained_targetsprocessed_targetsr   expected_rechecked_modulesr   rechecked_modulesexpected_stale_modulesstale_modules	metastorecloser   )rM   r#   rw   ry   original_program_textmodule_datar2   _r   module_nameprogram_pathprogram_textfr   r   
plugin_dirr   root_dirresblockerr[   erj   rs   r5   expectedactualsuffixexpected_recheckedexpected_stales    `                            rY   rL   zTypeCheckSuite.run_case_oncel   s    J $		(. 9 9''(=?OPP  ~ 	( 	(GD!%d++Fy)) (f.C.CK'q  $4$9$9;F  7\<*,,lC&AAA .Q---. . . . . . . . . . . . . . .E - !!#J///   5xAQRR(,%!% $RZ^^4H%I%I J J+3=+A+ABV+W+W'W$ 	M)-G&$(G!$ Pk"NOOO}%%n55 Mk"KLLL  	IX]%;%;<N%O%O 	I+GHHH %%*.G'8=((',G$X]**-5]-C-CK-P-P)PG& 	/ 3 	/w7JQ7N7N"&G"'G' /$&J!7B 	 	3K|NNL+?O7attUabb    W\\"2I>>

""**J wrwrwx7P7P'Q'QRRH')z*7M'N'NJ|$-5J)*.;J*+:&&&
	+}Yc  C 
AA 	 	 	
AGGGGGG	 8A;*,,,, 8A;*,,,,OOOO$ 	,(++A a1$$Z'1,,,,D''!444_FF YFVXX"#  %))*:B??FQ;;8?44_eLL;"8QAQRRRR"""1%%A'//F"61cjj.V.VWWW 	* BJ..!!+s{GEUVVVD 2,q0111=AABRUVBVWWH   &)k&C  F "a''H,@)$&AAA!##/144#>NQR>R:S:S%-%H%L%LM]`aMa%b%b"%1-#f,.@#+B_   "*!@!D!DEUXYEY!Z!Z!--&(.#+:S   K!'')))  	U#H.>VTTTTTT	U 	UsB   .CC	C	4$O P 
O6#	O1,P 1O66P 'Qr   list[tuple[str, str, str]]r   build.BuildManagerr   r   rV   c                   |sa|                      |          }|                    d |D                        |                     ||          }|rt          d| d|           t          j                            t          j                            |j        j	        d                    sJ t          j                            |j        j	        d          }t          j                            |          sJ t          |          5 }|                                                    d          sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                    i | ]	\  }}}||
S rf   rf   )rg   r   r0   texts       rY   rh   z/TypeCheckSuite.verify_cache.<locals>.<dictcomp>  s!    YYY2I+tTKYYYrd   zcache data missing for z on run z
.gitignorezCACHEDIR.TAGz+Signature: 8a477f597d28d172789f06886806bc55)find_module_filesupdatefind_missing_cache_filesAssertionErrorr/   r0   isfiler   r   r   r   read
startswith)	rM   r   r   r   rV   r   missing_pathscachedir_tagr   s	            rY   r   zTypeCheckSuite.verify_cache
  s     	^ ,,W55GNNYY[YYYZZZ 99'7KKM ^$%\}%\%\VZ%\%\]]]w~~bgll7?+DlSSTTTTTw||GO$=~NNw~~l+++++, 	V16688&&'TUUUUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   *D??EEdict[str, str]c                H    d |j                                         D             S )Nc                $    i | ]\  }}||j         S rf   )r0   )rg   idr   s      rY   rh   z4TypeCheckSuite.find_module_files.<locals>.<dictcomp>!  s     JJJJBFKJJJrd   )r   items)rM   r   s     rY   r   z TypeCheckSuite.find_module_files   s$    JJ'/2G2G2I2IJJJJrd   r   set[str]c                    d}i }|                                 D ];\  }}t          j        |||          \  }}t          j        |||||          s|||<   <t	          |                                          S )NT)r   r   find_cache_metavalidate_metasetvalues)	rM   r   r   ignore_errorsmissingr   r0   metar   s	            rY   r   z'TypeCheckSuite.find_missing_cache_files#  s~      	# 	#HB+Bg>>GD!&tR}gNN #"7>>##$$$rd   r   r_   c                   t          j        d|t           j                  }|dk    r+d| d}t          j        ||t           j                  }||}|r|                    d          }g }t	          t
          fddd          }t          |dd          }	|                    d	          D ]}
|	                    |
          }t          |t                    sJ d
|
             t          |d          5 }|                                }ddd           n# 1 swxY w Y   |                    |
||f           |S dd|fgS )a+  Return the module and program names for a test case.

        Normally, the unit tests will parse the default ('__main__')
        module and follow all the imports listed there. You can override
        this behavior and instruct the tests to check multiple modules
        by using a comment like this in the test case input:

          # cmd: mypy -m foo.bar foo.baz

        You can also use `# cmdN:` to have a different cmd for incremental
        step N (2, 3, ...).

        Return a list of tuples (module name, file name, program text).
        z!# cmd: mypy -m ([a-zA-Z0-9_. ]+)$)flagsr.   z# cmdz: mypy -m ([a-zA-Z0-9_. ]+)$Nrf   )fscacher    zCan't find ad hoc case file: r   r   r}   main)rC   rD   	MULTILINErF   r	   r   r   splitfind_module
isinstancer_   r   r   r   )rM   r   ry   rT   	alt_regexalt_mmodule_namesoutsearch_pathscacher   r0   r   s                rY   r   zTypeCheckSuite.parse_module.  s   " I9<r|\\\aN 0NNNIIiR\JJJE   	8 771::LC&'7RDDL#L$MMME+11#66 > >((55!$,,[[.[k.[.[[[[$000 ,A#$6688L, , , , , , , , , , , , , , ,

K|<====J677s   5DD	D	)r#   r   r$   r%   )r#   r   r[   r\   r$   r%   )Nr   )r#   r   rw   rx   ry   rE   r$   r%   )
r   r   r   r   r   r   rV   rE   r$   r%   )r   r   r$   r   )r   r   r   r   r$   r   )r   )r   r_   ry   rE   r$   r   )__name__
__module____qualname__typecheck_filesrS   rZ   rv   rL   r   r   r   r   rf   rd   rY   r"   r"   9   s        E!) !) !) !)F
 
 
 
  26 !	\U \U \U \U \U|V V V V,K K K K	% 	% 	% 	% :;+8 +8 +8 +8 +8 +8 +8rd   r"   )/__doc__
__future__r   r/   rC   r   	sysconfigr3   pathlibr   mypyr   mypy.errorsr   mypy.modulefinderr   r   r	   mypy.test.configr
   r   mypy.test.datar   r   r   r   mypy.test.helpersr   r   r   r   r   r   r   r   r   mypy.test.update_datar   version_infor   get_config_varr;   ImportErrorr9   r  remover"   rf   rd   rY   <module>r     s     " " " " " " 				 				 



                  $ $ $ $ $ $ G G G G G G G G G G < < < < < < < < Y Y Y Y Y Y Y Y Y Y Y Y
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 9 8 8 8 8 8
7""tt,DI,DEV,W,W'X'X"   DDD  "/.999 g1222g1222g1222g1222`8 `8 `8 `8 `8Y `8 `8 `8 `8 `8s   *+B B B 