a
    hbòf`   ã                   @   sº   d Z ddlm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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 e	 d	e	j¡jZd
Zdd„ ZG dd„ dƒZdS )zWheels support.é    )Úget_platform)ÚlogN)Úparse_version)Úsys_tags)Úcanonicalize_name)Úwrite_requirementsz‚^(?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Þ   t  | ¡D ]¢\}}}t j || ¡}|D ].}t j ||¡}t j |||¡}t  ||¡ q&ttt|ƒƒƒD ]D\}	}
t j ||
¡}t j |||
¡}t j 	|¡sft  ||¡ ||	= qfq
t j| dd�D ]\}}}|rÎJ ‚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_dirZdst_dirÚdirpathÚdirnamesÚ	filenamesÚsubdirÚfÚsrcÚdstÚnÚd© r   úM/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/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   sP   t tj |¡ƒ}|d u r$td| ƒ‚|| _| ¡  ¡ D ]\}}t| ||ƒ q6d S )Nzinvalid wheel name: %r)	Ú
WHEEL_NAMEr	   r   ÚbasenameÚ
ValueErrorÚfilenameÚ	groupdictÚitemsÚsetattr)Úselfr%   ÚmatchÚkÚvr   r   r   Ú__init__6   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   Útags>   s
    


ýz
Wheel.tagsc                    s0   t dd„ tƒ D ƒƒ‰ t‡ fdd„|  ¡ D ƒdƒS )z5Is the wheel is compatible with the current platform?c                 s   s   | ]}|j |j|jfV  qd S ©N)Úinterpreterr3   r4   ©Ú.0Útr   r   r   Ú	<genexpr>H   s   z&Wheel.is_compatible.<locals>.<genexpr>c                 3   s   | ]}|ˆ v rd V  qdS )TNr   r9   ©Úsupported_tagsr   r   r<   J   ó    F)Úsetr   Únextr6   r5   r   r=   r   Úis_compatibleF   s    ÿzWheel.is_compatiblec                 C   s,   t j| j| j| jdkrd ntƒ d� ¡ d S )NÚany)Úproject_nameÚversionr4   z.egg)Úpkg_resourcesÚDistributionrD   rE   r4   r   Úegg_namer5   r   r   r   rH   L   s    þýzWheel.egg_namec                 C   sJ   |  ¡ D ]4}t |¡}| d¡rt|ƒ t| jƒ¡r|  S qtdƒ‚d S )Nz
.dist-infoz.unsupported wheel format. .dist-info not found)ÚnamelistÚ	posixpathÚdirnameÚendswithr   Ú
startswithrD   r$   )r)   ÚzfÚmemberrK   r   r   r   Úget_dist_infoR   s    

ÿÿ
zWheel.get_dist_infoc                 C   s<   t  | j¡�}|  ||¡ W d  ƒ n1 s.0    Y  dS )z"Install wheel as an egg directory.N)ÚzipfileÚZipFiler%   Ú_install_as_egg)r)   Údestination_eggdirrN   r   r   r   Úinstall_as_egg\   s    zWheel.install_as_eggc                 C   s\   d| j | jf }|  |¡}d| }tj |d¡}|  ||||¡ |  ||¡ |  ||¡ d S )Nz%s-%sz%s.dataúEGG-INFO)	rD   rE   rP   r	   r   r   Ú_convert_metadataÚ_move_data_entriesÚ_fix_namespace_packages)r)   rT   rN   Zdist_basenameÚ	dist_infoÚ	dist_dataÚegg_infor   r   r   rS   a   s    
zWheel._install_as_eggc              	      sV  ‡‡fdd„}|dƒ}t | d¡ƒ}t dƒ|  ko>t dƒk n  }|sTtd| ƒ‚t |¡ ˆ |¡ tj |ˆ¡‰tj	j
|ˆt |ˆ¡d�‰ d	d
„ ‰tttˆˆ  ¡ ƒƒƒ‰‡ ‡‡fdd„ˆ jD ƒ}t ˆ|¡ t tj |d¡tj |d¡¡ tj	tˆ|d�d�}	tjj}
t tj¡ z*t|	 d¡d tj |d¡ƒ W t |
¡ nt |
¡ 0 d S )Nc                    sT   ˆ  t ˆ | ¡¡�.}| ¡  d¡}tj ¡  |¡W  d   ƒ S 1 sF0    Y  d S )Nzutf-8)	ÚopenrJ   r   ÚreadÚdecodeÚemailÚparserÚParserÚparsestr)ÚnameÚfpÚvalue)rZ   rN   r   r   Úget_metadatam   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 r7   )Ú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   | ]}|ˆ vr|V  qd S r7   r   )r:   rk   )Úinstall_requiresr   r   r<   �   s   þz5Wheel._convert_metadata.<locals>.<dictcomp>.<genexpr>)ÚsortedÚ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)r   Úgetr$   r	   ÚmkdirÚ
extractallr   r   rF   rG   Úfrom_locationÚPathMetadatar   rn   ro   rp   ÚextrasÚrenameÚ
setuptoolsÚdictr   Ú_global_logÚ	thresholdÚset_thresholdÚWARNr   Úget_command_obj)rN   rT   rZ   r\   rg   Úwheel_metadataÚwheel_versionZwheel_v1ru   Z
setup_distZlog_thresholdr   )rr   rZ   rm   rl   rN   r   rW   k   sR    ÿÿ


þúþþÿýzWheel._convert_metadatac                    sâ   t j | ˆ ¡‰ t j ˆ d¡}t j |¡rœt j | dd¡}t  |¡ t  |¡D ]D}| d¡rpt  t j ||¡¡ qLt  t j ||¡t j ||¡¡ qLt  	|¡ t
t jj‡ fdd„dD ƒƒD ]}t|| ƒ q¸t j ˆ ¡rÞt  	ˆ ¡ dS )z,Move data entries to their correct location.ÚscriptsrV   z.pycc                 3   s   | ]}t j ˆ |¡V  qd S r7   )r	   r   r   )r:   r   ©r[   r   r   r<   ¿   s   ÿz+Wheel._move_data_entries.<locals>.<genexpr>)ÚdataÚheadersÚpurelibÚplatlibN)r	   r   r   r   rx   ÚlistdirrL   Úunlinkr}   r   Úfilterr    )rT   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   ƒ n1 sD0    Y  |D ]‚}t jj|g| d¡¢R Ž }t j |d¡}t j |¡s”t  |¡ t j |¡sRt|dƒ�}| t	¡ W d   ƒ qR1 sÊ0    Y  qRd S )Nznamespace_packages.txtr.   z__init__.pyÚw)
r	   r   r   r   r]   r^   r2   rx   ÚwriteÚNAMESPACE_PACKAGE_INIT)r\   rT   Únamespace_packagesre   ÚmodZmod_dirZmod_initr   r   r   rY   Ç   s    ÿ
*
zWheel._fix_namespace_packagesN)Ú__name__Ú
__module__Ú__qualname__r-   r6   rB   rH   rP   rU   rS   ÚstaticmethodrW   rX   rY   r   r   r   r   r!   4   s   


?
r!   )Ú__doc__Údistutils.utilr   Ú	distutilsr   r`   r/   r	   rJ   ÚrerQ   rF   r~   r   Z setuptools.extern.packaging.tagsr   Z!setuptools.extern.packaging.utilsr   Zsetuptools.command.egg_infor   ÚcompileÚVERBOSEr*   r"   r“   r    r!   r   r   r   r   Ú<module>   s,   üÿ