U
    ZÊ¹j¾T  ã                   @  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	Z	ddl
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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) ddl*m+Z+ e�rddl,Z,ze-dƒ W n* e.k
�rT   ddlm/Z/ e/ 0¡  Y nX dddœdd„Z1dddœdd„Z2e3ej  4d¡d ƒZ5dZ6ddœdd „Z7ddœd!d"„Z8d#dd$œd%d&„Z9d=dddddd(œd)d*„Z:d#dœd+d,„Z;dddœd-d.„Z<dddœd/d0„Z=d1dd2d3d4œd5d6„Z>d1dd7d3d8œd9d:„Z?G d;d<„ d<eƒZ@dS )>zI
Create a wheel (.whl) distribution.

A wheel is a built archive format.
é    )ÚannotationsN)ÚBytesGeneratorÚ	Generator)ÚEmailPolicy)Úiglob)Úrmtree)ÚTYPE_CHECKINGÚCallableÚIterableÚLiteralÚSequenceÚcast)ÚZIP_DEFLATEDÚ
ZIP_STORED)ÚCommandé   )Ú__version__)Úpkginfo_to_metadata)Úlog)Útags©Úversion)Ú	WheelFilezsetuptools.logging)Ú_setuptools_loggingÚ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"   úQ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/wheel/_bdist_wheel.pyÚ	safe_name/   s    r$   )r   r   c                 C  sF   zt t | ¡ƒW S  tjk
r@   |  dd¡} t dd| ¡ Y S X 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_version6   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_interpreterG   s    r2   c                   C  s   dt jd › �S )NÚpyr   )ÚsysÚversion_infor"   r"   r"   r#   Ú
python_tagK   s    r6   z
str | None)Úarchive_rootr   c                 C  s^   t  ¡ }| d¡r2| dk	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>   O   s    r>   T)ÚvarÚfallbackÚexpectedÚwarnr   c                 C  s:   t  | ¡}|dk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_flagc   s    

ýrL   c                  C  sŒ  t  d¡} t ¡ }| sœ|dk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).ÚSOABI)ÚcpÚppÚ
maxunicodeÚ ÚPy_DEBUGÚgettotalrefcountrN   )rD   ÚdÚWITH_PYMALLOC)é   é   ÚmÚcpythonr   r   r   rO   NrE   r&   r<   ÚgraalpyrV   )r=   rH   r   Úinterpreter_nameÚhasattrr4   rL   r5   Úinterpreter_versionr?   ÚsplitÚjoinr*   )ÚsoabiÚimplrT   rX   ÚuÚabir"   r"   r#   Úget_abi_tagt   s>    
ýürd   c                 C  s   t | ƒ dd¡S ©Nr   r<   )r$   r*   r!   r"   r"   r#   Ú
safer_nameœ   s    rf   c                 C  s   t | ƒ dd¡S re   )r+   r*   r   r"   r"   r#   Úsafer_version    s    rg   zCallable[..., object]z6tuple[type[Exception], Exception, types.TracebackType]ÚNone)ÚfuncÚpathÚexcinfor   c                 C  s   t | ||d ƒ d S )Nr   )Úremove_readonly_exc)ri   rj   rk   r"   r"   r#   Úremove_readonly¤   s    rm   Ú	Exception)ri   rj   Úexcr   c                 C  s   t  |tj¡ | |ƒ d S )N)ÚosÚchmodÚstatÚS_IWRITE)ri   rj   ro   r"   r"   r#   rl   ¬   s    rl   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ddddg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d0d#œd1d2„ƒZd)d)d3œd4d5„ZdS )6Ú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=rT   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=rb   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)ry   r{   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ÚzipFru   )Ú	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  sP  | j d kr&|  d¡j}tj |d¡| _ | j d¡}| ¡  | j	d | _
| jd k	| _z| j| j | _W n& tk
rŠ   td| j› �ƒd ‚Y nX d}| jdt||ƒžŽ  | j ¡ p¶| j ¡  | _| jràt t| j¡sàtdt› d�ƒ‚| j d¡}d	|k�r$t d
¡ |d	 d  ¡ }| ¡ dk�r$d| _| j d k	�rL| j d d…  !¡ �sLtdƒ‚d S )NÚbdistÚwheelÚ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’   )"r€   Úget_finalized_commandÚ
bdist_baserp   rj   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_dictr   Ú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   )rf   r›   Úget_namerg   Úget_versionr�   r_   )r�   Ú
componentsr"   r"   r#   rž   5  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krVd‰ ˆ dk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 ƒ}||k�s$t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"   )Úinterpreterrc   )Ú.0Út©r‚   r"   r#   Ú
<listcomp>r  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   r[   r]   rŽ   rd   Úsys_tagsÚAssertionError)r�   ra   ÚtagZ	impl_nameZimpl_verÚabi_tagÚsupported_tagsr"   r¹   r#   Úget_tag@  sF    
ÿ

