o
    i<%                     @   s*  d Z ddlZddlZddl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mZ ddlmZ ddlmZ ddlZddlmZ dd	lmZmZ d
dlmZ d
dlmZ d
dlmZ ddl m!Z! e"dej#j$Z%dZ&ej'dd Z(dddZ)ej*de
d fddZ+G dd dZ,dS )zWheels support.    N)Iterator)Requirementsys_tags)canonicalize_name)Version)_unpack_zipfile_obj)_egg_basenamewrite_requirements   )extras_from_deps)metadata)_read_utf8_with_fallback)get_platformz^(?P<project_name>.+?)-(?P<version>\d.*?)
    ((-(?P<build>\d.*?))?-(?P<py_version>.+?)-(?P<abi>.+?)-(?P<platform>.+?)
    )\.whl$z8__import__('pkg_resources').declare_namespace(__name__)
c                   C   s   dd t  D S )Nc                 S   s   h | ]
}|j |j|jfqS  )interpreterabiplatform.0tr   r   M/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/setuptools/wheel.py	<setcomp>+   s    z&_get_supported_tags.<locals>.<setcomp>r   r   r   r   r   _get_supported_tags&   s   r   returnc                 C   s   t | D ]Q\}}}t j|| }|D ]}t j||}t j|||}t || qttt|D ]"\}	}
t j||
}t j|||
}t j	|sUt || ||	= q3qt j| ddD ]\}}}|rgJ t 
| q^dS )zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)topdownN)oswalkpathrelpathjoinrenamesreversedlist	enumerateexistsrmdir)src_dirdst_dirdirpathdirnames	filenamessubdirfsrcdstndr   r   r   unpack.   s$   	r2   c               	   c   s>    ddl m}  | | j}zdV  W | | dS | | w )z*
    Temporarily disable info traces.
    r   )logN)	distutilsr3   set_thresholdWARN)r3   savedr   r   r   disable_info_tracesD   s   r8   c                   @   sx   e Zd ZdddZdd Zdd Zd	d
 Zdd ZdddZdd Z	e
