
    X-Ph`5                    `   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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  ddl!m"Z" 	 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           ej)        dvre&(                    d            G d de          Z*dS )zType checker test cases    )annotationsN)build)Graph)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)update_testcase_outputzcheck-*.test)pattern)   
   zcheck-python310.test)r      zcheck-python311.test)r      zcheck-python312.test)r      zcheck-python313.test)darwinwin32zcheck-modules-case.testc                  \    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Z	 d(d)dZd	S )*TypeCheckSuitetestcaser   returnNonec                n   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#t'          d                    ||                    cl|                                }	t-          d|dz             D ]A}
|
dz
  }|t/          |	          k     r|d	k    r|	|         ng }|                     |||
           Bd S |                     |           d S )
Nzcheck-reports.testz$Cannot import lxml. Is it installed?incremental	serialize   z
\.([2-9])$   z7Output file {} exists though test case only has {} runsr   )lxmlospathbasenamefilepytestskipnamelowermaxlistoutput2keyswalkcurdirresearchintgroup
ValueErrorformat
find_stepsrangelenrun_case_once)selfr#   r'   	num_stepsdndirsfilesr/   mstepsstepidxopss                S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/test/testcheck.pyrun_casezTypeCheckSuite.run_case9   s   <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(((((    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)rT   s    rN   	_filenamez8TypeCheckSuite._sort_output_if_needed.<locals>._filename\   s    >>#&&q))rP   c                    i | ]\  }}||	S  r[   ).0rL   r/   s      rN   
<dictcomp>z9TypeCheckSuite._sort_output_if_needed.<locals>.<dictcomp>_   s    ZZZic4cZZZrP   c              3  .   K   | ]} |          V  d S )Nr[   )r\   msgrY   s     rN   	<genexpr>z8TypeCheckSuite._sort_output_if_needed.<locals>.<genexpr>_   s,      <Y<YPSYYs^^<Y<Y<Y<Y<Y<YrP   c                B                          |           d          S )N)get)r_   rY   file_weightss    rN   <lambda>z7TypeCheckSuite._sort_output_if_needed.<locals>.<lambda>a   s     <3C3CIIcNNTV3W3W rP   )key)rT   rU   r$   rU   )output_inline_startrH   rB   output	enumeratesorted)rD   r#   rQ   rL   rY   rd   s       @@rN   _sort_output_if_neededz%TypeCheckSuite._sort_output_if_neededW   s    *~ 	HO(<(<!<!<F	* 	* 	* 	* [Z9<Y<Y<Y<YWX<Y<Y<Y3Y3YZZZ &OCDD!'W'W'W'W'W!
 !
 !
rP   Nr   
operationslist[FileOperation] | Noneincremental_stepr<   c                	   |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	|_        d
j        v rd	|_        dj        v rd|_        dj        vr j                            d           |_        dj        vrd	|_        dj        vrd	|_        |r|j        rd	|_        nd|_        j        st.          j        |_        g }|D ].\  }	}
}|                    t7          |
|	|rd n|                     /t.          j                             t:          d          }t          j                            d|           d }	 t?          j        ||t@                    }|j!        }n# tD          $ r}|j#        }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j$        rtK          |          }|dk     r1|dk    rd}n
|dk    sJ d}| &                    |           j'        }n#d| dz   }j(        )                    |g           }||k    r-j*        +                    dd          rtY          ||           t[          |||.                    j        j/                             |r7|j        t.          j        k    r'| 0                    ||j!        |j1        |j2                   d}|r|tg          |dz             z  }j4        )                    |dz             }fd|j1        j5        D             }|tm          |||           |dk    r|dk    rdntg          |dz
            }j7        )                    |dz
            }|tq          d|z   ||j1        j9                   j:        )                    |dz
            }|tq          d|z   ||j1        j;                   j<        rt{          |d            d S d S )!N
_pluginr   r*   __main__wutf8encodingTcolumns
errorcodesFabstract	_no_empty	lowercasezunion-errorplugins)sourcesoptionsalt_lib_pathr)   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)rn   targetsc                ,    g | ]\  }}|j         v |S r[   )test_modules)r\   moduletargetr#   s      rN   
<listcomp>z0TypeCheckSuite.run_case_once.<locals>.<listcomp>   s5       "FFX222 222rP    	recheckedstaleztmp/)strip_prefix)>joininputparse_modulerH   r   endswithsysmodulesopenwriter   r   use_builtins_fixturesshow_tracebackr/   show_column_numbershide_error_codesr2   allow_empty_bodiesforce_uppercase_builtinsforce_union_syntaxr'   writescacher,   devnull	cache_dirappendr   r-   r
   insertr   r   errorsr   messagesnormalize_outputr   rk   rh   r6   rc   config	getoptionr   r   r?   lineverify_cachemanagergraphrU   expected_fine_grained_targetsprocessed_targetsr   expected_rechecked_modulesr   rechecked_modulesexpected_stale_modulesstale_modulesoutput_filesr   )rD   r#   rl   rn   original_program_textmodule_datar/   _r   module_nameprogram_pathprogram_textfr~   r}   
