o
    tBh                     @  s   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	 d	eZeejfd'ddZejddfd(ddZd)ddZd*dd Zd+d#d$Zd,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                   @  s    e Zd ZdgZdZd
ddZd	S )PEP561Suitezpep561.test.	test_caser	   returnNonec                 C  s   t | d S N)test_pep561)selfr    r   k/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypy/test/testpep561.pyrun_case   s   zPEP561Suite.run_caseN)r   r	   r   r   )__name__
__module____qualname__files	base_pathr   r   r   r   r   r      s    r   python_executablestrr   Iterator[tuple[str, str]]c              	   c  s    t  Z}tj| dd|gt dd}|jdkr+|jd|j	d }t
d| tjdkr@|tjtj|d	d
fV  n|tjtj|dd
fV  W d   dS W d   dS 1 sbw   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errr   r   r   
virtualenv   s   


  "r<   TFpkguse_pipbooleditabler   c           
      C  s0  t jt| }t p}|r!|dddg}|r|d |d n|dg}|r-|d n|d d|i}|t j z"t	j
ttd	 tj||d
|d}W d   n1 sXw   Y  W n t	jys }	 ztdt |	d}	~	ww W d   n1 s~w   Y  |jdkrt|jd|jd dS )z.Install a package from test-data/packages/pkg/r    pipinstallz-er   zsetup.pydevelop	PIP_BUILD)timeoutT)r"   r#   envNzFailed to acquire r   r$   )r-   r6   r8   r   r)   r*   appendupdateenvironfilelockFileLockr   r   r+   r,   Timeoutr3   r/   r0   r1   r2   )
r=   r   r>   r@   working_dirdirinstall_cmdrF   r:   r;   r   r   r   install_package1   s6   



rP   testcaser	   c                 C  s  | j dus	J dtj}|dusJ dt| jd \}}t| jd }d}d}|D ]}|dkr3d}q*|d	kr9d}q*|g ksBJ d
t|}|\}	}
|D ]	}t||
|| qNt|}d|v pcd|v  }|r| j	d }t
|ddd}| jD ]
}|| d qwW d   n1 sw   Y  || |dg |
tjkr|d|
  |  }|g gkrg g| }t|D ]y\}}t| g }tj|\}}}||  D ]/}|ttj r||tttj d d q|ttj td }||d q|dkrdnd|d  }|dkr| jn| j|d g }t||d| j  d| j! d|  q|rEt"| W d   dS W d   dS 1 sQw   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      TFzno-pipr@   z(No packages to install for PEP 561 test?z-pz	--packagez.pywr$   )encoding
z--no-error-summaryz--python-executable=z
/ z on iteration zInvalid output (z, line ))#old_cwdr4   
executable
parse_pkgsinputparse_mypy_argsr<   rP   listnameopenwriterG   extend
find_steps	enumerater   mypyapir,   
splitlines
startswithr   r-   seplenrstripreplaceoutputoutput2getr   filelineremove)rQ   r'   pkgspip_args	mypy_argsr>   r@   argr!   r9   r   r=   cmd_linehas_programprogramfsstepsi
operationsrm   outr;   r/   rq   
iter_countexpectedr   r   r   r   P   sn   





$".$r   commenttuple[list[str], list[str]]c                 C  sJ   |  ds	g g fS | dd  d^}}dd |dD dd |D fS )Nz# pkgs:   ;c                 S     g | ]}|  qS r   strip).0r=   r   r   r   
<listcomp>       zparse_pkgs.<locals>.<listcomp>,c                 S  r   r   r   )r   rv   r   r   r   r      r   )rh   split)r   pkgs_strargsr   r   r   r[      s   
"r[   rq   	list[str]c                 C  s"   t d| }|s
g S |d S )Nz# flags: (.*)$rR   )rematchgroupr   )rq   mr   r   r   r]      s   r]   c                  C  s   J r   )r)   r*   r-   r.   chdirr6   r8   makedirsr`   closera   r<   r4   rZ   rG   rb   re   rf   r,   )packagespkg_nametemp_dirold_dirfull_pkg_namepkg_init_namemypy_config_path	mypy_filer!   r9   r   cmd_line_argsr   r;   r/   r   r   r   test_mypy_path_is_respected   s   r   )r   r   r   r   )
r=   r   r   r   r>   r?   r@   r?   r   r   )rQ   r	   r   r   )r   r   r   r   )rq   r   r   r   )r   r   )!
__future__r   r-   r   r+   r4   r)   
contextlibr   typingr   rJ   mypy.apire   mypy.test.configr   r   r   r   mypy.test.datar	   r
   mypy.test.helpersr   r   r   rZ   r<   rP   r   r[   r]   r   r   r   r   r   <module>   s,    

B
