a
    &ñ»jáT  ã                   @  sH  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	Z	ddl
Z
ddlZddlmZ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mZmZmZ dd
lmZ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' ddl(m)Z) ddl*m+Z+ e�r"ddl,Z,ze-dƒ W n( e.�yV   ddl%m/Z/ e/ 0¡  Y n0 e 1d¡Z2dddœdd„Z3dddœdd„Z4e5ej& 6d¡d ƒZ7dZ8ddœd d!„Z9ddœd"d#„Z:d$dd%œd&d'„Z;d>dddddd)œd*d+„Z<d$dœd,d-„Z=dddœd.d/„Z>dddœd0d1„Z?d2dd3d4d5œd6d7„Z@d2dd8d4d9œd:d;„ZAG d<d=„ d=e$ƒZBdS )?zI
Create a wheel (.whl) distribution.

A wheel is a built archive format.
é    )ÚannotationsN)ÚIterableÚSequence)ÚBytesGeneratorÚ	Generator)ÚEmailPolicy)Úiglob)Úrmtree)ÚTYPE_CHECKINGÚCallableÚLiteralÚcast)ÚZIP_DEFLATEDÚ
ZIP_STORED)Útags©Úversion)ÚCommandé   )Ú__version__)Úpkginfo_to_metadata)Ú	WheelFilezsetuptools.logging)Ú_setuptools_loggingÚwheelÚstr)ÚnameÚreturnc                 C  s   t  dd| ¡S )zŽConvert an arbitrary string to a standard distribution name
    Any runs of non-alphanumeric/. characters are replaced with a single '-'.
    ú[^A-Za-z0-9.]+ú-)ÚreÚsub©r   © r"   ú8E:\soccer\ml_env\Lib\site-packages\wheel/_bdist_wheel.pyÚ	safe_name2   s    r$   )r   r   c                 C  sD   zt t | ¡ƒW S  tjy>   |  dd¡} t dd| ¡ Y S 0 dS )zB
    Convert an arbitrary string to a standard version string
    ú Ú.r   r   N)r   Ú_packaging_versionÚVersionÚInvalidVersionÚreplacer   r    r   r"   r"   r#   Úsafe_version9   s
    r+   r&   zcp3\dÚbool©r   c                   C  s   t  d¡dkS )NÚPé   )ÚstructÚcalcsizer"   r"   r"   r#   Ú_is_32bit_interpreterJ   s    r2   c                   C  s   dt jd › �S )NÚpyr   )ÚsysÚversion_infor"   r"   r"   r#   Ú
python_tagN   s    r6   z
str | None)Úarchive_rootr   c                 C  s^   t  ¡ }| d¡r2| dur2ddlm} || |ƒ}n tƒ rR|dkrFd}n|dkrRd}| d	d
¡S )z0Return our platform name 'win32', 'linux_x86_64'ÚmacosxNr   )Úcalculate_macosx_platform_tagúlinux-x86_64z
linux-i686úlinux-aarch64zlinux-armv7lr   Ú_)Ú	sysconfigÚget_platformÚ
startswithZmacosx_libfiler9   r2   r*   )r7   Úresultr9   r"   r"   r#   r>   R   s    r>   T)ÚvarÚfallbackÚexpectedÚwarnr   c                 C  s:   t  | ¡}|du r2|r.tjd| › d�tdd� |S ||kS )zfUse a fallback value for determining SOABI flags if the needed config
    var is unset or unavailable.NzConfig variable 'z+' is unset, Python ABI tag may be incorrecté   ©Ú
stacklevel)r=   Úget_config_varÚwarningsrD   ÚRuntimeWarning)rA   rB   rC   rD   Úvalr"   r"   r#   Úget_flagf   s    

