a
    s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(   `/var/www/html/assistant/venv/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.pyr   '   s   
r   c                   @  s   e Zd ZdZddddddZddd	d
dZddd	ddZddd	ddZddd	ddZddd	ddZ	ddd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.
    zMapping[str, bytes]r    None)metadata
wheel_namereturnc                 C  s   || _ || _d S N)	_metadata_wheel_name)selfr,   r-   r(   r(   r)   __init__3   s    zInMemoryMetadata.__init__boolr!   r.   c                 C  s
   || j v S r/   )r0   r2   r!   r(   r(   r)   has_metadata7   s    zInMemoryMetadata.has_metadatac                 C  sX   z| j |  W S  tyR } z*td| j d| d| dW Y d }~n
d }~0 0 d S )NzError decoding metadata for z: z in z file)r0   decodeUnicodeDecodeErrorr   r1   )r2   r!   er(   r(   r)   get_metadata:   s    zInMemoryMetadata.get_metadatazIterable[str]c                 C  s   t | |S r/   )r   yield_linesr;   r6   r(   r(   r)   get_metadata_linesC   s    z#InMemoryMetadata.get_metadata_linesc                 C  s   dS NFr(   r6   r(   r(   r)   metadata_isdirF   s    zInMemoryMetadata.metadata_isdirz	list[str]c                 C  s   g S r/   r(   r6   r(   r(   r)   metadata_listdirI   s    z!InMemoryMetadata.metadata_listdir)script_name	namespacer.   c                 C  s   d S r/   r(   )r2   rA   rB   r(   r(   r)   
run_scriptL   s    zInMemoryMetadata.run_scriptN)r$   r%   r&   __doc__r3   r7   r;   r=   r?   r@   rC   r(   r(   r(   r)   r*   -   s   	r*   c                   @  sX  e Zd ZdddddZedddd	Zed
ddddZedd
d
ddddZedd
ddddZ	eddddZ
eddddZeddddZedddd Zed!dd"d#Zed$dd%d&Zed
dd'd(Zd)dd*d+d,Zd-dd.d/Zd)d
d*d0d1Zd2dd3d4Zd5dd6d7ZdBd9d:d;d<d=Zd>dd?d@ZdAS )Cr   zpkg_resources.Distributionr+   )distr.   c                 C  s   || _ d | _d S r/   )_dist_Distribution__extra_mappingr2   rE   r(   r(   r)   r3   Q   s    zDistribution.__init__zMapping[NormalizedName, str]r.   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>)rG   rF   extrasr2   r(   r(   r)   _extra_mappingW   s
    
zDistribution._extra_mappingr    r   )	directoryr.   c           	      C  s   | tj}tj|\}}t||}|drJtj}tj	|d }n.|dsXJ 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)	clsrQ   dist_dirbase_dirdist_dir_namer,   dist_cls	dist_namerE   r(   r(   r)   from_directory`   s    
zDistribution.from_directorybytes)metadata_contentsfilenamerS   r.   c                 C  s&   d|i}t j|t|||d}| |S )NMETADATAlocationr,   rS   )r   r\   r*   )r]   re   rf   rS   metadata_dictrE   r(   r(   r)   from_metadata_file_contentst   s    z(Distribution.from_metadata_file_contentsr   )wheelr!   r.   c              
     s   zR|  6t|\ } fdd D }W d    n1 sF0    Y  W nh tjy } zt|j||W Y d }~n>d }~0  ty } zt| d| W Y d }~n
