a
    6Rh	                     @   s`   d 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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.
    NPath)ZipFilec                 C   s~   t j| dddi tj|pi d}|jd |j }td td|  d|j d|  |jd	krd|S t |j| |j|jd S )
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   Z/opt/python-3.9.24/usr/lib/python3.9/site-packages/setuptools/tests/integration/helpers.pyr      s    	
r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )Archivez5Compatibility layer for ZipFile/Info and TarFile/Infoc                 C   sH   || _ |dr t|d| _n$|dr6t|| _nt| dd S )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__c                 C   s$   t | jdrt| j S t| jS )Ninfolist)hasattrr    iterr%   )r"   r   r   r   __iter__/   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_name4   s    
zArchive.get_namec                 C   s\   t | jdrJ| j|}|d u r<d|j d| j }t|t| dS t| j|dS )NextractfilezInvalid z in r   )r&   r    r,   r)   r   r!   strread)r"   r*   contentmsgr   r   r   get_content9   s    zArchive.get_contentN)__name__
__module____qualname____doc__r$   r(   r+   r1   r   r   r   r   r   #   s
   	r   c                 C   sZ   t | d"}dd | D }W d    n1 s40    Y  dd |D }dd |D S )Nr   c                 S   s   g | ]}t |qS r   r   .0fr   r   r   
<listcomp>E       z%get_sdist_members.<locals>.<listcomp>c                 s   s"   | ]}d  |jdd V  qdS )/   N)joinpartsr6   r   r   r   	<genexpr>G   r:   z$get_sdist_members.<locals>.<genexpr>c                 S   s   h | ]}|r|qS r   r   r6   r   r   r   	<setcomp>H   r:   z$get_sdist_members.<locals>.<setcomp>)r   r   getnames)Z
sdist_pathtarfilesZrelative_filesr   r   r   get_sdist_membersC   s    0rD   c                 C   s8   t | }t| W  d    S 1 s*0    Y  d S )N)r   setnamelist)
wheel_pathzipfiler   r   r   get_wheel_membersK   s    
rI   )N)r5   r   r   r   pathlibr   rH   r   r   r   rD   rI   r   r   r   r   <module>   s   
 