ýrL   c                  C  sŒ  t  d¡} t ¡ }| sœ|dv rœttdƒrœd}d}d}tdttdƒ|dkd�rPd	}td
|dk|dkojtjdk d�r~tjdk r~d}|› t ¡ › |› |› |› �}nì| rÆ|dkrÆ|  	d¡rÆd|  
d¡d  }nÂ| rì|dkrì|  	d¡rì|  
d¡d }nœ| �r*|dk�r*d |  
d¡dd… ¡}| dd¡ dd¡}n^| �rh|dk�rhd |  
d¡dd… ¡}| dd¡ dd¡}n | �r„|  dd¡ dd¡}nd}|S )zJReturn the ABI tag based on SOABI (if available) or emulate SOABI (PyPy2).ZSOABI)ÚcpÚppÚ
maxunicodeÚ ÚPy_DEBUGÚgettotalrefcountrM   )rD   ÚdÚWITH_PYMALLOC)é   é   ÚmÚcpythonr   r   r   rN   NrE   r&   r<   ÚgraalpyrU   )r=   rH   r   Úinterpreter_nameÚhasattrr4   rL   r5   Úinterpreter_versionr?   ÚsplitÚjoinr*   )ÚsoabiÚimplrS   rW   ÚuÚabir"   r"   r#   Úget_abi_tagw   s>    
ýürc   c                 C  s   t | ƒ dd¡S ©Nr   r<   )r$   r*   r!   r"   r"   r#   Ú
safer_nameŸ   s    re   c                 C  s   t | ƒ dd¡S rd   )r+   r*   r   r"   r"   r#   Úsafer_version£   s    rf   zCallable[..., object]z6tuple[type[Exception], Exception, types.TracebackType]ÚNone)ÚfuncÚpathÚexcinfor   c                 C  s   t | ||d ƒ d S )Nr   )Úremove_readonly_exc)rh   ri   rj   r"   r"   r#   Úremove_readonly§   s    rl   Ú	Exception)rh   ri   Úexcr   c                 C  s   t  |tj¡ | |ƒ d S )N)ÚosÚchmodÚstatÚS_IWRITE)rh   ri   rn   r"   r"   r#   rk   ¯   s    rk   c                   @  sô   e Zd ZdZeedœZddddedƒ› d�fd	d
dddddddd d 	e¡¡fddde
ƒ › d�fddgZg d¢Zdd„ Zdd„ Zedd„ ƒZdd œd!d"„Zd#d$„ Zd%e› d�fd&d&d'œd(d)„Zd&d&d*œd+d,„Zed-d œd.d/„ƒZd&d&d0œd1d2„ZdS )3Úbdist_wheelzcreate a wheel distribution)ZstoredÚdeflated)z
bdist-dir=Úbz1temporary directory for creating the distributionz
plat-name=Úpz8platform name to embed in generated filenames (default: Nú))ú	keep-tempÚkzPkeep the pseudo-installation tree around after creating the distribution archive)z	dist-dir=rS   z-directory to put final built distributions in)ú
skip-buildNz2skip rebuilding everything (for testing/debugging))ÚrelativeNz7build the archive using relative paths (default: false))zowner=ra   z@Owner name used when creating a tar file [default: current user])zgroup=ÚgzAGroup name used when creating a tar file [default: current group])Ú	universalNz'make a universal wheel (default: false)zcompression=z6zipfile compression (one of: {}) (default: 'deflated')z, zpython-tag=z3Python implementation compatibility tag (default: 'z'))zbuild-number=NzqBuild number for this particular version. As specified in PEP-0427, this must start with a digit. [default: None])zpy-limited-api=Nz?Python tag (cp32|cp33|cpNN) for abi3 wheel tag (default: false))rx   rz   r{   r}   c                 C  sx   d | _ d | _d | _d | _d| _d| _d | _d | _d | _d | _	d| _
d | _d | _d| _d| _tƒ | _d | _d| _d| _d S )NÚzipFrt   )Ú	bdist_dirÚdata_dirÚ	plat_nameÚplat_tagÚformatÚ	keep_tempÚdist_dirÚegginfo_dirÚroot_is_pureÚ
skip_buildr{   ÚownerÚgroupr}   Úcompressionr6   Úbuild_numberÚpy_limited_apiÚplat_name_supplied)Úselfr"   r"   r#   Úinitialize_optionsø   s&    zbdist_wheel.initialize_optionsc                 C  sR  | j d u r&|  d¡j}tj |d¡| _ | j d¡}| ¡  | j	d | _
| jd u| _z| j| j | _W n$ tyˆ   td| j› �ƒd ‚Y n0 d}| jdgt||ƒ¢R Ž  | j ¡ p¸| j ¡  | _| jrât t| j¡sâtdt› d�ƒ‚| j d¡}d	|v �r&t d
¡ |d	 d  ¡ }| ¡ dv �r&d| _| j d u�rN| j d d…  !¡ �sNtdƒ‚d S )NÚbdistr   Úegg_infoz.datazUnsupported compression: )r…   r�   rˆ   zpy-limited-api must match 'ú'r}   z=The [wheel] section is deprecated. Use [bdist_wheel] instead.r   )Ú1ÚtrueÚyesTz1Build tag (build-number) must start with a digit.)"r   Úget_finalized_commandÚ
bdist_basero   ri   r^   ÚdistributionÚget_command_objÚensure_finalizedÚwheel_dist_namer€   r�   rŽ   Úsupported_compressionsr‹   ÚKeyErrorÚ
ValueErrorÚset_undefined_optionsr~   Úhas_ext_modulesÚhas_c_librariesr‡   r�   r   ÚmatchÚPY_LIMITED_API_PATTERNÚget_option_dictÚlogÚwarningÚstripÚlowerr}   rŒ   Úisdigit)r�   r˜   r’   Zneed_optionsr   rK   r"   r"   r#   Úfinalize_options  s:    
ÿ
ÿ
ÿ zbdist_wheel.finalize_optionsc                 C  s8   t | j ¡ ƒt| j ¡ ƒf}| jr.|| jf7 }d |¡S )z4Return distribution full name with - replaced with _r   )re   r™   Úget_namerf   Úget_versionrŒ   r^   )r�   Ú
componentsr"   r"   r#   rœ   8  s    þzbdist_wheel.wheel_dist_nameztuple[str, str, str]r-   c                   s(  | j rtt| jƒ‰ nN| jr d‰ nB| jr:| j d¡s:| j‰ n
t| jƒ‰ tƒ rbˆ dv rVd‰ ˆ dv rbd‰ ˆ  	¡  
dd¡ 
d	d¡ 
d
d¡‰ | jr¦| jr”d}n| j}|dˆ f}n~t ¡ }t ¡ }|| }| jrÞ||  d¡rÞ| j}d}nttƒ ƒ 	¡ }||ˆ f}‡ fdd„t ¡ D ƒ}||v �s$J d|› �ƒ‚|S )NÚanyr8   )r:   Úlinux_x86_64Ú
linux_i686)r;   Úlinux_aarch64Zlinux_armv7lr   r<   r&   r%   zpy2.py3ÚnoneZcp3Úabi3c                   s   g | ]}|j |jˆ f‘qS r"   )Úinterpreterrb   )Ú.0Út©r�   r"   r#   Ú
<listcomp>u  s   z'bdist_wheel.get_tag.<locals>.<listcomp>z'would build wheel with unsupported tag )rŽ   r   r   r�   r‡   r?   r>   r   r2   r©   r*   r}   r6   r   rZ   r\   r�   rc   Úsys_tags)r�   r`   ÚtagZ	impl_nameZimpl_verÚabi_tagÚsupported_tagsr"   r¸   r#   Úget_tagC  sD    
ÿ

ÿÿzbdist_wheel.get_tagc                 C  sˆ  |   d¡}d|_d|_|   d¡}d|_| js6|  d¡ | j ddd�}| j|_d|_| j|_d|_	|   d	¡}d|_
d
D ] }t|d| tj | j|¡ƒ qtd}tjdkrÈtj tj | jd¡¡}| | _| _t|| jrÖdnd|ƒ t d| j› �¡ |  d¡ |  ¡ \}}}	| j› d|› d|› d|	› �}
| j�s4| j}ntj | j|  |j¡¡}|  dd¡ t| j ¡ ƒ› dt | j !¡ ƒ› d�}tj | j|¡}|  "| j#|¡ |  $|¡ tj %| j&¡�sÀt '| j&¡ tj | j&|
d ¡}t(|d| j)ƒ�}| *|¡ W d   ƒ n1 �s0    Y  t+| jdg ƒ ,ddj-t.j/d d… Ž |f¡ | j0�s„t d| j› �¡ | j1�s„t.j/dk �rvt2| jt3d� nt2| jt4d� d S ) NÚbuild_scriptsÚpythonTÚ	build_extFÚbuildÚinstall)Úreinit_subcommandsÚinstall_scripts)ÚheadersÚscriptsÚdataÚpurelibÚplatlibÚinstall_rP   Úntz..Úinstall_purelibÚinstall_platlibzinstalling to r   Úinstall_egg_info)Útargetr†   z
.dist-infoz.whlÚwÚ
dist_filesrs   z{}.{}rE   z	removing )rU   é   )Úonerror)Úonexc)5Úreinitialize_commandÚ
executableÚforceZinplacerˆ   Úrun_commandr   ÚrootÚcompileÚwarn_dirZno_epÚsetattrro   ri   r^   r€   r   ÚnormpathÚinstall_libbaseÚinstall_libr‡   r¦   Úinfor¾   rœ   r{   Ú_ensure_relativeÚinstall_baser    re   r™   r¬   rf   r­   Úegg2distr†   Úwrite_wheelfileÚexistsr…   Úmakedirsr   r‹   Zwrite_filesÚgetattrÚappendrƒ   r4   r5   r„   Údry_runr	   rl   rk   )r�   r¿   rÁ   rÃ   rÅ   ÚkeyZbasedir_observedÚimpl_tagr¼   r‚   Zarchive_basenamer7   Zdistinfo_dirnameÚdistinfo_dirÚ
wheel_pathZwfr"   r"   r#   Úrun}  sv    




ý
ÿÿÿ
*ýÿzbdist_wheel.runzbdist_wheel (r   )Úwheelfile_baseÚ	generatorc                 C  sø   ddl m} |ƒ }d|d< ||d< t| jƒ ¡ |d< | jd urH| j|d< |  ¡ \}}}| d¡D ]8}| d¡D ](}	| d¡D ]}
d	 ||	|
f¡|d
< q|qnq`t	j
 |d¡}t d|› �¡ t|dƒ�"}t|dd� |¡ W d   ƒ n1 sê0    Y  d S )Nr   )ÚMessagez1.0zWheel-Versionr   zRoot-Is-PurelibZBuildr&   r   ÚTagÚWHEELz	creating Úwb)Úmaxheaderlen)Úemail.messagerò   r   r‡   r©   rŒ   r¾   r]   r^   ro   ri   r¦   rá   Úopenr   Úflatten)r�   rð   rñ   rò   Úmsgrì   r¼   r‚   r`   rb   ÚplatZwheelfile_pathÚfr"   r"   r#   rå   ×  s     

