o
    6‘ði"  ã                   @  s0  d dl mZ d dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ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 d dlmZ d d	lmZ d d
lmZmZ d dlmZm Z 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+ ddl,m-Z-m.Z.m/Z/m0Z0 G dd„ dej1j2ƒZ3G dd„ deƒZ2dS )é    )ÚannotationsN)Ú
CollectionÚIterableÚIteratorÚMappingÚSequence)ÚPathLike)Úcast)ÚRequirement)ÚNormalizedNameÚcanonicalize_name)ÚVersion)Úparse)ÚInvalidWheelÚUnsupportedWheel)ÚBaseDistributionÚBaseEntryPointÚInfoPathÚWheel)Únormalize_path)Úget_requirement)ÚTempDirectory)Úparse_wheelÚread_wheel_metadata_fileé   )ÚBadMetadataÚBasePathÚget_dist_canonical_nameÚ*parse_name_and_version_from_info_directoryc                   @  sF   e Zd ZdZddd	„Zed dd„ƒZd!dd„Zd"dd„Zd#dd„Z	dS )$ÚWheelDistributiona�  An ``importlib.metadata.Distribution`` read from a wheel.

    Although ``importlib.metadata.PathDistribution`` accepts ``zipfile.Path``,
    its implementation is too "lazy" for pip's needs (we can't keep the ZipFile
    handle open for the entire lifetime of the distribution object).

    This implementation eagerly reads the entire metadata directory into the
    memory instead, and operates from that.
    Úfilesú%Mapping[pathlib.PurePosixPath, bytes]Úinfo_locationúpathlib.PurePosixPathÚreturnÚNonec                 C  s   || _ || _d S ©N)Ú_filesr"   )Úselfr    r"   © r)   úf/root/parts/websockify/install/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.pyÚ__init__1   s   
zWheelDistribution.__init__Úzfúzipfile.ZipFileÚnameÚstrÚlocationc                   sL   t ˆ|ƒ\‰ }‡ fdd„ˆ ¡ D ƒ}‡fdd„|D ƒ}t |ˆ ¡}| ||ƒS )Nc                 3  s:   � | ]}|  ˆ › d �¡r|t | d d¡d ¡fV  qdS )ú/r   éÿÿÿÿN)Ú
startswithÚpathlibÚPurePosixPathÚsplit)Ú.0r.   )Úinfo_dirr)   r*   Ú	<genexpr>A   s   € ý
ÿz1WheelDistribution.from_zipfile.<locals>.<genexpr>c                   s   i | ]
\}}|t ˆ |ƒ“qS r)   )r   )r7   ÚfullpathÚrelpath)r,   r)   r*   Ú
<dictcomp>F   s    
ÿÿz2WheelDistribution.from_zipfile.<locals>.<dictcomp>)r   Únamelistr4   r5   )Úclsr,   r.   r0   Ú_Úpathsr    r"   r)   )r8   r,   r*   Úfrom_zipfile9   s   
þ
þ
zWheelDistribution.from_zipfileÚpathr   úIterator[pathlib.PurePosixPath]c                 C  s&   t  t|ƒ¡| jv rt| jƒS t|ƒ‚r&   )r4   r5   r/   r'   ÚiterÚFileNotFoundError©r(   rB   r)   r)   r*   ÚiterdirM   s   
zWheelDistribution.iterdirÚfilenameú
str | Nonec              
   C  s|   z
| j t |¡ }W n
 ty   Y d S w z| d¡}W |S  ty= } z| jj}d|› d|› d|› d�}t|ƒ‚d }~ww )Nzutf-8zError decoding metadata for z: z in z file)	r'   r4   r5   ÚKeyErrorÚdecodeÚUnicodeDecodeErrorr"   Úparentr   )r(   rH   ÚdataÚtextÚeÚwheelÚerrorr)   r)   r*   Ú	read_textS   s   ÿü€ýzWheelDistribution.read_textústr | PathLike[str]úpathlib.Pathc                 C  s   t ‚r&   )ÚNotImplementedErrorrF   r)   r)   r*   Úlocate_file`   s   zWheelDistribution.locate_fileN)r    r!   r"   r#   r$   r%   )r,   r-   r.   r/   r0   r/   r$   r   )rB   r   r$   rC   )rH   r/   r$   rI   )rB   rT   r$   rU   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+   ÚclassmethodrA   rG   rS   rW   r)   r)   r)   r*   r   &   s    



