a
    QSicJ                     @   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   M/var/www/html/django/DPS/env/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 rttdrd}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otjdk drtjdk rd}d|t |||f }n| r| 	drd| 
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rtt| jst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_tagZ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rtjtj| jd}| | _| _t|| jrd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'st(| j' tj| j'|
d }t)|d| j*}|+| W d    n1 s0    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platlibZinstall_r4   ntz..Zinstall_purelibZinstall_platlibzinstalling to %sz{}-{}-{}-{}Z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compileZwarn_dirZno_epsetattrrS   rX   rE   rg   rL   normpathZ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_dirnameZdistinfo_dirZ
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< qqq~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-Purelib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
rt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>license_files)r4   r4   r   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 
| nt 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_file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   
(