o
    JAf                      @   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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mZ ddlmZ ed	ejjZd
Zdd Zejdd ZG dd dZdS )zWheels support.    N)get_platform)Version)sys_tags)canonicalize_name)write_requirements_egg_basename)_unpack_zipfile_objz^(?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   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_dirdst_dirdirpathdirnames	filenamessubdirfsrcdstnd r    R/usr/lib/python3.10/site-packages/setuptools-67.5.1-py3.10.egg/setuptools/wheel.py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#   set_thresholdWARN)r#   savedr    r    r!   disable_info_traces5   s   r(   c                   @   sh   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd Ze
dd Ze
dd ZdS )Wheelc                 C   sP   t tj|}|d u rtd| || _|  D ]
\}}t| || qd S )Nzinvalid wheel name: %r)	
WHEEL_NAMEr
   r   basename
ValueErrorfilename	groupdictitemssetattr)selfr-   matchkvr    r    r!   __init__D   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splitabiplatformr1   r    r    r!   tagsL   s
   


z
Wheel.tagsc                    s0   t dd t D  t fdd|  D dS )z5Is the wheel is compatible with the current platform?c                 s   s     | ]}|j |j|jfV  qd S N)interpreterr;   r<   .0tr    r    r!   	<genexpr>V   s    
z&Wheel.is_compatible.<locals>.<genexpr>c                 3   s    | ]	}| v rd V  qdS )TNr    rA   supported_tagsr    r!   rD   X   s    F)setr   nextr>   r=   r    rE   r!   is_compatibleT   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   r=   r    r    r!   egg_nameZ   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   r,   )r1   zfmemberrP   r    r    r!   get_dist_infoa   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ZipFiler-   _install_as_egg)r1   destination_eggdirrS   r    r    r!   install_as_eggk   s   "zWheel.install_as_eggc                 C   s\   d| j | jf }| |}d| }tj|d}| |||| | || | || d S )Nz%s-%sz%s.dataEGG-INFO)	rK   rL   rU   r
   r   r   _convert_metadata_move_data_entries_fix_namespace_packages)r1   rY   rS   dist_basename	dist_info	dist_dataegg_infor    r    r!   rX   p   s   
zWheel._install_as_eggc                    sH  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 )Nz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: %s)metadatac                 S   s   d | _ t| S r?   )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    )rB   rr   )install_requiresr    r!   
<listcomp>   s
    z6Wheel._convert_metadata.<locals>.<dictcomp>.<listcomp>)maprequires)rB   extra)distrt   rs   r    r!   
<dictcomp>   s    z+Wheel._convert_metadata.<locals>.<dictcomp>METADATAzPKG-INFO)rt   extras_require)attrsrb   zrequires.txt)pkg_resourcesparse_versiongetr,   r   r
   r   r   Distributionfrom_locationPathMetadatar   rv   rw   extrasrename
setuptoolsdictr(   r   get_command_obj)rS   rY   r`   rb   r~   rm   wheel_metadatawheel_versionwheel_v1r|   
setup_distr    )ry   r`   rt   rs   rS   r!   r\   z   sN   

"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 r?   )r
   r   r   )rB   r   ra   r    r!   rD      s
    
z+Wheel._move_data_entries.<locals>.<genexpr>)dataheaderspurelibplatlibN)r
   r   r   r   mkdirlistdirrQ   unlinkr   r   filterr"   )rY   ra   dist_data_scriptsegg_info_scriptsentryr   r    r   r!   r]      s,   


zWheel._move_data_entriesc              	   C   s   t j| d}t j|rkt|}|  }W d    n1 s"w   Y  |D ]C}t jj|g|dR  }t j|d}t j|sJt | t j|sjt|d}|t	 W d    n1 sew   Y  q)d S d S )Nznamespace_packages.txtr6   z__init__.pyw)
r
   r   r   r   rc   rd   r:   r   writeNAMESPACE_PACKAGE_INIT)rb   rY   namespace_packagesrk   modmod_dirmod_initr    r    r!   r^      s&   

zWheel._fix_namespace_packagesN)__name__
__module____qualname__r5   r>   rI   rM   rU   rZ   rX   staticmethodr\   r]   r^   r    r    r    r!   r)   B   s    


;
r)   ) __doc__rf   r7   r
   rO   rerV   
contextlibdistutils.utilr   r   Z#setuptools.extern.packaging.versionr   r   Z setuptools.extern.packaging.tagsr   Z!setuptools.extern.packaging.utilsr   setuptools.command.egg_infor   r   setuptools.archive_utilr   compileVERBOSEr2   r*   r   r"   contextmanagerr(   r)   r    r    r    r!   <module>   s6    
