o
    i
                     @  s|   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mZ dddZG d	d
 d
Zdd Zdd ZdS )zReusable functions and classes for different types of integration tests.

For example ``Archive`` can be used to check the contents of distribution built
with setuptools, and ``run`` will always try to be as verbose as possible to
facilitate debugging.
    )annotationsN)IteratorPath)ZipFileZipInfoc                 C  sz   t j| dddi tj|pi d}|jd |j }td td|  d|j d|  |jd	kr2|S t |j| |j|j)
NTutf-8)capture_outputtextencodingenv
z<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~z	Command: z
return code: z

r   )	
subprocessrunosenvironstdoutstderrprint
returncodeCalledProcessError)cmdr   rout r   a/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/setuptools/tests/integration/helpers.pyr      s   	
r   c                   @  s4   e Zd ZdZdddZdddZd	d
 Zdd ZdS )Archivez5Compatibility layer for ZipFile/Info and TarFile/InforeturnNonec                 C  sH   || _ |drt|d| _d S |drt|| _d S t| d)Nztar.gzr:gzzipz# doesn't seem to be a zip or tar.gz)	_filenameendswithtarfileopen_objr   
ValueError)selffilenamer   r   r   __init__)   s   

zArchive.__init__-Iterator[ZipInfo] | Iterator[tarfile.TarInfo]c                 C  s$   t | jdrt| j S t| jS )Ninfolist)hasattrr%   iterr+   )r'   r   r   r   __iter__2   s   
zArchive.__iter__c                 C  s   t |dr|jS |jS )Nr(   )r,   r(   name)r'   zip_or_tar_infor   r   r   get_name7   s   
zArchive.get_namec                 C  s\   t | jdr%| j|}|d u rd|j d| j }t|t| dS t| j|dS )NextractfilezInvalid z in r   )r,   r%   r2   r/   r!   r&   strread)r'   r0   contentmsgr   r   r   get_content<   s   zArchive.get_contentN)r   r   )r   r*   )__name__
__module____qualname____doc__r)   r.   r1   r7   r   r   r   r   r   &   s    

	r   c                 C  sZ   t | d}dd | D }W d    n1 sw   Y  dd |D }dd |D S )Nr   c                 S  s   g | ]}t |qS r   r   .0fr   r   r   
<listcomp>H       z%get_sdist_members.<locals>.<listcomp>c                 s  s$    | ]}d  |jdd V  qdS )/   N)joinpartsr<   r   r   r   	<genexpr>J   s   " z$get_sdist_members.<locals>.<genexpr>c                 S  s   h | ]}|r|qS r   r   r<   r   r   r   	<setcomp>K   r@   z$get_sdist_members.<locals>.<setcomp>)r#   r$   getnames)
sdist_pathtarfilesrelative_filesr   r   r   get_sdist_membersF   s
   rL   c                 C  s8   t | }t| W  d    S 1 sw   Y  d S N)r   setnamelist)
wheel_pathzipfiler   r   r   get_wheel_membersN   s   

$rR   rM   )r;   
__future__r   r   r   r#   collections.abcr   pathlibr   rQ   r   r   r   r   rL   rR   r   r   r   r   <module>   s    
 