a
    xÏOcƒJ  ã                   @   st  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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 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j&dk �r
ddl'm(Z) nddl'm)Z) ej*Z*ej+Z+dZ,dd„ Z-dd„ Z.d'dd„Z/dd„ Z0dd „ Z1d!d"„ Z2d#d$„ Z3G d%d&„ d&eƒZ4dS )(zI
Create a wheel (.whl) distribution.

A wheel is a built archive format.
é    N)ÚOrderedDict)ÚCommand)Úlog)ÚBytesIO)Úiglob)Úrmtree)Úget_config_var)ÚZIP_DEFLATEDÚ
ZIP_STOREDé   )Úwrite_pkg_info)Úcalculate_macosx_platform_tag)Úpkginfo_to_metadata)Útags)Ú	WheelFile)Ú__version__©é   )Ú	Generator)ÚBytesGeneratorzcp3\dc                   C   s   d  tjd ¡S )Nzpy{}r   )ÚformatÚsysÚversion_info© r   r   úH/var/www/html/gsl.tools/lib/python3.9/site-packages/wheel/bdist_wheel.pyÚ
python_tag+   s    r   c                 C   s@   t j ¡ }| d¡r&| dur&t| |ƒ}|dkr<tjdkr<d}|S )z0Return our platform name 'win32', 'linux_x86_64'ÚmacosxNÚlinux_x86_64éÿÿÿÚ
linux_i686)Ú	distutilsÚutilÚget_platformÚ
startswithr   r   Úmaxsize)Úarchive_rootÚresultr   r   r   r"   /   s    

r"   Tc                 C   s4   t | ƒ}|du r,|r(t d | ¡td¡ |S ||kS )zfUse a fallback value for determining SOABI flags if the needed config
    var is unset or unavailable.Nz?Config variable '{0}' is unset, Python ABI tag may be incorrecté   )r   ÚwarningsÚwarnr   ÚRuntimeWarning)ÚvarÚfallbackÚexpectedr)   Úvalr   r   r   Úget_flag;   s    ÿÿr/   c                  C   sL  t dƒ} t ¡ }| sÆ|dv rÆttdƒrÆd}d}d}tdttdƒ|dkd�rNd	}td