plugin_dirresrQ   er_   rh   r2   expectedactualsuffixexpected_recheckedexpected_stales    `                         rN   rC   zTypeCheckSuite.run_case_onced   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(,%!% %%*.G'8=((',G$X]**-5]-C-CK-P-P)PG&hm++/3G,--)-G& 	/ 3 	/"&G"'G' /$&J!7B 	 	3K|NNL+?O7attUabb    W\\"2I>>
:&&&	+gw][[[C
AA 	 	 	
AAAAAA	 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"61cjj.V.VWWW 	 BJ..!!+sz3;	RRRD 2,q0111=AABRUVBVWWH   &)k&C  F
 #)$&AAA!##/144#>NQR>R:S:S%-%H%L%LM]`aMa%b%b"%1-#f,.@#+B_   "*!@!D!DEUXYEY!Z!Z!--&(.#+:S     	U#H.>VTTTTTT	U 	UsB   .CC	C	'#I 
J 
I&I!J !I&&J 'J6r   list[tuple[str, str, str]]r   build.BuildManagerr   r   c                .   |                      |          }fd|j                                        D             }|                     |          }|                    d |D                        |                     ||          }|s|r
J d            ||k    s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                >    h | ]\  }}|         j         |j        S r[   )transitive_errorr-   )r\   idrI   r   s      rN   	<setcomp>z.TypeCheckSuite.verify_cache.<locals>.<setcomp>   s+    bbb52quRyGabbbbrP   c                    i | ]	\  }}}||
S r[   r[   )r\   r   r-   texts       rN   r]   z/TypeCheckSuite.verify_cache.<locals>.<dictcomp>   s!    UUU.Ek4TUUUrP   z-Some modules reported error despite no errorszcache data discrepancy z != z
.gitignorezCACHEDIR.TAGz+Signature: 8a477f597d28d172789f06886806bc55)find_error_message_pathsr   itemsfind_module_filesupdatefind_missing_cache_filesAssertionErrorr,   r-   isfiler   r~   r   r   read
startswith)rD   r   rQ   r   r   error_pathsbusted_pathsr   missing_pathscachedir_tagr   s       `      rN   r   zTypeCheckSuite.verify_cache   s    33A66bbbbGO,A,A,C,Cbbb((11UUUUUVVV55gwGG
 _,__0____,, !\=!\!\l!\!\]]]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   *F

FFset[str]c                    t                      }|D ]C}t          j        d|          }|r*|                    d          }|                    |           D|S )Nz.([^\s:]+):(\d+:)?(\d+:)? (error|warning|note):r*   )setr:   matchr=   add)rD   rQ   hitsr   rI   ps         rN   r   z'TypeCheckSuite.find_error_message_paths   sX    uu 	 	DJDQQA GGAJJrP   dict[str, str]c                H    d |j                                         D             S )Nc                $    i | ]\  }}||j         S r[   )r-   )r\   r   r   s      rN   r]   z4TypeCheckSuite.find_module_files.<locals>.<dictcomp>
  s     JJJJBFKJJJrP   )r   r   )rD   r   s     rN   r   z TypeCheckSuite.find_module_files	  s$    JJ'/2G2G2I2IJJJJrP   r   c                    d}i }|                                 D ]8\  }}t          j        |||          }t          j        |||||          s|||<   9t	          |                                          S )NT)r   r   find_cache_metavalidate_metar   values)rD   r   r   ignore_errorsmissingr   r-   metas           rN   r   z'TypeCheckSuite.find_missing_cache_files  sz      	# 	#HB(T7;;D&tR}gNN #"7>>##$$$rP   r   rU   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_. ]+)$Nr[   )fscacher~    zCan't find ad hoc case file: rt   ru   rr   main)r:   r;   	MULTILINEr=   r	   r   r   splitfind_module
isinstancerU   r   r   r   )rD   r   rn   rI   	alt_regexalt_mmodule_namesoutsearch_pathscacher   r-   r   s                rN   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   rQ   rR   r$   r%   )Nr   )r#   r   rl   rm   rn   r<   r$   r%   )
r   r   rQ   rR   r   r   r   r   r$   r%   )rQ   rR   r$   r   )r   r   r$   r   )r   r   r   r   r$   r   )r   )r   rU   rn   r<   r$   r   )__name__
__module____qualname__typecheck_filesrH   rO   rk   rC   r   r   r   r   r   r[   rP   rN   r"   r"   6   s        E) ) ) )<
 
 
 
  26 !	~U ~U ~U ~U ~U@V V V V8   K K K K	% 	% 	% 	% :;+8 +8 +8 +8 +8 +8 +8rP   r"   )+__doc__
__future__r   r,   r:   r   mypyr   
mypy.buildr   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   mypy.test.update_datar   r+   ImportErrorr0   r   version_inforemoveplatformr"   r[   rP   rN   <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KKKK   DDD  "/.999 g1222g1222g1222g1222 <***4555L8 L8 L8 L8 L8Y L8 L8 L8 L8 L8s    A% %A/.A/