
    6 f                       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Zd dlZd dlmZmZmZmZ d dlmZmZ d dlmZmZ  G d d	e          Zeej        fd d            Zd!dZej        dfd"dZd#dZd$dZd%dZ d&dZ!dS )'    )annotationsN)contextmanager)Iterator)package_pathpip_lockpip_timeouttest_temp_dir)DataDrivenTestCase	DataSuite)assert_string_arrays_equalperform_file_operationsc                       e Zd ZdgZdZd	dZdS )
PEP561Suitezpep561.test.	test_caser
   returnNonec                $    t          |           d S N)test_pep561)selfr   s     J/var/www/equiseq/venv/lib/python3.11/site-packages/mypy/test/testpep561.pyrun_casezPEP561Suite.run_case   s    I    N)r   r
   r   r   )__name__
__module____qualname__files	base_pathr    r   r   r   r      s4        OEI     r   r   python_executablestrr   Iterator[tuple[str, str]]c           	   #    K   t          j                    5 }t          j        | dd|gt	          j                    d          }|j        dk    rG|j                            d          |j	                            d          z   }t          d|z             t          j        dk    rC|t          j                            t          j                            |d	d
                    fV  nB|t          j                            t          j                            |dd
                    fV  ddd           dS # 1 swxY w Y   dS )z~Context manager that creates a virtualenv in a temporary directory

    Returns the path to the created Python executable
    -mvenvT)cwdcapture_outputr   utf-8zFailed to create venv.
win32ScriptspythonbinN)tempfileTemporaryDirectory
subprocessrunosgetcwd
returncodestdoutdecodestderr	Exceptionsysplatformpathabspathjoin)r!   venv_dirprocerrs       r   
virtualenvrA      sw      
	$	&	& 
U(~fh7RY[[Y]
 
 
 ?a+$$W--0B0B70K0KKC6<===<7""BGOOBGLL9h,W,WXXXXXXXBGOOBGLL5(,S,STTTTTT
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
U 
Us   DD77D;>D;r   c                ~   t           j        dk    sLdt           j        cxk    rdk     s5n dt           j        cxk    rdk     sn dt           j        cxk    rdk     rn ndS | dd	d
dg}	 t          j        t          t
                    5  t          j        |dt          j	                  }ddd           n# 1 swxY w Y   n/# t          j
        $ r}t          dt                     |d}~ww xY w|j        dk    rBt          |j                            d          |j                            d          z             dS )zAInstall pip>=21.3.1. Required for editable installs with PEP 660.)      )rC   
   rC   )rC   	   rD   )rC   rE   )rC         )rC   rF   Nr%   pipinstallzpip>=21.3.1timeoutT)r(   envFailed to acquire r   r)   )r9   version_infofilelockFileLockr   r   r0   r1   r2   environTimeoutr8   r4   r5   r6   r7   )r!   install_cmdr?   r@   s       r   upgrade_piprU   1   s    	G##)3333G3333)3333G3333)2222F22222 	$dE9mLKBx=== 	T 	T>+d
SSSD	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T B B B7X7788cAB!**733dk6H6H6Q6QQRRR s<   ' C "B5)C 5B99C <B9=C C-C((C-Fpkgeditableboolc                   t           j                            t          |           }t	          j                    5 }|dddg}|r|                    d           |                    d           d|i}|                    t           j                   	 t          j
        t          t                    5  t          j        ||d|	          }d
d
d
           n# 1 swxY w Y   n/# t          j        $ r}t!          dt                     |d
}~ww xY wd
d
d
           n# 1 swxY w Y   |j        dk    rBt!          |j                            d          |j                            d          z             d
S )z.Install a package from test-data/packages/pkg/r%   rI   rJ   z-er   	PIP_BUILDrK   T)r'   r(   rM   NrN   r   r)   )r2   r;   r=   r   r.   r/   appendupdaterR   rP   rQ   r   r   r0   r1   rS   r8   r4   r5   r6   r7   )	rV   r!   rW   working_dirdirrT   rM   r?   r@   s	            r   install_packager_   G   s    ',,|S11K		$	&	& F#($yA 	%t$$$3 C 

2:	F"8[AAA b b!~k{SW]`aaab b b b b b b b b b b b b b b 	F 	F 	F;;;<<#E	FF F F F F F F F F F F F F F F  !**733dk6H6H6Q6QQRRR sZ   AD C!0C	C!C	C!C	C! D!D0DDDD #D testcaser
   c                   | j         
J d            t          j        }|
J d            t          | j        d                   \  }}t          | j        d                   }d}|D ]}|dk    rd}t          d	|           |s
J d
            t          |          5 }|\  }}	|rt          |	           |D ]}