r   c                   @  sÜ   e Zd ZdCdd	„ZedDdd„ƒZedEdd„ƒZedFdd„ƒZedGdd„ƒZ	edGdd„ƒZ
edGdd „ƒZedHd"d#„ƒZedId%d&„ƒZedJd'd(„ƒZdKd,d-„ZdLd/d0„ZdMd1d2„ZdNd4d5„ZdOd7d8„ZdPd:d;„ZdQdRd@dA„ZdBS )SÚDistributionÚdistúimportlib.metadata.Distributionr"   úBasePath | NoneÚinstalled_locationr$   r%   c                 C  s   || _ || _|| _d S r&   )Ú_distÚ_info_locationÚ_installed_location)r(   r^   r"   ra   r)   r)   r*   r+   g   s   
zDistribution.__init__Ú	directoryr/   r   c                 C  s&   t  |¡}tjj |¡}| |||jƒS r&   )r4   ÚPathÚ	importlibÚmetadatar]   ÚatrM   )r>   re   r"   r^   r)   r)   r*   Úfrom_directoryq   s   
zDistribution.from_directoryÚmetadata_contentsÚbytesrH   Úproject_namec                 C  sD   t  tddd�j¡}|d }| |¡ tjj |j	¡}| ||j	d ƒS )Nrh   T)ÚkindÚglobally_managedÚMETADATA)
r4   rf   r   rB   Úwrite_bytesrg   rh   r]   ri   rM   )r>   rk   rH   rm   Útemp_dirÚmetadata_pathr^   r)   r)   r*   Úfrom_metadata_file_contentsw   s   ÿ
z(Distribution.from_metadata_file_contentsrQ   r   r.   c              
   C  s|   z|  ¡ �}t |||j¡}W d   ƒ n1 sw   Y  W n tjy2 } zt|j|ƒ|‚d }~ww | ||jt 	|j¡ƒS r&   )
Ú
as_zipfiler   rA   r0   ÚzipfileÚ
BadZipFiler   r"   r4   r5   )r>   rQ   r.   r,   r^   rP   r)   r)   r*   Ú
from_wheelˆ   s   
ÿ€€ÿzDistribution.from_wheelrI   c                 C  s   | j d u rd S t| j jƒS r&   )rc   r/   rM   ©r(   r)   r)   r*   r0   ‘   s   
zDistribution.locationc                 C  s   | j d u rd S t| j ƒS r&   )rc   r/   ry   r)   r)   r*   r"   —   s   

zDistribution.info_locationc                 C  s   | j d u rd S tt| j ƒƒS r&   )rd   r   r/   ry   r)   r)   r*   ra   �   s   
zDistribution.installed_locationr   c                 C  s
   t | jƒS r&   )r   rb   ry   r)   r)   r*   Úcanonical_name£   s   