dd Ze
dd Ze
dd Ze
dd ZdS )Wheelr   Nc                 C   sR   t tj|}|d u rtd||| _|  D ]
\}}t| || qd S )Nzinvalid wheel name: )	
WHEEL_NAMEr   r   basename
ValueErrorfilename	groupdictitemssetattr)selfr=   matchkvr   r   r   __init__S   s   zWheel.__init__c                 C   s&   t | jd| jd| jdS )z>List tags (py_version, abi, platform) supported by this wheel..)	itertoolsproduct
py_versionsplitr   r   rA   r   r   r   tags[   s
   


z
Wheel.tagsc                 C   s   t dd |  D dS )z2Is the wheel compatible with the current platform?c                 s   s    | ]
}|t  v rd V  qdS )TN)r   r   r   r   r   	<genexpr>e   s    z&Wheel.is_compatible.<locals>.<genexpr>F)nextrL   rK   r   r   r   is_compatiblec   s   zWheel.is_compatiblec                 C   s&   t | j| j| jdkrd nt dd S )Nany)r   z.egg)r	   project_nameversionr   r   rK   r   r   r   egg_nameg   s   zWheel.egg_namec                 C   sF   |  D ]}t|}|drt|t| jr|  S qtd)Nz
.dist-infoz.unsupported wheel format. .dist-info not found)namelist	posixpathdirnameendswithr   
startswithrQ   r<   )rA   zfmemberrV   r   r   r   get_dist_infoq   s   
zWheel.get_dist_infoc                 C   s>   t | j}| || W d   dS 1 sw   Y  dS )z"Install wheel as an egg directory.N)zipfileZipFiler=   _install_as_egg)rA   destination_eggdirrY   r   r   r   install_as_egg{   s   "zWheel.install_as_eggc                 C   s`   | j  d| j }| |}| d}tj|d}| |||| | || | || d S )N-z.dataEGG-INFO)	rQ   rR   r[   r   r   r    _convert_metadata_move_data_entries_fix_namespace_packages)rA   r_   rY   dist_basename	dist_info	dist_dataegg_infor   r   r   r^      s   

zWheel._install_as_eggc                    s   fdd}|d}t |d}t d|  kot dk n  }|s+td| t| tj|  t| \}}	t	 | t	tj|dtj|d	 t
jt||	d
d}
t  t|
dd tj|d W d    d S 1 s|w   Y  d S )Nc                    sT    t | }| d}tj |W  d    S 1 s#w   Y  d S )Nutf-8)	openrU   r    readdecodeemailparserParserparsestr)namefpvaluerg   rY   r   r   get_metadata   s   $z-Wheel._convert_metadata.<locals>.get_metadataWHEELzWheel-Versionz1.0z2.0dev0z"unsupported wheel format version: METADATAzPKG-INFO)install_requiresextras_require)attrsri   zrequires.txt)parse_versiongetr<   r   r   r   r    r9   _convert_requiresrename
setuptoolsDistributiondictr8   r
   get_command_obj)rY   r_   rg   ri   rv   wheel_metadatawheel_versionwheel_v1ry   rz   
setup_distr   ru   r   rc      s:    
"zWheel._convert_metadatac              	      s   t j|j }|dpg }ttt|t|}dd dd  dd ttt t	
} fdd	|D }||fS )
NzRequires-Distc                 S   s   t t| } d | _t| S N)r   strmarker)reqr   r   r   raw_req   s   z(Wheel._convert_requires.<locals>.raw_reqc                 [   s   | j  p	| j |S r   )r   evaluate)r   envr   r   r   eval   s   z%Wheel._convert_requires.<locals>.evalc                 S   s6   z| j j}W n ty   d}Y nw tdd |D S )Nr   c                 s   s2    | ]}t |tr|d  jdkr|d jV  qdS )r   extra   N)
isinstancetuplert   )r   r   r   r   r   rM      s    z=Wheel._convert_requires.<locals>.for_extra.<locals>.<genexpr>)r   _markersAttributeErrorset)r   markersr   r   r   	for_extra   s   z*Wheel._convert_requires.<locals>.for_extrac              	      s.   i | ]  t t fd dD qS )c                 3   s(    | ]}|r |d r|V  qdS )r   Nr   )r   r   )r   r   r   r   r   rM      s   & z5Wheel._convert_requires.<locals>.<dictcomp>.<genexpr>)r#   map)r   r   r   r   reqsr   r   
<dictcomp>   s    z+Wheel._convert_requires.<locals>.<dictcomp>)r   r   atget_allr#   r   r   r   filterrG   filterfalse)r_   rg   mddepsextrasry   rz   r   r   r   r~      s   	zWheel._convert_requiresc                    s   t j|   t j d}t j|rNt j| dd}t | t |D ]"}|dr8t t j|| q&t t j||t j|| q&t 	| t
t jj fdddD D ]}t||  q\t j rqt 	  dS dS )z,Move data entries to their correct location.scriptsrb   z.pycc                 3   s    | ]
}t j |V  qd S r   )r   r   r    )r   r1   rh   r   r   rM      s
    
z+Wheel._move_data_entries.<locals>.<genexpr>)dataheaderspurelibplatlibN)r   r   r    r%   mkdirlistdirrW   unlinkr   r&   r   r2   )r_   rh   dist_data_scriptsegg_info_scriptsentryr,   r   r   r   rd      s.   



zWheel._move_data_entriesc              	   C   s   t j| d}t j|rYt| }|D ]E}t jj|g|dR  }t j|d}t j|s6t | t j|sXt|ddd}|t	 W d    n1 sSw   Y  qd S d S )Nznamespace_packages.txtrF   z__init__.pywrj   )encoding)
r   r   r    r%   r   rJ   r   rk   writeNAMESPACE_PACKAGE_INIT)ri   r_   namespace_packagesmodmod_dirmod_initrs   r   r   r   re      s   
zWheel._fix_namespace_packagesr   N)__name__
__module____qualname__rE   rL   rO   rS   r[   r`   r^   staticmethodrc   r~   rd   re   r   r   r   r   r9   R   s     





$
+
r9   r   )-__doc__
contextlibrn   	functoolsrG   r   rU   rer\   collections.abcr   packaging.requirementsr   packaging.tagsr   packaging.utilsr   packaging.versionr   r|   r   setuptools.archive_utilr   setuptools.command.egg_infor	   r
   
_discoveryr   
_importlibr   unicode_utilsr   distutils.utilr   compileVERBOSErB   r:   r   cacher   r2   contextmanagerr8   r9   r   r   r   r   <module>   sD    