zbdist_wheel.write_wheelfile)ri   r   c                 C  s6   t j |¡\}}|dd… t jkr2||dd …  }|S )Nr   r   )ro   ri   Ú
splitdriveÚsep)r�   ri   Údriver"   r"   r#   râ   ï  s    zbdist_wheel._ensure_relativezIterable[str]c              	   C  s  t dkr| jjjpdS tƒ }| j d¡}t dkrFttt | jjjƒ}nd|v r`|d d  	¡ }nd}d|v rŽt
jdtd	d
� | |d d ¡ |s¤|s¤t|tƒs¤d}|D ]f}t|ƒD ]X}| d¡rÖt d|› d�¡ q´||vr´tj |¡r´t d|› d|› d�¡ | |¡ q´q¨|S )Né9   r"   Úmetadataé*   Úlicense_filesr   Zlicense_filezEThe "license_file" option is deprecated. Use "license_files" instead.rE   rF   )zLICEN[CS]E*zCOPYING*zNOTICE*zAUTHORS*ú~zignoring license file "z" as it looks like a backupzadding license file "z" (matched pattern "z"))Úsetuptools_major_versionr™   r  r  Úsetr¥   r   r   r   r]   rI   rD   ÚDeprecationWarningÚaddÚ
isinstanceÚlistr   Úendswithr¦   Údebugro   ri   Úisfilerá   )r�   Úfilesr  ÚpatternsÚpatternri   r"   r"   r#   Úlicense_pathsö  s>    ý

