o
    h0)                     @  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(   W/var/www/html/venv/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 )#InMemoryMetadatazIMetadataProvider 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 )zFind 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    
# +