zDistribution.canonical_namer   c                 C  s>   zt | jƒd p| jj}t|ƒW S  ty   t| jdd�‚w )Nr   z invalid metadata entry `version`)Úreason)r   rb   ÚversionÚparse_versionÚ	TypeErrorr   )r(   r|   r)   r)   r*   r|   §   s   þ
ÿzDistribution.versionc                 C  ó   | j jS r&   )rb   r|   ry   r)   r)   r*   Úraw_version²   ó   zDistribution.raw_versionrB   r   Úboolc                 C  s   | j  t|ƒ¡d uS r&   )rb   rS   r/   rF   r)   r)   r*   Úis_file¶   s   zDistribution.is_fileúIterator[str]c                 c  s6   � t | jtjƒs
d S | j d¡ ¡ D ]}|jV  qd S )NÚscripts)Ú
isinstancerc   r4   rf   ÚjoinpathrG   r.   )r(   Úchildr)   r)   r*   Úiter_distutils_script_names¹   s   €
ÿz(Distribution.iter_distutils_script_namesc                 C  s$   | j  t|ƒ¡}|d u rt|ƒ‚|S r&   )rb   rS   r/   rE   )r(   rB   Úcontentr)   r)   r*   rS   Â   s   zDistribution.read_textúIterable[BaseEntryPoint]c                 C  r   r&   )rb   Úentry_pointsry   r)   r)   r*   Úiter_entry_pointsÈ   r�   zDistribution.iter_entry_pointsúemail.message.Messagec                 C  s(   | j j}|d u rtj ¡ S ttjj|ƒS r&   )rb   rh   ÚemailÚmessageÚMessager	   )r(   rh   r)   r)   r*   Ú_metadata_implÌ   s   
zDistribution._metadata_implúIterable[NormalizedName]c                 C  s   dd„ | j  dg ¡D ƒS )Nc                 S  s   g | ]}t |ƒ‘qS r)   )r   )r7   Úextrar)   r)   r*   Ú
<listcomp>Û   s    ÿÿz5Distribution.iter_provided_extras.<locals>.<listcomp>zProvides-Extra)rh   Úget_allry   r)   r)   r*   Úiter_provided_extrasÚ   s   þz!Distribution.iter_provided_extrasr)   ÚextrasúCollection[str]úIterable[Requirement]c                 #  sz   � dd„ |D ƒ}| j  dg ¡D ]+}t| ¡ ƒ‰ ˆ jsˆ V  q|s,ˆ j ddi¡r,ˆ V  qt‡ fdd„|D ƒƒr:ˆ V  qd S )Nc                 S  s   g | ]}d |i‘qS )r”   r)   )r7   rP   r)   r)   r*   r•   á   s    z2Distribution.iter_dependencies.<locals>.<listcomp>zRequires-Distr”   Ú c                 3  s   � | ]	}ˆ j  |¡V  qd S r&   )ÚmarkerÚevaluate)r7   Úcontext©Úreqr)   r*   r9   ê   s   € z1Distribution.iter_dependencies.<locals>.<genexpr>)rh   r–   r   Ústriprœ   r�   Úany)r(   r˜   ÚcontextsÚ
req_stringr)   rŸ   r*   Úiter_dependenciesà   s   €€÷zDistribution.iter_dependenciesN)r^   r_   r"   r`   ra   r`   r$   r%   )re   r/   r$   r   )rk   rl   rH   r/   rm   r/   r$   r   )rQ   r   r.   r/   r$   r   )r$   rI   )r$   r   )r$   r   )r$   r/   )rB   r   r$   r‚   )r$   r„   )rB   r   r$   r/   )r$   r‹   )r$   rŽ   )r$   r“   )r)   )r˜   r™   r$   rš   )rX   rY   rZ   r+   r\   rj   rt   rx   Úpropertyr0   r"   ra   rz   r|   r€   rƒ   r‰   rS   r�   r’   r—   r¥   r)   r)   r)   r*   r]   f   s6    





	


r]   )4Ú
__future__r   Úemail.messager�   Úimportlib.metadatarg   r4   rv   Úcollections.abcr   r   r   r   r   Úosr   Útypingr	   Ú"pip._vendor.packaging.requirementsr
   Úpip._vendor.packaging.utilsr   r   Úpip._vendor.packaging.versionr   r   r}   Úpip._internal.exceptionsr   r   Úpip._internal.metadata.baser   r   r   r   Úpip._internal.utils.miscr   Úpip._internal.utils.packagingr   Úpip._internal.utils.temp_dirr   Úpip._internal.utils.wheelr   r   Ú_compatr   r   r   r   rh   r]   r   r)   r)   r)   r*   Ú<module>   s*    @