ÿÿzbdist_wheel.license_paths)Úegginfo_pathÚdistinfo_pathc                 C  sÂ  dddœdd„}||ƒ t j |¡s„ddl}t j t j |¡d¡}| |¡}d	|› d
�}|r|t j |d ¡}|d|› d�7 }t|ƒ‚t j |¡r¦t	||ƒ}	t  
|¡ n‚t j |d¡}
t	||
ƒ}	tj||dd„ d� t j |d¡}t|dd��}| ¡  ¡ }W d  ƒ n1 �s0    Y  |�s(||ƒ t j |d¡}tdddd�}t|ddd��"}t||d� |	¡ W d  ƒ n1 �s|0    Y  | jD ](}t j |¡}t |t j ||¡¡ �qŒ||ƒ dS )z:Convert an .egg-info directory into a .dist-info directoryr   rg   )rv   r   c                 S  sJ   t j | ¡r0t j | ¡s0t j | ¡r0t | ¡ nt j | ¡rFt  | ¡ dS )z-Appropriately delete directory, file or link.N)ro   ri   ræ   ÚislinkÚisdirÚshutilr	   Úunlink)rv   r"   r"   r#   Úadios&  s    $z#bdist_wheel.egg2dist.<locals>.adiosr   Nz
*.egg-infozEgg metadata expected at z but not foundz (z) found - possible misnamed archive file?)úPKG-INFOc                 S  s   h d£S )N>   zrequires.txtr  znot-zip-safezSOURCES.txtr"   )ÚxÚyr"   r"   r#   Ú<lambda>L  ó    z&bdist_wheel.egg2dist.<locals>.<lambda>)Úignorezdependency_links.txtzutf-8)ÚencodingÚMETADATATF)Úutf8Úmangle_from_Úmax_line_lengthrÑ   )Úpolicy)ro   ri   ræ   Úglobr^   ÚdirnameÚbasenamerŸ   r  r   Úmkdirr  Úcopytreerø   Úreadr¨   r   r   rù   r  Úcopy)r�   r  r  r  r%  ÚpatÚpossibleÚerrZaltÚpkg_infoZpkginfo_pathZdependency_links_pathZdependency_links_fileZdependency_linksZpkg_info_pathZserialization_policyÚoutZlicense_pathÚfilenamer"   r"   r#   rä   #  sL    


ý,ý2
zbdist_wheel.egg2dist)Ú__name__Ú
__module__Ú__qualname__Údescriptionr   r   r�   r>   rƒ   r^   r6   Úuser_optionsÚboolean_optionsr�   r«   Úpropertyrœ   r¾   rï   Úwheel_versionrå   râ   r  rä   r"   r"   r"   r#   rs   ´   sX   þÿýÿýýÍ:+

:[
ÿ,rs   )TT)CÚ__doc__Ú
__future__r   Úloggingro   r   r  rq   r0   r4   r=   rI   Úcollections.abcr   r   Úemail.generatorr   r   Úemail.policyr   r%  r   r	   Útypingr
   r   r   r   Úzipfiler   r   Ú
setuptoolsÚ	packagingr   r   r'   r   rP   r   r9  Ú	_metadatar   Z	wheelfiler   ÚtypesÚ
__import__ÚImportErrorr   Ú	configureÚ	getLoggerr¦   r$   r+   Úintr]   r  r¤   r2   r6   r>   rL   rc   re   rf   rl   rk   rs   r"   r"   r"   r#   Ú<module>   s^   
 ÿ(