B
    ©»ˆd !  ã               @   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ZddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZ e d	ej¡jZd
Zejdddd„ ƒZdd„ Zej dd„ ƒZ!G dd„ dƒZ"dS )zWheels support.é    N)Úget_platform)ÚVersion)Úsys_tags)Úcanonicalize_name)Úwrite_requirementsÚ_egg_basename)Ú_unpack_zipfile_objz‚^(?P<project_name>.+?)-(?P<version>\d.*?)
    ((-(?P<build>\d.*?))?-(?P<py_version>.+?)-(?P<abi>.+?)-(?P<platform>.+?)
    )\.whl$z8__import__('pkg_resources').declare_namespace(__name__)
)Úmaxsizec               C   s   dd„ t ƒ D ƒS )Nc             S   s   h | ]}|j |j|jf’qS © )ÚinterpreterÚabiÚplatform)Ú.0Útr
   r
   úB/var/www/html/venv/lib/python3.7/site-packages/setuptools/wheel.pyú	<setcomp>%   s    z&_get_supported_tags.<locals>.<setcomp>)r   r
   r
   r
   r   Ú_get_supported_tags    s    r   c             C   sî   x¸t  | ¡D ]ª\}}}t j || ¡}x6|D ].}t j ||¡}t j |||¡}t  ||¡ q*W xXttt|ƒƒƒD ]D\}	}
t j ||
¡}t j |||
¡}t j 	|¡snt  ||¡ ||	= qnW qW x.t j| ddD ]\}}}|rÜt
‚t  |¡ qÊW 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ÚAssertionErrorÚrmdir)Úsrc_dirZdst_dirÚdirpathÚdirnamesÚ	filenamesÚsubdirÚfÚsrcÚdstÚnÚdr
   r
   r   Úunpack(   s    
r*   c           	   c   s4   ddl m}  |  | j¡}z
dV  W d|  |¡ X dS )z*
    Temporarily disable info traces.
    r   )ÚlogN)Ú	distutilsr+   Úset_thresholdÚWARN)r+   Zsavedr
   r
   r   Údisable_info_traces>   s
    
r/   c               @   sh   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
dd„ ƒZe
dd„ ƒZe
dd„ ƒZdS )ÚWheelc             C   sT   t tj |¡ƒ}|d kr$td| ƒ‚|| _x$| ¡  ¡ D ]\}}t| ||ƒ q8W d S )Nzinvalid wheel name: %r)	Ú
WHEEL_NAMEr   r   ÚbasenameÚ
ValueErrorÚfilenameÚ	groupdictÚitemsÚsetattr)Úselfr4   ÚmatchÚkÚvr
   r
   r   Ú__init__M   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   )r8   r
   r
   r   ÚtagsU   s    

z
Wheel.tagsc             C   s   t dd„ |  ¡ D ƒdƒS )z2Is the wheel compatible with the current platform?c             s   s   | ]}|t ƒ krd V  qdS )TN)r   )r   r   r
   r
   r   ú	<genexpr>_   s    z&Wheel.is_compatible.<locals>.<genexpr>F)ÚnextrB   )r8   r
   r
   r   Úis_compatible]   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   )r8   r
   r
   r   Úegg_namea   s
    zWheel.egg_namec             C   sJ   x<|  ¡ D ]0}t |¡}| d¡r
t|ƒ t| jƒ¡r
|S q
W tdƒ‚d S )Nz
.dist-infoz.unsupported wheel format. .dist-info not found)ÚnamelistÚ	posixpathÚdirnameÚendswithr   Ú
startswithrG   r3   )r8   ÚzfÚmemberrL   r
   r
   r   Úget_dist_infoh   s    

zWheel.get_dist_infoc          	   C   s(   t  | j¡}|  ||¡ W dQ R X dS )z"Install wheel as an egg directory.N)ÚzipfileÚZipFiler4   Ú_install_as_egg)r8   Údestination_eggdirrO   r
   r
   r   Úinstall_as_eggr   s    zWheel.install_as_eggc             C   s\   d| j | jf }|  |¡}d| }tj |d¡}|  ||||¡ |  ||¡ |  ||¡ d S )Nz%s-%sz%s.datazEGG-INFO)	rG   rH   rQ   r   r   r   Ú_convert_metadataÚ_move_data_entriesÚ_fix_namespace_packages)r8   rU   rO   Zdist_basenameÚ	dist_infoÚ	dist_dataÚegg_infor
   r
   r   rT   w   s    