t          |
|	|           t          |          }d|v pd|v  }|rl| j        dz   }t          |dd          5 }| j        D ]}|                    | d           	 ddd           n# 1 swxY w Y   |                    |           |                    ddg           |	t          j        k    r|                    d|	            |                                 }|g gk    rg g|z   }t#          |          D ]\  }}t%          |           g }t&          j                            |          \  }}}||z                                   D ]}|                    t0          t2          j        z             rP|                    |t7          t0          t2          j        z             d                             d                     y|                    t0          t2          j        z   t0          dz             }|                    |                    d                     |dk    rdnd|dz    }|dk    r| j        n| j                             |dz   g           }tC          ||d| j"         d| j#         d|            |rt3          j$        |           ddd           dS # 1 swxY w Y   dS )z;Test running mypy on files that depend on PEP 561 packages.Nztest was not properly set upzShould be impossibler      FrW   TzUnknown pip argument: z(No packages to install for PEP 561 test?z-pz	--packagez.pywr)   )encoding
z--no-error-summaryz--hide-error-codesz--python-executable=z
/ z on iteration zInvalid output (z, line ))%old_cwdr9   
executable
parse_pkgsinputparse_mypy_args
ValueErrorrA   rU   r_   listnameopenwriter[   extend
find_steps	enumerater   mypyapir1   
splitlines
startswithr	   r2   seplenrstripreplaceoutputoutput2getr   filelineremove)r`   r,   pkgspip_args	mypy_argsrW   argr&   r>   r!   rV   cmd_linehas_programprogramfsstepsi
operationsr~   outr@   r4   r   
iter_countexpecteds                             r   r   r   `   sX   '')G'''^F5q 122ND(q 122IH = =*HH;c;;<<<;;;;;4	F		 2t&*## 	+)*** 	> 	>CC!2H====	??8+F{h/FG 	%me+GgsW555 &! & &AGGqHHH%%%%&& & & & & & & & & & & & & & & OOG$$$-/CDEEE..OOF3DFFGGG##%%RD==D5LE&u-- 	 	MAz#J///F#'8<<#9#9 Cj s..00 7 7??=26#9:: 7MM$s=26+A'B'B'D'D"E"L"LV"T"TUUUU  <<(>PS@STTDMM$++f"5"56666 Avv+CAE+C+CJ*+q&&xh6F6J6J1q5RT6U6UH&U8=UUUUUU     	Ige2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s8   A#M& #D0$M&0D4	4M&7D4	8H!M&&M*-M*commenttuple[list[str], list[str]]c                    |                      d          sg g fS | dd                              d          ^}}d |                    d          D             d |D             fS )Nz# pkgs:   ;c                6    g | ]}|                                 S r    strip).0rV   s     r   
<listcomp>zparse_pkgs.<locals>.<listcomp>   s     <<<<<<r   ,c                6    g | ]}|                                 S r    r   )r   r   s     r   r   zparse_pkgs.<locals>.<listcomp>   s     >[>[>[ssyy{{>[>[>[r   )ry   split)r   pkgs_strargss      r   rk   rk      sv    i(( ]Bx!!""+++C004<<s(;(;<<<>[>[VZ>[>[>[\\r   r   	list[str]c                    t          j        d|           }|sg S |                    d                                          S )Nz# flags: (.*)$rb   )rematchgroupr   )r   ms     r   rm   rm      s=    
!4((A 	771::r   c                     J r   )r.   r/   r2   r3   chdirr;   r=   makedirsrq   closerr   rA   r9   rj   r[   rs   rv   rw   r1   )packagespkg_nametemp_dirold_dirfull_pkg_namepkg_init_namemypy_config_path	mypy_filer&   r>   r!   cmd_line_argsr   r@   r4   s                  r   test_mypy_path_is_respectedr      s    5r   )r!   r"   r   r#   )r!   r"   r   r   )rV   r"   r!   r"   rW   rX   r   r   )r`   r
   r   r   )r   r"   r   r   )r   r"   r   r   )r   r   )"
__future__r   r2   r   r0   r9   r.   
contextlibr   typingr   rP   mypy.apirv   mypy.test.configr   r   r   r	   mypy.test.datar
   r   mypy.test.helpersr   r   r   rj   rA   rU   r_   r   rk   rm   r   r    r   r   <module>r      s   " " " " " " 				 				     



  % % % % % %         O O O O O O O O O O O O 8 8 8 8 8 8 8 8 Q Q Q Q Q Q Q Q    )    (+ U U U U U$S S S S. (+~S S S S S2A A A AH] ] ] ]              r   