|dk|dkohtjdk d�r|tjdk r|d}tdtjdkd|dkoštjdk d�r®tjdk r®d}d|t ¡ |||f }n‚| rè|  	d¡rèd|  
d¡d  }n`| �r(|  	d¡�r(d |  
d¡dd… ¡}| dd¡ dd¡}n | �rD|  dd¡ dd¡}nd}|S )zXReturn the ABI tag based on SOABI (if available) or emulate SOABI
    (CPython 2, PyPy).ÚSOABI)ÚcpÚppÚ
maxunicodeÚ ÚPy_DEBUGÚgettotalrefcountr1   )r)   ÚdÚWITH_PYMALLOC)r   é   ÚmÚPy_UNICODE_SIZEiÿÿ é   )r   r   )r-   r)   Úuz
%s%s%s%s%szcpython-ú-r   zpypy-Nr'   Ú.Ú_)r   r   Úinterpreter_nameÚhasattrr   r/   r   r3   Úinterpreter_versionr#   ÚsplitÚjoinÚreplace)ZsoabiÚimplr7   r:   r=   Úabir   r   r   Úget_abi_tagG   sL    þýüüûrI   c                 C   s   t | ƒ dd¡S ©Nr>   r@   )Ú	safe_namerF   )Únamer   r   r   Ú
safer_nameo   s    rM   c                 C   s   t | ƒ dd¡S rJ   )Úsafe_versionrF   )Úversionr   r   r   Úsafer_versions   s    rP   c                 C   s*   t t|d ƒƒ t |tj¡ | |ƒ d S )Nr   )ÚprintÚstrÚosÚchmodÚstatÚS_IWRITE)ÚfuncÚpathÚexcinfor   r   r   Úremove_readonlyw   s    rZ   c                   @   sÒ   e Zd ZdZedefdefgƒZddddedƒ fd	d
dddddddd 	d 
e¡¡fdddeƒ  fddgZg d¢Zdd„ Zdd„ Zedd„ ƒZdd„ Zd d!„ Zd"e d# fd$d%„Zd&d'„ Zed(d)„ ƒZd*d+„ ZdS ),Úbdist_wheelzcreate a wheel distributionZstoredÚdeflated)z
bdist-dir=Úbz1temporary directory for creating the distributionz
plat-name=Úpz;platform name to embed in generated filenames (default: %s)N)ú	keep-tempÚkzPkeep the pseudo-installation tree around after creating the distribution archive)z	dist-dir=r7   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=r=   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=z7Python implementation compatibility tag (default: '%s'))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))r_   ra   rb   rd   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ÚzipFr\   )Ú	bdist_dirÚdata_dirÚ	plat_nameÚplat_tagr   Ú	keep_tempÚdist_dirÚegginfo_dirÚroot_is_pureÚ
skip_buildrb   ÚownerÚgrouprd   Úcompressionr   Úbuild_numberÚpy_limited_apiÚplat_name_supplied)Úselfr   r   r   Úinitialize_options°   s&    zbdist_wheel.initialize_optionsc                 C   s8  | j d u r&|  d¡j}tj |d¡| _ | jd | _| jd u| _	z| j
| j | _W n" tyr   td | j¡ƒ‚Y n0 d}| jdgt||ƒ¢R Ž  | j ¡ p¢| j ¡  | _| jrÈt t| j¡sÈtdt ƒ‚| j d¡}d|v �rt d¡ |d d	  ¡ }| ¡ d
v �rd| _| jd u�r4| jd d	…   ¡ �s4tdƒ‚d S )NÚbdistÚwheelz.datazUnsupported compression: {})rk   rh   rn   zpy-limited-api must match '%s'rd   z=The [wheel] section is deprecated. Use [bdist_wheel] instead.r   )Ú1ÚtrueÚyesTz1Build tag (build-number) must start with a digit.)!rf   Úget_finalized_commandÚ
bdist_baserS   rX   rE   Úwheel_dist_namerg   rh   rt   Úsupported_compressionsrq   ÚKeyErrorÚ
ValueErrorr   Úset_undefined_optionsre   ÚdistributionÚhas_ext_modulesÚhas_c_librariesrm   rs   ÚreÚmatchÚPY_LIMITED_API_PATTERNÚget_option_dictÚloggerr)   ÚstripÚlowerrd   rr   Úisdigit)ru   r}   Zneed_optionsrx   r.   r   r   r   Úfinalize_optionsÅ   s4    
ÿ
ÿ

 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>   )rM   rƒ   Úget_namerP   Úget_versionrr   rE   )ru   Ú
componentsr   r   r   r~   é   s    ÿzbdist_wheel.wheel_dist_namec                    s  | j r| j‰ nF| jrd‰ n:| jr4| j d¡s4| j‰ n
t| jƒ‰ ˆ dv rTtjdkrTd‰ ˆ  ¡  	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Úanyr   )zlinux-x86_64r   r   r   r>   r@   r?   zpy2.py3ÚnoneZcp3Úabi3c                    s   g | ]}|j |jˆ f‘qS r   )ÚinterpreterrH   )Ú.0Út©rh   r   r   Ú
<listcomp>  s   ÿz'bdist_wheel.get_tag.<locals>.<listcomp>z)would build wheel with unsupported tag {})rt   rh   rm   r#   r"   rf   r   r$   rŒ   rF   rd   r   r   rA   rC   rs   rR   rI   Úsys_tagsr   )ru   rG   ÚtagZ	impl_nameZimpl_verÚabi_tagÚsupported_tagsr   r˜   r   Úget_tagò   s8    


ÿzbdist_wheel.get_tagc                 C   sV  |   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¡ |  ¡ \}}}	d | j|||	¡}
| j�s&| j}ntj | j|  |j¡¡}|  dd¡ d t| j  ¡ ƒt!| j "¡ ƒ¡}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�sRt d| j¡ | j1�sRt2| jt3d� d S )NÚbuild_scriptsÚpythonTÚ	build_extFÚbuildÚinstall)Úreinit_subcommandsÚinstall_scripts)ÚheadersÚscriptsÚdataÚpurelibÚplatlibÚinstall_r4   Úntz..Úinstall_purelibÚinstall_platlibzinstalling to %sz{}-{}-{}-{}Úinstall_egg_info)Útargetrl   z{}-{}.dist-infoz.whlÚwÚ
dist_filesr[   z{}.{}r'   zremoving %s)Úonerror)4Úreinitialize_commandÚ
executableÚforceZinplacern   Úrun_commandrf   ÚrootÚcompileÚwarn_dirZno_epÚsetattrrS   rX   rE   rg   rL   ÚnormpathÚinstall_libbaseÚinstall_librm   rŠ   Úinforž   r   r~   rb   Ú_ensure_relativeÚinstall_baser‚   rM   rƒ   r�   rP   r�   Úegg2distrl   Úwrite_wheelfileÚexistsrk   Úmakedirsr   rq   Zwrite_filesÚgetattrÚappendr   r   rj   Údry_runr   rZ   )ru   rŸ   r¡   r£   r¥   ÚkeyZbasedir_observedÚimpl_tagrœ   ri   Zarchive_basenamer%   Zdistinfo_dirnameÚdistinfo_dirÚ
wheel_pathZwfr   r   r   Úrun"  s|    


ÿ
þ
þ

þþ
*þÿzbdist_wheel.runzbdist_wheel (ú)c                 C   s0  ddl m} tjdk r*t|tƒs*| d¡}|ƒ }d|d< ||d< t| jƒ ¡ |d< | j	d urf| j	|d	< |  
¡ \}}}| d
¡D ]8}| d
¡D ](}	| d
¡D ]}
d ||	|
f¡|d< qšqŒq~tj |d¡}t d|¡ tƒ }t|dd� |¡ t|dƒ�&}| | ¡  dd¡¡ W d   ƒ n1 �s"0    Y  d S )Nr   )ÚMessager   zutf-8z1.0zWheel-Versionr   zRoot-Is-PurelibZBuildr?   r>   ÚTagZWHEELzcreating %s)ÚmaxheaderlenÚwbs   
ó   )Úemail.messagerÏ   r   r   Ú
isinstancerR   Úencoderm   rŒ   rr   rž   rD   rE   rS   rX   rŠ   r¿   r   r   ÚflattenÚopenÚwriteÚgetvaluerF   )ru   Zwheelfile_baseÚ	generatorrÏ   ÚmsgrÊ   rœ   ri   rG   rH   ÚplatZwheelfile_pathÚbufferÚfr   r   r   rÃ   v  s(    


zbdist_wheel.write_wheelfilec                 C   s6   t j |¡\}}|dd… t jkr2||dd …  }|S )Nr   r   )rS   rX   Ú
splitdriveÚsep)ru   rX   Údriver   r   r   rÀ   ’  s    zbdist_wheel._ensure_relativec                 C   sÎ   | j  d¡}tƒ }tdd„ | dd¡d  ¡ D ƒƒ}d|v rZt dt¡ | 	|d d ¡ d|vrnd|vrnd	}|D ]V}t
|ƒD ]H}| d
¡ršt d|¡ q~||vr~tj |¡r~t d||¡ | 	|¡ q~qr|S )NÚmetadatac                 S   s   h | ]}|’qS r   r   )r–   Úoptionr   r   r   Ú	<setcomp>�  s   z,bdist_wheel.license_paths.<locals>.<setcomp>Zlicense_files)r4   r4   r   Zlicense_filezEThe "license_file" option is deprecated. Use "license_files" instead.)zLICEN[CS]E*zCOPYING*zNOTICE*zAUTHORS*ú~z4ignoring license file "%s" as it looks like a backupz/adding license file "%s" (matched pattern "%s"))rƒ   r‰   ÚsetÚsortedÚgetrD   r(   r)   ÚDeprecationWarningÚaddr   ÚendswithrŠ   ÚdebugrS   rX   Úisfiler¿   )ru   rã   ÚfilesÚpatternsÚpatternrX   r   r   r   Úlicense_paths™  s*    ÿÿ
zbdist_wheel.license_pathsc                 C   sn  dd„ }||ƒ t j |¡sxddl}t j t j |¡d¡}| |¡}d|f }|rpt j |d ¡}|d|f 7 }t|ƒ‚t j |¡rž|}	t	||ƒ}
t  
|¡ n€t j |d¡}	t	||	ƒ}
tj||d	d
„ d� t j |d¡}t|dƒ�}| ¡  ¡ }W d  ƒ n1 �s0    Y  |�s||ƒ tt j |d¡|
ƒ | jD ](}t j |¡}t |t j ||¡¡ �q8||ƒ dS )z:Convert an .egg-info directory into a .dist-info directoryc                 S   sJ   t j | ¡r0t j | ¡s0t j | ¡r0t | ¡ nt j | ¡rFt  | ¡ dS )z-Appropriately delete directory, file or link.N)rS   rX   rÄ   ÚislinkÚisdirÚshutilr   Úunlink)r^   r   r   r   Úadios·  s    $z#bdist_wheel.egg2dist.<locals>.adiosr   Nz
*.egg-infoz)Egg metadata expected at %s but not foundz- (%s found - possible misnamed archive file?)úPKG-INFOc                 S   s   h d£S )N>   zSOURCES.txtzrequires.txtrø   znot-zip-safer   )ÚxÚyr   r   r   Ú<lambda>Û  ó    z&bdist_wheel.egg2dist.<locals>.<lambda>)Úignorezdependency_links.txtÚrÚMETADATA)rS   rX   rÄ   ÚglobrE   ÚdirnameÚbasenamer�   rî   r   Úmkdirrõ   ÚcopytreerØ   Úreadr‹   r   rò   Úcopy)ru   Zegginfo_pathZdistinfo_pathr÷   r   ÚpatÚpossibleÚerrZaltZpkginfo_pathÚpkg_infoZdependency_links_pathZdependency_links_fileZdependency_linksZlicense_pathÚfilenamer   r   r   rÂ   µ  s<    



ÿ,
zbdist_wheel.egg2dist)Ú__name__Ú
__module__Ú__qualname__Údescriptionr   r
   r	   r   r"   r   rE   r   Úuser_optionsÚboolean_optionsrv   rŽ   Úpropertyr~   rž   rÍ   Úwheel_versionrÃ   rÀ   rò   rÂ   r   r   r   r   r[   }   sV   þÿÿþÿÿÿÝ($
0T
r[   )TT)5Ú__doc__r    rS   rõ   rU   r   r†   r(   Úcollectionsr   Údistutils.corer   r   rŠ   Úior   r   r   r   Ú	sysconfigr   Úzipfiler	   r
   Úpkg_resourcesZpkginfor   Zmacosx_libfiler   rã   r   Zvendored.packagingr   Z	wheelfiler   r4   r   r  r   Úemail.generatorr   r   rK   rN   rˆ   r   r"   r/   rI   rM   rP   rZ   r[   r   r   r   r   Ú<module>   sH   
(