ÿÿþzbdist_wheel.get_tagc              	   C  sr  |   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 5 Q R X t+| jdg ƒ ,ddj-t.j/d d… Ž |f¡ | j0�snt d| j› �¡ | j1�snt.j/dk �r`t2| 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_rQ   Úntz..Úinstall_purelibÚinstall_platlibzinstalling to r   Úinstall_egg_info)Útargetr‡   z
.dist-infoz.whlÚwÚ
dist_filesrt   z{}.{}rE   z	removing )rV   é   )Úonerror)Úonexc)5Úreinitialize_commandÚ
executableÚforceZinplacer‰   Úrun_commandr€   ÚrootÚcompileÚwarn_dirZno_epÚsetattrrp   rj   r_   r�   r   ÚnormpathÚinstall_libbaseÚinstall_librˆ   r   ÚinforÀ   rž   r|   Ú_ensure_relativeÚinstall_baser¢   rf   r›   r­   rg   r®   Úegg2distr‡   Úwrite_wheelfileÚexistsr†   Úmakedirsr   rŒ   Zwrite_filesÚgetattrÚappendr„   r4   r5   r…   Údry_runr   rm   rl   )r�   rÁ   rÃ   rÅ   rÇ   ÚkeyZbasedir_observedÚimpl_tagr¾   rƒ   Zarchive_basenamer7   Zdistinfo_dirnameÚdistinfo_dirÚ
wheel_pathZwfr"   r"   r#   Úrunz  st    




ý
 
ÿ"ÿ
ýÿzbdist_wheel.runzbdist_wheel (r   )Úwheelfile_baseÚ	generatorc              	   C  sä   ddl m} |ƒ }d|d< ||d< t| jƒ ¡ |d< | jd k	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 5 Q R X 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_   rp   rj   r   rã   Úopenr   Úflatten)r�   rò   ró   rô   Úmsgrî   r¾   rƒ   ra   rc   ÚplatZwheelfile_pathÚfr"   r"   r#   rç   Ô  s     

zbdist_wheel.write_wheelfile)rj   r   c                 C  s6   t j |¡\}}|dd… t jkr2||dd …  }|S )Nr   r   )rp   rj   Ú
splitdriveÚsep)r�   rj   Ú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|kr`|d d  	¡ }nd}d|k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´||k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   Údebugrp   rj   Úisfilerã   )r�   Úfilesr  ÚpatternsÚpatternrj   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  
|¡ nlt j |d¡}
t	||
ƒ}	tj||dd„ d� t j |d¡}t|dd��}| ¡  ¡ }W 5 Q R X |�s||ƒ t j |d¡}tdddd�}t|ddd��}t||d� |	¡ W 5 Q R X | jD ](}t j |¡}t |t j ||¡¡ �q`||ƒ dS )z:Convert an .egg-info directory into a .dist-info directoryr   rh   )rw   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)rp   rj   rè   ÚislinkÚisdirÚshutilr   Úunlink)rw   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   ddddhS )Nr  zrequires.txtzSOURCES.txtznot-zip-safer"   )ÚxÚyr"   r"   r#   Ú<lambda>I  s
    üz&bdist_wheel.egg2dist.<locals>.<lambda>)Úignorezdependency_links.txtzutf-8)ÚencodingÚMETADATATF)Úutf8Úmangle_from_Úmax_line_lengthrÓ   )Úpolicy)rp   rj   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    


ýý
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#   rt   ±   sT   þýÿýýÍ:+

:[
ÿ,rt   )TT)AÚ__doc__Ú
__future__r   rp   r   r  rr   r0   r4   r=   rI   Úemail.generatorr   r   Úemail.policyr   r&  r   r   Útypingr   r	   r
   r   r   r   Úzipfiler   r   Ú
setuptoolsr   rQ   r   r:  r  r   Úutilr   Zvendored.packagingr   r   r'   Z	wheelfiler   ÚtypesÚ
__import__ÚImportErrorr   Ú	configurer$   r+   Úintr^   r  r¦   r2   r6   r>   rL   rd   rf   rg   rm   rl   rt   r"   r"   r"   r#   Ú<module>   s\       ÿ(