o
    ­—Žj0)  ã                   @  sL  d dl m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	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mZ d dlmZ d dl m!Z!m"Z" d dl#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ g d¢Z,e -e.¡Z/dZ0G dd„ deƒZ1G dd„ dƒZ2G dd„ de'ƒZ3G dd„ de)ƒZ4dS )é    )ÚannotationsN)Ú
CollectionÚIterableÚIteratorÚMapping)Ú
NamedTuple)Úpkg_resources)ÚRequirement)ÚNormalizedNameÚcanonicalize_name)ÚVersion)Úparse)ÚInvalidWheelÚNoneMetadataErrorÚUnsupportedWheel)Úegg_link_path_from_location)Údisplay_pathÚnormalize_path)Úparse_wheelÚread_wheel_metadata_fileé   )ÚBaseDistributionÚBaseEntryPointÚBaseEnvironmentÚInfoPathÚWheel)ÚNAMEÚDistributionÚEnvironmentr   c                   @  s&   e Zd ZU ded< ded< ded< dS )Ú
EntryPointÚstrÚnameÚvalueÚgroupN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r(   r(   úa/var/www/kodo/Anonymous/send/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.pyr   '   s   
 r   c                   @  sV   e Zd ZdZddd	„Zddd„Zddd„Zd dd„Zddd„Zd!dd„Z	d"dd„Z
dS )#ÚInMemoryMetadataz”IMetadataProvider that reads metadata files from a dictionary.

    This also maps metadata decoding exceptions to our internal exception type.
    ÚmetadataúMapping[str, bytes]Ú
wheel_namer    ÚreturnÚNonec                 C  s   || _ || _d S ©N)Ú	_metadataÚ_wheel_name)Úselfr+   r-   r(   r(   r)   Ú__init__3   s   
zInMemoryMetadata.__init__r!   Úboolc                 C  s
   || j v S r0   )r1   ©r3   r!   r(   r(   r)   Úhas_metadata7   ó   
zInMemoryMetadata.has_metadatac                 C  sH   z| j |  ¡ W S  ty# } ztd| j› d|› d|› d�ƒ‚d }~ww )NzError decoding metadata for z: z in z file)r1   ÚdecodeÚUnicodeDecodeErrorr   r2   )r3   r!   Úer(   r(   r)   Úget_metadata:   s   ÿ€þzInMemoryMetadata.get_metadataúIterable[str]c                 C  s   t  |  |¡¡S r0   )r   Úyield_linesr<   r6   r(   r(   r)   Úget_metadata_linesC   ó   z#InMemoryMetadata.get_metadata_linesc                 C  s   dS ©NFr(   r6   r(   r(   r)   Úmetadata_isdirF   ó   zInMemoryMetadata.metadata_isdirú	list[str]c                 C  s   g S r0   r(   r6   r(   r(   r)   Úmetadata_listdirI   rC   z!InMemoryMetadata.metadata_listdirÚscript_nameÚ	namespacec                 C  s   d S r0   r(   )r3   rF   rG   r(   r(   r)   Ú
run_scriptL   rC   zInMemoryMetadata.run_scriptN)r+   r,   r-   r    r.   r/   )r!   r    r.   r5   )r!   r    r.   r    )r!   r    r.   r=   )r!   r    r.   rD   )rF   r    rG   r    r.   r/   )r$   r%   r&   Ú__doc__r4   r7   r<   r?   rB   rE   rH   r(   r(   r(   r)   r*   -   s    



	

r*   c                   @  sø   e Zd ZdEdd„ZedFdd	„ƒZedGdd„ƒZedHdd„ƒZedIdd„ƒZ	edJdd„ƒZ
edJdd„ƒZedJdd „ƒZedKd"d#„ƒZedLd%d&„ƒZedMd(d)„ƒZedNd*d+„ƒZdOd.d/„ZdPd1d2„ZdQd3d4„ZdRd6d7„ZdSd9d:„ZdTdUd?d@„ZdVdBdC„ZdDS )Wr   Údistúpkg_resources.Distributionr.   r/   c                 C  s   || _ d | _d S r0   )Ú_distÚ_Distribution__extra_mapping©r3   rJ   r(   r(   r)   r4   Q   s   
zDistribution.__init__úMapping[NormalizedName, str]c                 C  s$   | j d u rdd„ | jjD ƒ| _ | j S )Nc                 S  s   i | ]}t |ƒ|“qS r(   )r   ©Ú.0Úextrar(   r(   r)   Ú
<dictcomp>Z   s    
ÿz/Distribution._extra_mapping.<locals>.<dictcomp>)rM   rL   Úextras©r3   r(   r(   r)   Ú_extra_mappingW   s
   
ÿzDistribution._extra_mappingÚ	directoryr    r   c           	      C  sŽ   |  tj¡}tj |¡\}}t ||¡}| d¡r%tj}tj 	|¡d }n| d¡s,J ‚tj
}tj 	|¡d  d¡d }||||d�}| |ƒS )Nz	.egg-infor   z
.dist-infoú-)Úproject_namer+   )ÚrstripÚosÚsepÚpathÚsplitr   ÚPathMetadataÚendswithr   ÚsplitextÚDistInfoDistribution)	ÚclsrW   Údist_dirÚbase_dirÚdist_dir_namer+   Údist_clsÚ	dist_namerJ   r(   r(   r)   Úfrom_directory`   s   
zDistribution.from_directoryÚmetadata_contentsÚbytesÚfilenamerY   c                 C  s&   d|i}t j|t||ƒ|d�}| |ƒS )NÚMETADATA©Úlocationr+   rY   )r   rb   r*   )rc   rj   rl   rY   Úmetadata_dictrJ   r(   r(   r)   Úfrom_metadata_file_contentst   s   ÿýz(Distribution.from_metadata_file_contentsÚwheelr   r!   c              
     sÆ   z)|  ¡ �‰tˆ|ƒ\‰ }‡ ‡fdd„ˆ ¡ D ƒ}W d   ƒ n1 s#w   Y  W n( tjy= } zt|j|ƒ|‚d }~w tyQ } z	t|› d|› �ƒ‚d }~ww tj	|jt
||jƒ|d�}| |ƒS )Nc                   s4   i | ]}|  ˆ › d �¡r| d d¡d tˆ|ƒ“qS )ú/r   éÿÿÿÿ)Ú
startswithr^   r   )rQ   r]   ©Úinfo_dirÚzfr(   r)   rS   Š   s    ýÿz+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, rn   )Ú
as_zipfiler   ÚnamelistÚzipfileÚ
BadZipFiler   ro   r   r   rb   r*   )rc   rr   r!   Ú_rp   r;   rJ   r(   rv   r)   Ú
from_wheel…   s*   
þþ€€€ÿ
ýzDistribution.from_wheelú
str | Nonec                 C  ó   | j jS r0   )rL   ro   rU   r(   r(   r)   ro   š   ó   zDistribution.locationc                 C  s2   t | jƒ}|r|}t|ƒS | jr| j}t|ƒS d S r0   )r   Úraw_namero   r   )r3   Úegg_linkro   r(   r(   r)   Úinstalled_locationž   s   
üÿzDistribution.installed_locationc                 C  r€   r0   )rL   Úegg_inforU   r(   r(   r)   Úinfo_location©   r�   zDistribution.info_locationr5   c                 C  s&   zt | jjjƒW S  ty   Y dS w rA   )r5   rL   Ú	_providerr]   ÚAttributeErrorrU   r(   r(   r)   Úinstalled_by_distutils­   s
   ÿz#Distribution.installed_by_distutilsr
   c                 C  ó   t | jjƒS r0   )r   rL   rY   rU   r(   r(   r)   Úcanonical_name·   ó   zDistribution.canonical_namer   c                 C  rŠ   r0   )Úparse_versionrL   ÚversionrU   r(   r(   r)   rŽ   »   rŒ   zDistribution.versionc                 C  r€   r0   )rL   rŽ   rU   r(   r(   r)   Úraw_version¿   r�   zDistribution.raw_versionr]   r   c                 C  s   | j  t|ƒ¡S r0   )rL   r7   r    )r3   r]   r(   r(   r)   Úis_fileÃ   r@   zDistribution.is_fileúIterator[str]c                 c  s   � | j  d¡E d H  d S )NÚscripts)rL   rE   rU   r(   r(   r)   Úiter_distutils_script_namesÆ   s   €z(Distribution.iter_distutils_script_namesc                 C  s>   t |ƒ}| j |¡st|ƒ‚| j |¡}|d u rt| |ƒ‚|S r0   )r    rL   r7   ÚFileNotFoundErrorr<   r   )r3   r]   r!   Úcontentr(   r(   r)   Ú	read_textÉ   s   
zDistribution.read_textúIterable[BaseEntryPoint]c                 c  s\   � | j  ¡  ¡ D ]#\}}| ¡ D ]\}}t|ƒ d¡\}}}t| ¡ | ¡ |d�V  qqd S )Nú=)r!   r"   r#   )rL   Úget_entry_mapÚitemsr    Ú	partitionr   Ústrip)r3   r#   Úentriesr!   Úentry_pointr}   r"   r(   r(   r)   Úiter_entry_pointsÒ   s   €þÿzDistribution.iter_entry_pointsúemail.message.Messagec                 C  s‚   t | jtjƒr
d}nd}z|  |¡}W n ty2   | jr#t| jƒ}nt| jƒ}t	 
d|¡ d}Y nw tj ¡ }| |¡ | ¡ S )z�
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        rm   zPKG-INFOzNo metadata found in %sÚ )Ú
isinstancerL   r   rb   r–   r”   ro   r   ÚreprÚloggerÚwarningÚemailÚparserÚ
FeedParserÚfeedÚclose)r3   Úmetadata_namer+   Údisplaying_pathÚfeed_parserr(   r(   r)   Ú_metadata_implØ   s   
ú

zDistribution._metadata_implr(   rT   úCollection[str]úIterable[Requirement]c                   s:   |rt ˆ jƒt tt|ƒƒ@ }‡ fdd„|D ƒ}ˆ j |¡S )Nc                   s   g | ]}ˆ j | ‘qS r(   )rV   rP   rU   r(   r)   Ú
<listcomp>ó   s    z2Distribution.iter_dependencies.<locals>.<listcomp>)ÚsetrV   Úmapr   rL   Úrequires)r3   rT   Úrelevant_extrasr(   rU   r)   Úiter_dependenciesî   s   
ÿzDistribution.iter_dependenciesúIterable[NormalizedName]c                 C  s
   | j  ¡ S r0   )rV   ÚkeysrU   r(   r(   r)   Úiter_provided_extrasö   r8   z!Distribution.iter_provided_extrasN)rJ   rK   r.   r/   )r.   rO   )rW   r    r.   r   )rj   rk   rl   r    rY   r    r.   r   )rr   r   r!   r    r.   r   )r.   r   )r.   r5   )r.   r
   )r.   r   )r.   r    )r]   r   r.   r5   )r.   r‘   )r]   r   r.   r    )r.   r—   )r.   r    )r(   )rT   r¯   r.   r°   )r.   r·   )r$   r%   r&   r4   ÚpropertyrV   Úclassmethodri   rq   r~   ro   r„   r†   r‰   r‹   rŽ   r�   r�   r“   r–   rŸ   r®   r¶   r¹   r(   r(   r(   r)   r   P   s>    

	



	
r   c                   @  sP   e Zd Zddd„Zeddd	„ƒZeddd„ƒZddd„Zddd„Zddd„Z	dS )r   Úwsúpkg_resources.WorkingSetr.   r/   c                 C  s
   || _ d S r0   )Ú_ws)r3   r¼   r(   r(   r)   r4   û   r8   zEnvironment.__init__r   c                 C  s
   | t jƒS r0   )r   Úworking_set)rc   r(   r(   r)   Údefaultþ   s   
zEnvironment.defaultÚpathsúlist[str] | Nonec                 C  s   | t  |¡ƒS r0   )r   Ú
WorkingSet)rc   rÁ   r(   r(   r)   Ú
from_paths  s   zEnvironment.from_pathsúIterator[BaseDistribution]c                 c  s   � | j D ]}t|ƒV  qd S r0   )r¾   r   rN   r(   r(   r)   Ú_iter_distributions  s   €
ÿzEnvironment._iter_distributionsr!   r    úBaseDistribution | Nonec                 C  s,   t |ƒ}|  ¡ D ]}|j|kr|  S qdS )zÛFind a distribution matching the ``name`` in the environment.

        This searches from *all* distributions available in the environment, to
        match the behavior of ``pkg_resources.get_distribution()``.
        N)r   Úiter_all_distributionsr‹   )r3   r!   r‹   rJ   r(   r(   r)   Ú_search_distribution
  s   
ÿz Environment._search_distributionc                 C  sD   |   |¡}|r	|S z| j |¡ W n tjy   Y d S w |   |¡S r0   )rÉ   r¾   Úrequirer   ÚDistributionNotFound)r3   r!   rJ   r(   r(   r)   Úget_distribution  s   

ÿ
zEnvironment.get_distributionN)r¼   r½   r.   r/   )r.   r   )rÁ   rÂ   r.   r   )r.   rÅ   )r!   r    r.   rÇ   )
r$   r%   r&   r4   r»   rÀ   rÄ   rÆ   rÉ   rÌ   r(   r(   r(   r)   r   ú   s    


r   )5Ú
__future__r   Úemail.messager¦   Úemail.parserÚloggingr[   r{   Úcollections.abcr   r   r   r   Útypingr   Úpip._vendorr   Ú"pip._vendor.packaging.requirementsr	   Úpip._vendor.packaging.utilsr
   r   Úpip._vendor.packaging.versionr   r   r�   Úpip._internal.exceptionsr   r   r   Úpip._internal.utils.egg_linkr   Úpip._internal.utils.miscr   r   Úpip._internal.utils.wheelr   r   Úbaser   r   r   r   r   Ú__all__Ú	getLoggerr$   r¤   r   r   r*   r   r   r(   r(   r(   r)   Ú<module>   s4    
# +