a
    h,Me3'                     @   s8  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
mZ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 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)m*Z* g dZ+e,e-Z.dZ/G dd deZ0G dd dZ1G dd de%Z2G dd de'Z3dS )    N)
CollectionIterableIteratorListMapping
NamedTupleOptional)pkg_resources)Requirement)NormalizedNamecanonicalize_name)parse)InvalidWheelNoneMetadataErrorUnsupportedWheel)egg_link_path_from_location)display_pathnormalize_path)parse_wheelread_wheel_metadata_file   )BaseDistributionBaseEntryPointBaseEnvironmentDistributionVersionInfoPathWheel)NAMEDistributionEnvironmentr	   c                   @   s&   e Zd ZU eed< eed< eed< dS )
EntryPointnamevaluegroupN)__name__
__module____qualname__str__annotations__ r)   r)   S/var/www/webapp/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.pyr    "   s   
r    c                   @   s   e Zd ZdZeeef eddddZeedddZ	eedd	d
Z
eee dddZeedddZeee dddZee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.
    N)metadata
wheel_namereturnc                 C   s   || _ || _d S N)	_metadata_wheel_name)selfr,   r-   r)   r)   r*   __init__.   s    zInMemoryMetadata.__init__r!   r.   c                 C   s
   || j v S r/   )r0   r2   r!   r)   r)   r*   has_metadata2   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_metadata5   s    zInMemoryMetadata.get_metadatac                 C   s   t | |S r/   )r	   Zyield_linesr:   r5   r)   r)   r*   get_metadata_lines>   s    z#InMemoryMetadata.get_metadata_linesc                 C   s   dS NFr)   r5   r)   r)   r*   metadata_isdirA   s    zInMemoryMetadata.metadata_isdirc                 C   s   g S r/   r)   r5   r)   r)   r*   metadata_listdirD   s    z!InMemoryMetadata.metadata_listdir)script_name	namespacer.   c                 C   s   d S r/   r)   )r2   r?   r@   r)   r)   r*   
run_scriptG   s    zInMemoryMetadata.run_script)r$   r%   r&   __doc__r   r'   bytesr3   boolr6   r:   r   r;   r=   r   r>   rA   r)   r)   r)   r*   r+   (   s   	r+   c                   @   sj  e Zd ZejddddZeeedddZ	ee
eeedd	d
ZeeeedddZeee dddZeee dddZeee dddZeedddZeedddZeedddZeedddZee dddZeedd d!Zee dd"d#Z e!j"j#dd$d%Z$d/e%e ee& d'd(d)Z'ee dd*d+Z(eed,d-d.Z)dS )0r   N)distr.   c                 C   s
   || _ d S r/   )_distr2   rE   r)   r)   r*   r3   L   s    zDistribution.__init__)	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	   ZPathMetadataendswithr   splitextDistInfoDistribution)	clsrH   Zdist_dirbase_dirZdist_dir_namer,   Zdist_cls	dist_namerE   r)   r)   r*   from_directoryO   s    