zWheel._install_as_eggc          	      s2  dd l }‡‡fdd„}|dƒ}t| d¡ƒ}tdƒ|  koFtdƒk n  }|s\td| ƒ‚tˆ|ƒ tj |ˆ¡‰|jj	|ˆ| 
|ˆ¡d	‰ d
d„ ‰ttˆˆ  ¡ ƒƒ‰‡ ‡‡fdd„ˆ jD ƒ}	t ˆ|¡ t tj |d¡tj |d¡¡ tjtˆ|	dd}
tƒ " t|
 d¡d tj |d¡ƒ W d Q R X d S )Nr   c          	      s<   ˆ  t ˆ | ¡¡ }| ¡  d¡}tj ¡  |¡S Q R X d S )Nzutf-8)	ÚopenrK   r   ÚreadÚdecodeÚemailÚparserÚParserÚparsestr)ÚnameÚfpÚvalue)rZ   rO   r
   r   Úget_metadata…   s    z-Wheel._convert_metadata.<locals>.get_metadataZWHEELzWheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)Úmetadatac             S   s   d | _ t| ƒS )N)ÚmarkerÚstr)Úreqr
   r
   r   Úraw_reqŸ   s    z(Wheel._convert_metadata.<locals>.raw_reqc                s.   i | ]&}‡fd d„t ˆˆ  |f¡ƒD ƒ|“qS )c                s   g | ]}|ˆ kr|‘qS r
   r
   )r   rk   )Úinstall_requiresr
   r   ú
<listcomp>¥   s   z6Wheel._convert_metadata.<locals>.<dictcomp>.<listcomp>)ÚmapÚrequires)r   Úextra)Údistrm   rl   r
   r   ú
<dictcomp>£   s   z+Wheel._convert_metadata.<locals>.<dictcomp>ÚMETADATAzPKG-INFO)rm   Úextras_require)Úattrsr\   zrequires.txt)Úpkg_resourcesÚparse_versionÚgetr3   r   r   r   r   ÚDistributionÚfrom_locationÚPathMetadatar   ro   rp   ÚextrasÚrenameÚ
setuptoolsÚdictr/   r   Úget_command_obj)rO   rU   rZ   r\   rw   rg   Úwheel_metadataÚwheel_versionZwheel_v1ru   Z
setup_distr
   )rr   rZ   rm   rl   rO   r   rW      s<     


zWheel._convert_metadatac                sê   t j | ˆ ¡‰ t j ˆ d¡}t j |¡r t j | dd¡}t  |¡ xRt  |¡D ]D}| d¡rrt  t j ||¡¡ qNt  t j ||¡t j ||¡¡ qNW t  	|¡ x.t
t jj‡ fdd„dD ƒƒD ]}t|| ƒ q¾W t j ˆ ¡ræt  	ˆ ¡ dS )z,Move data entries to their correct location.ÚscriptszEGG-INFOz.pycc             3   s   | ]}t j ˆ |¡V  qd S )N)r   r   r   )r   r)   )r[   r
   r   rC   Ò   s   z+Wheel._move_data_entries.<locals>.<genexpr>)ÚdataÚheadersÚpurelibÚplatlibN)r   r   r   r   ÚmkdirÚlistdirrM   Úunlinkr~   r   Úfilterr*   )rU   r[   Zdist_data_scriptsZegg_info_scriptsÚentryr$   r
   )r[   r   rX   ½   s&    





zWheel._move_data_entriesc          
   C   s´   t j | d¡}t j |¡r°t|ƒ}| ¡  ¡ }W d Q R X xt|D ]l}t jj|f| d¡žŽ }t j |d¡}t j |¡s€t  |¡ t j |¡s@t|dƒ}| t	¡ W d Q R X q@W d S )Nznamespace_packages.txtr=   z__init__.pyÚw)
r   r   r   r   r]   r^   rA   r‰   ÚwriteÚNAMESPACE_PACKAGE_INIT)r\   rU   Únamespace_packagesre   ÚmodZmod_dirZmod_initr
   r
   r   rY   Ù   s    


zWheel._fix_namespace_packagesN)Ú__name__Ú
__module__Ú__qualname__r<   rB   rE   rI   rQ   rV   rT   ÚstaticmethodrW   rX   rY   r
   r
   r
   r   r0   K   s   

<r0   )#Ú__doc__r`   r>   Ú	functoolsr   rK   ÚrerR   Ú
contextlibÚdistutils.utilr   r   Z#setuptools.extern.packaging.versionr   rx   Z setuptools.extern.packaging.tagsr   Z!setuptools.extern.packaging.utilsr   Zsetuptools.command.egg_infor   r   Zsetuptools.archive_utilr   ÚcompileÚVERBOSEr9   r1   r   Ú	lru_cacher   r*   Úcontextmanagerr/   r0   r
   r
   r
   r   Ú<module>   s.   
