
    X-Ph                       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S )%    )annotationsN)Iterator)contextmanager)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.testcaser
   returnNonec                $    t          |           d S )N)test_pep561)selfr   s     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/test/testpep561.pyrun_casezPEP561Suite.run_case   s    H    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                L   t           j        dk    s3d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   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_piprS   1   s    	G##)3333G3333)3333G33333 	$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<    B( ."BB( B  B( #B $B( (C7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%   rG   rH   z-er   	PIP_BUILDrI   T)r'   r(   rK   NrL   r   r)   )r2   r;   r=   r   r.   r/   appendupdaterP   rN   rO   r   r   r0   r1   rQ   r8   r4   r5   r6   r7   )	rT   r!   rU   working_dirdirrR   rK   r?   r@   s	            r   install_packager]   F   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 r   r
   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|                    dd          ^}}|r |                    t2          j        d          }|                    d                    |g|                              d                     |dk    rdnd|dz    }|dk    r| j         n| j!        "                    |dz   g           }tG          ||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      FrU   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
:)maxsplit/ z on iteration zInvalid output (z, line ))'old_cwdr9   
executable
parse_pkgsinputparse_mypy_args
ValueErrorrA   rS   r]   listnameopenwriterY   extend
find_steps	enumerater   mypyapir1   
splitlines
startswithr	   r2   seplenrstripsplitreplacer=   outputoutput2getr   filelineremove)r   r,   pkgspip_args	mypy_argsrU   argr&   r>   r!   rT   cmd_linehas_programprogramfsstepsi
operationsr~   outr@   r4   r   r;   rest
iter_countexpecteds                               r   r   r   _   s   '')G'''^F5q 122ND(q 122IH = =*HH;c;;<<<;;;;;;	F		 5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 	J 	J??=26#9:: JMM$s=26+A'B'B'D'D"E"L"LV"T"TUUUU #'**S1*"="=KD4 9#||BFC88MM#((D=4="9"9"@"@"H"HIIII Avv+CAE+C+CJ*+q&&xh6F6J6J1q5RT6U6UH&U8=UUUUUU     	Igk5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s8   A#N #D0$N0D4	4N7D4	8INNN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).0rT   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   )rx   r|   )r   pkgs_strargss      r   rj   rj      sv    i(( ]Bx!!""+++C004<<s(;(;<<<>[>[VZ>[>[>[\\r   r   	list[str]c                    t          j        d|           }|sg S |                    d                                          S )Nz# flags: (.*)$r_   )rematchgroupr|   )r   ms     r   rl   rl      s=    
!4((A 	771::r   )r!   r"   r   r#   )r!   r"   r   r   )rT   r"   r!   r"   rU   rV   r   r   r   )r   r"   r   r   )r   r"   r   r   )!
__future__r   r2   r   r0   r9   r.   collections.abcr   
contextlibr   rN   mypy.apiru   mypy.test.configr   r   r   r	   mypy.test.datar
   r   mypy.test.helpersr   r   r   ri   rA   rS   r]   r   rj   rl   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2D D D DN] ] ] ]     r   