d }~0 0 tj	|jt
||j|d}| |S )Nc                   s4   i | ],}|   d r|d dd t|qS )/r   )
startswithrX   r   )rK   rW   info_dirzfr(   r)   rM      s   z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, rh   )Z
as_zipfiler   namelistzipfile
BadZipFiler   ri   r   r   r\   r*   )r]   rl   r!   _rj   r:   rE   r(   rp   r)   
from_wheel   s     
("(
zDistribution.from_wheelz
str | Nonec                 C  s   | j jS r/   )rF   ri   rO   r(   r(   r)   ri      s    zDistribution.locationc                 C  s.   t | j}|r|}n| jr"| j}nd S t|S r/   )r   Zraw_nameri   r   )r2   egg_linkri   r(   r(   r)   installed_location   s    
zDistribution.installed_locationc                 C  s   | j jS r/   )rF   egg_inforO   r(   r(   r)   info_location   s    zDistribution.info_locationr4   c                 C  s*   zt | jjjW S  ty$   Y dS 0 d S r>   )r4   rF   	_providerrW   AttributeErrorrO   r(   r(   r)   installed_by_distutils   s    z#Distribution.installed_by_distutilsr
   c                 C  s   t | jjS r/   )r   rF   rS   rO   r(   r(   r)   canonical_name   s    zDistribution.canonical_namer   c                 C  s   t | jjS r/   )parse_versionrF   versionrO   r(   r(   r)   r      s    zDistribution.versionc                 C  s   | j jS r/   )rF   r   rO   r(   r(   r)   raw_version   s    zDistribution.raw_versionr   )rW   r.   c                 C  s   | j t|S r/   )rF   r7   r    )r2   rW   r(   r(   r)   is_file   s    zDistribution.is_filezIterator[str]c                 c  s   | j dE d H  d S )Nscripts)rF   r@   rO   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 r/   )r    rF   r7   FileNotFoundErrorr;   r   )r2   rW   r!   contentr(   r(   r)   	read_text   s    
zDistribution.read_textzIterable[BaseEntryPoint]c                 c  sZ   | j   D ]F\}}| D ]4\}}t|d\}}}t| | |dV  qqd S )N=)r!   r"   r#   )rF   get_entry_mapitemsr    	partitionr   strip)r2   r#   entriesr!   entry_pointrv   r"   r(   r(   r)   iter_entry_points   s    zDistribution.iter_entry_pointszemail.message.Messagec                 C  s   t | jtjrd}nd}z| |}W n> tyd   | jrFt| j}n
t| j}t	
d| d}Y n0 tj }|| | S )z
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        rg   zPKG-INFOzNo metadata found in %s )
isinstancerF   r   r\   r   r   ri   r   reprloggerwarningemailparser
FeedParserfeedclose)r2   metadata_namer,   Zdisplaying_pathfeed_parserr(   r(   r)   _metadata_impl   s    



zDistribution._metadata_implr(   zCollection[str]zIterable[Requirement])rN   r.   c                   s:   |r.t  jt tt|@ } fdd|D } j|S )Nc                   s   g | ]} j | qS r(   )rP   rJ   rO   r(   r)   
<listcomp>       z2Distribution.iter_dependencies.<locals>.<listcomp>)setrP   mapr   rF   requires)r2   rN   Zrelevant_extrasr(   rO   r)   iter_dependencies   s    
zDistribution.iter_dependencieszIterable[NormalizedName]c                 C  s
   | j  S r/   )rP   keysrO   r(   r(   r)   iter_provided_extras   s    z!Distribution.iter_provided_extrasN)r(   )r$   r%   r&   r3   propertyrP   classmethodrc   rk   rw   ri   ry   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ddZedddd	Zed
ddddZddddZdddddZdddddZ	dS )r   zpkg_resources.WorkingSetr+   )wsr.   c                 C  s
   || _ d S r/   )_ws)r2   r   r(   r(   r)   r3      s    zEnvironment.__init__r   rI   c                 C  s
   | t jS r/   )r   working_set)r]   r(   r(   r)   default   s    zEnvironment.defaultzlist[str] | None)pathsr.   c                 C  s   | t |S r/   )r   
WorkingSet)r]   r   r(   r(   r)   
from_paths  s    zEnvironment.from_pathszIterator[BaseDistribution]c                 c  s   | j D ]}t|V  qd S r/   )r   r   rH   r(   r(   r)   _iter_distributions  s    
zEnvironment._iter_distributionsr    zBaseDistribution | Noner5   c                 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   Ziter_all_distributionsr   )r2   r!   r   rE   r(   r(   r)   _search_distribution
  s
    

z Environment._search_distributionc                 C  sD   |  |}|r|S z| j| W n tjy8   Y d S 0 |  |S r/   )r   r   requirer   DistributionNotFound)r2   r!   rE   r(   r(   r)   get_distribution  s    

zEnvironment.get_distributionN)
r$   r%   r&   r3   r   r   r   r   r   r   r(   r(   r(   r)   r      s   r   )5
__future__r   email.messager   email.parserloggingrU   rt   collections.abcr   r   r   r   typingr   pip._vendorr   "pip._vendor.packaging.requirementsr	   pip._vendor.packaging.utilsr
   r   Zpip._vendor.packaging.versionr   r   r   pip._internal.exceptionsr   r   r   Z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>   s2   
# +