o
    Zh!                     @   s   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Zddl	m
Z
 ddlmZ ddlmZ ddlZddlmZ ddlmZmZ dd	lmZ dd
lmZ edejjZdZejdd Z dddZ!ej"dd Z#G dd dZ$dS )zWheels support.    Nsys_tags)canonicalize_name)Version)_unpack_zipfile_obj)_egg_basenamewrite_requirements   )_read_utf8_with_fallback)get_platformz^(?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   dd t  D S )Nc                 S   s   h | ]
}|j |j|jfqS  )interpreterabiplatform.0tr   r   G/var/www/html/lang_env/lib/python3.10/site-packages/setuptools/wheel.py	<setcomp>'   s    z&_get_supported_tags.<locals>.<setcomp>r   r   r   r   r   _get_supported_tags"   s   r   returnc                 C   s   t | D ]Q\}}}t j|| }|D ]}t j||}t j|||}t || qttt|D ]"\}	}
t j||
}t j|||
}t j	|sUt || ||	= q3qt j| ddD ]\}}}|rgJ 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dr   r   r   unpack*   s$   	r-   c               	   c   s>    ddl m}  | | j}zdV  W | | dS | | w )z*
    Temporarily disable info traces.
    r   )logN)	distutilsr.   Zset_thresholdWARN)r.   savedr   r   r   disable_info_traces@   s   r2   c                   @   sl   e Zd ZdddZdd Zdd Zd	d
 Zdd ZdddZdd Z	e
dd Ze
dd Ze
dd ZdS )Wheelr   Nc                 C   sR   t tj|}|d u rtd||| _|  D ]
\}}t| || qd S )Nzinvalid wheel name: )	
WHEEL_NAMEr   r   basename
ValueErrorfilename	groupdictitemssetattr)selfr7   matchkvr   r   r   __init__O   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splitr   r   r;   r   r   r   tagsW   s
   


z
Wheel.tagsc                 C   s   t dd |  D dS )z2Is the wheel compatible with the current platform?c                 s   s    | ]
}|t  v rd V  qdS )TN)r   r   r   r   r   	<genexpr>a   s    z&Wheel.is_compatible.<locals>.<genexpr>F)nextrF   rE   r   r   r   is_compatible_   s   zWheel.is_compatiblec                 C   s&   t | j| j| jdkrd nt dd S )Nany)r   z.egg)r   project_nameversionr   r   rE   r   r   r   egg_namec   s   zWheel.egg_namec                 C   sF   |  D ]}t|}|drt|t| jr|  S qtd)Nz
.dist-infoz.unsupported wheel format. .dist-info not found)namelist	posixpathdirnameendswithr   
startswithrK   r6   )r;   zfmemberrP   r   r   r   get_dist_infom   s   
zWheel.get_dist_infoc                 C   s>   t | j}| || W d   dS 1 sw   Y  dS )z"Install wheel as an egg directory.N)zipfileZipFiler7   _install_as_egg)r;   destination_eggdirrS   r   r   r   install_as_eggw   s   "zWheel.install_as_eggc                 C   s`   | j  d| j }| |}| d}tj|d}| |||| | || | || d S )N-z.dataEGG-INFO)	rK   rL   rU   r   r   r   _convert_metadata_move_data_entries_fix_namespace_packages)r;   rY   rS   Zdist_basename	dist_info	dist_dataegg_infor   r   r   rX   |   s   

zWheel._install_as_eggc                    sJ  dd l }fdd}|d}t|d}td|  ko#tdk n  }|s/td| t| tj||jj	||
|d	 d
d tt   fdd jD }	t| ttj|dtj|d tjt|	dd}
t  t|
dd tj|d W d    d S 1 sw   Y  d S )Nr   c                    sT    t | }| d}tj |W  d    S 1 s#w   Y  d S )Nutf-8)	openrO   r   readdecodeemailparserParserparsestr)namefpvalue)r`   rS   r   r   get_metadata   s   $z-Wheel._convert_metadata.<locals>.get_metadataWHEELzWheel-Versionz1.0z2.0dev0z"unsupported wheel format version: )metadatac                 S   s   d | _ t| S N)markerstr)reqr   r   r   raw_req   s   z(Wheel._convert_metadata.<locals>.raw_reqc              	      s.   i | ]}|fd dt  |fD qS )c                    s   g | ]}| vr|qS r   r   )r   rt   )install_requiresr   r   
<listcomp>   s
    z6Wheel._convert_metadata.<locals>.<dictcomp>.<listcomp>)maprequires)r   extra)distrv   ru   r   r   
<dictcomp>   s    z+Wheel._convert_metadata.<locals>.<dictcomp>METADATAzPKG-INFO)rv   extras_require)attrsrb   zrequires.txt)pkg_resourcesparse_versiongetr6   r   r   r   r   Distributionfrom_locationPathMetadatar   rx   ry   extrasrename
setuptoolsdictr2   r   Zget_command_obj)rS   rY   r`   rb   r   rn   wheel_metadatawheel_versionZwheel_v1r~   Z
setup_distr   )r{   r`   rv   ru   rS   r   r]      sJ    

	"zWheel._convert_metadatac                    s   t j|   t j d}t j|rNt j| dd}t | t |D ]"}|dr8t t j|| q&t t j||t j|| q&t 	| t
t jj fdddD D ]}t||  q\t j rqt 	  dS dS )z,Move data entries to their correct location.scriptsr\   z.pycc                 3   s    | ]
}t j |V  qd S rq   )r   r   r   )r   r,   ra   r   r   rG      s
    
z+Wheel._move_data_entries.<locals>.<genexpr>)dataheaderspurelibplatlibN)r   r   r   r!   mkdirlistdirrQ   unlinkr   r"   filterr-   )rY   ra   Zdist_data_scriptsZegg_info_scriptsentryr'   r   r   r   r^      s.   



zWheel._move_data_entriesc              	   C   s   t j| d}t j|rYt| }|D ]E}t jj|g|dR  }t j|d}t j|s6t | t j|sXt|ddd}|t	 W d    n1 sSw   Y  qd S d S )Nznamespace_packages.txtr@   z__init__.pywrc   )encoding)
r   r   r   r!   r
   rD   r   rd   writeNAMESPACE_PACKAGE_INIT)rb   rY   namespace_packagesmodZmod_dirZmod_initrl   r   r   r   r_      s   
zWheel._fix_namespace_packagesr   N)__name__
__module____qualname__r?   rF   rI   rM   rU   rZ   rX   staticmethodr]   r^   r_   r   r   r   r   r3   N   s    





:
r3   r   )%__doc__
contextlibrg   	functoolsrA   r   rO   rerV   Zpackaging.tagsr   Zpackaging.utilsr   Zpackaging.versionr   r   r   Zsetuptools.archive_utilr   Zsetuptools.command.egg_infor   r   Zunicode_utilsr
   Zdistutils.utilr   compileVERBOSEr<   r4   r   cacher   r-   contextmanagerr2   r3   r   r   r   r   <module>   s<    