zDistribution.from_directory)metadata_contentsfilenamerJ   r.   c                 C   s&   d|i}t j|t|||d}| |S )NMETADATAlocationr,   rJ   )r	   rR   r+   )rS   rW   rX   rJ   metadata_dictrE   r)   r)   r*   from_metadata_file_contentsc   s    z(Distribution.from_metadata_file_contents)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   )
startswithrO   r   ).0rN   info_dirzfr)   r*   
<dictcomp>y   s   z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, rZ   )
as_zipfiler   namelistzipfile
BadZipFiler   r[   r   r	   rR   r+   )rS   r^   r!   _r\   r9   rE   r)   rc   r*   
from_wheelt   s     
("(
zDistribution.from_wheelr.   c                 C   s   | j jS r/   )rF   r[   r2   r)   r)   r*   r[      s    zDistribution.locationc                 C   s.   t | j}|r|}n| jr"| j}nd S t|S r/   )r   raw_namer[   r   )r2   egg_linkr[   r)   r)   r*   installed_location   s    
zDistribution.installed_locationc                 C   s   | j jS r/   )rF   egg_inforn   r)   r)   r*   info_location   s    zDistribution.info_locationc                 C   s*   zt | jjjW S  ty$   Y dS 0 d S r<   )rD   rF   Z	_providerrN   AttributeErrorrn   r)   r)   r*   installed_by_distutils   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjS r/   )r   rF   rJ   rn   r)   r)   r*   canonical_name   s    zDistribution.canonical_namec                 C   s   t | jjS r/   )parse_versionrF   versionrn   r)   r)   r*   rx      s    zDistribution.version)rN   r.   c                 C   s   | j t|S r/   )rF   r6   r'   )r2   rN   r)   r)   r*   is_file   s    zDistribution.is_filec                 c   s   | j dE d H  d S )Nscripts)rF   r>   rn   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   r6   FileNotFoundErrorr:   r   )r2   rN   r!   contentr)   r)   r*   	read_text   s    
zDistribution.read_textc                 c   sZ   | j   D ]F\}}| D ]4\}}t|d\}}}t| | |dV  qqd S )N=)r!   r"   r#   )rF   Zget_entry_mapitemsr'   	partitionr    strip)r2   r#   entriesr!   entry_pointrk   r"   r)   r)   r*   iter_entry_points   s    zDistribution.iter_entry_pointsc                 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.
        rY   zPKG-INFOzNo metadata found in %s )
isinstancerF   r	   rR   r~   r|   r[   r   reprloggerwarningemailparser
FeedParserfeedclose)r2   metadata_namer,   Zdisplaying_pathZfeed_parserr)   r)   r*   _metadata_impl   s    



zDistribution._metadata_implr)   )extrasr.   c                 C   s0   |r$t dd |D }|| jj}| j|S )Nc                 s   s   | ]}t |V  qd S r/   )r	   
safe_extra)rb   r9   r)   r)   r*   	<genexpr>       z1Distribution.iter_dependencies.<locals>.<genexpr>)	frozensetintersectionrF   r   requires)r2   r   r)   r)   r*   iter_dependencies   s    zDistribution.iter_dependenciesc                 C   s   | j jS r/   )rF   r   rn   r)   r)   r*   iter_provided_extras   s    z!Distribution.iter_provided_extras)extrar.   c                 C   s   t || jjv S r/   )r	   r   rF   r   )r2   r   r)   r)   r*   is_extra_provided   s    zDistribution.is_extra_provided)r)   )*r$   r%   r&   r	   r   r3   classmethodr'   r   rV   rC   r]   r   rl   propertyr   r[   rq   rs   rD   ru   r   rv   r   rx   r   ry   r   r{   r~   r   r   r   r   messageMessager   r   r
   r   r   r   r)   r)   r)   r*   r   K   s>   
		r   c                   @   s   e Zd ZejddddZeedddZee	e
e  edd	d
Zee dddZee	e dddZee	e dddZdS )r   N)wsr.   c                 C   s
   || _ d S r/   )_ws)r2   r   r)   r)   r*   r3      s    zEnvironment.__init__rm   c                 C   s
   | t jS r/   )r	   Zworking_set)rS   r)   r)   r*   default   s    zEnvironment.default)pathsr.   c                 C   s   | t |S r/   )r	   
WorkingSet)rS   r   r)   r)   r*   
from_paths   s    zEnvironment.from_pathsc                 c   s   | j D ]}t|V  qd S r/   )r   r   rG   r)   r)   r*   _iter_distributions   s    
zEnvironment._iter_distributionsr4   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   iter_all_distributionsrv   )r2   r!   rv   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   Zrequirer	   DistributionNotFound)r2   r!   rE   r)   r)   r*   get_distribution  s    

zEnvironment.get_distribution)r$   r%   r&   r	   r   r3   r   r   r   r   r   r'   r   r   r   r   r   r   r)   r)   r)   r*   r      s   r   )4email.messager   email.parserloggingrL   ri   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   Zpip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   rw   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   r   __all__	getLoggerr$   r   r   r    r+   r   r   r)   r)   r)   r*   <module>   s,   $ 	
# 