B
    =)H[¦  ã               @   sÂ   d Z 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Zddl	m
Z
mZ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mZ eZe d
ej¡jZdZdd„ ZG dd„ dƒZdS )zWheels support.é    )Úget_platformN)ÚDistributionÚPathMetadataÚparse_version)Úcanonicalize_name)ÚPY3)r   )Ú
pep425tags)Úwrite_requirementsz‚^(?P<project_name>.+?)-(?P<version>\d.*?)
    ((-(?P<build>\d.*?))?-(?P<py_version>.+?)-(?P<abi>.+?)-(?P<platform>.+?)
    )\.whl$zštry:
    __import__('pkg_resources').declare_namespace(__name__)
except ImportError:
    __path__ = __import__('pkgutil').extend_path(__path__, __name__)
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Úd© r!   úXC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-qz7kpjmn\setuptools\setuptools\wheel.pyÚunpack$   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)Úselfr(   ÚmatchÚkÚvr!   r!   r"   Ú__init__<   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ÚsplitÚabiÚplatform)r,   r!   r!   r"   ÚtagsD   s    

z
Wheel.tagsc                s$   t  ¡ ‰ t‡ fdd„|  ¡ D ƒdƒS )z5Is the wheel is compatible with the current platform?c             3   s   | ]}|ˆ krd V  qdS )TNr!   )Ú.0Út)Úsupported_tagsr!   r"   ú	<genexpr>O   s    z&Wheel.is_compatible.<locals>.<genexpr>F)r   Úget_supportedÚnextr8   )r,   r!   )r;   r"   Úis_compatibleL   s    zWheel.is_compatiblec             C   s*   t | j| j| jdkrd ntƒ d� ¡ d S )NÚany)Úproject_nameÚversionr7   z.egg)r   rA   rB   r7   r   Úegg_name)r,   r!   r!   r"   rC   Q   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   Ú
startswithrA   r'   )r,   ÚzfÚmemberrF   r!   r!   r"   Úget_dist_infoW   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ÚZipFiler(   Ú_install_as_egg)r,   Údestination_eggdirrI   r!   r!   r"   Úinstall_as_egga   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)	rA   rB   rK   r   r   r   Ú_convert_metadataÚ_move_data_entriesÚ_fix_namespace_packages)r,   rO   rI   Zdist_basenameÚ	dist_infoÚ	dist_dataÚegg_infor!   r!   r"   rN   f   s    
zWheel._install_as_eggc       
         s   ‡‡fdd„}|dƒ}t | d¡ƒ}t dƒ|  ko>t dƒk n  }|sTtd| ƒ‚t |¡ ˆ |¡ tj |ˆ¡‰tj	|ˆt
|ˆƒd�‰ d	d
„ ‰tttˆˆ  ¡ ƒƒƒ‰‡ ‡‡fdd„ˆ jD ƒ}t ˆ|¡ t tj |d¡tj |d¡¡ ttˆ|d�d�}	t|	 d¡d tj |d¡ƒ d S )Nc          	      sH   ˆ  t ˆ | ¡¡�,}tr&| ¡  d¡n| ¡ }tj ¡  	|¡S Q R X d S )Nzutf-8)
ÚopenrE   r   r   ÚreadÚdecodeÚemailÚparserÚParserÚparsestr)ÚnameÚfpÚvalue)rT   rI   r!   r"   Úget_metadatar   s    z-Wheel._convert_metadata.<locals>.get_metadataÚ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          	      s2   i | ]*}t ‡fd d„tˆˆ  |f¡ƒD ƒƒ|“qS )c             3   s   | ]}|ˆ kr|V  qd S )Nr!   )r9   rf   )Úinstall_requiresr!   r"   r<   “   s   z5Wheel._convert_metadata.<locals>.<dictcomp>.<genexpr>)ÚsortedÚmapÚrequires)r9   Úextra)Údistrh   rg   r!   r"   ú
<dictcomp>‘   s   z+Wheel._convert_metadata.<locals>.<dictcomp>ÚMETADATAzPKG-INFO)rh   Úextras_require)ÚattrsrV   zrequires.txt)r   Úgetr'   r   ÚmkdirÚ
extractallr   r   r   Úfrom_locationr   r   ri   rj   rk   ÚextrasÚrenameÚSetuptoolsDistributionÚdictr	   Úget_command_obj)
rI   rO   rT   rV   ra   Zwheel_metadataÚwheel_versionZwheel_v1rp   Z
setup_distr!   )rm   rT   rh   rg   rI   r"   rQ   p   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   )r9   r    )rU   r!   r"   r<   ¿   s   z+Wheel._move_data_entries.<locals>.<genexpr>)ÚdataÚheadersÚpurelibÚplatlibN)r   r   r   r   rs   ÚlistdirrG   Úunlinkrw   r   Úfilterr#   )rO   rU   Zdist_data_scriptsZegg_info_scriptsÚentryr   r!   )rU   r"   rR   ª   s&    





zWheel._move_data_entriesc          
   C   sª   t j | d¡}t j |¡r¦t|ƒ�}| ¡  ¡ }W d Q R X xj|D ]b}t jj|f| d¡žŽ }t j |d¡}t j |¡r@t j |¡s@t|dƒ�}| t¡ W d Q R X q@W d S )Nznamespace_packages.txtr1   z__init__.pyÚw)	r   r   r   r   rW   rX   r5   ÚwriteÚNAMESPACE_PACKAGE_INIT)rV   rO   Znamespace_packagesr_   ÚmodZmod_dirZmod_initr!   r!   r"   rS   Æ   s    

zWheel._fix_namespace_packagesN)Ú__name__Ú
__module__Ú__qualname__r0   r8   r?   rC   rK   rP   rN   ÚstaticmethodrQ   rR   rS   r!   r!   r!   r"   r$   :   s   

:r$   )Ú__doc__Údistutils.utilr   rZ   r2   r   rE   ÚrerL   Úpkg_resourcesr   r   r   Z!setuptools.extern.packaging.utilsr   Zsetuptools.extern.sixr   Ú
setuptoolsrx   r   Zsetuptools.command.egg_infor	   ÚtypeZ__metaclass__ÚcompileÚVERBOSEr-   r%   r‡   r#   r$   r!   r!   r!   r"   Ú<module>   s(   
