a
    ǏPf3'                     @   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)   e/var/www/html/python-backend/venv/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	   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@   rA   r)   r)   r*   
run_scriptG   s    zInMemoryMetadata.run_script)r$   r%   r&   __doc__r   r'   bytesr3   boolr6   r:   r   r<   r>   r   r?   rB   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   rF   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	   PathMetadataendswithr   splitextDistInfoDistribution)	clsrI   dist_dirbase_dirdist_dir_namer,   dist_cls	dist_namerF   r)   r)   r*   from_directoryO   s    
zDistribution.from_directory)metadata_contentsfilenamerK   r.   c                 C   s&   d|i}t j|t|||d}| |S )NMETADATAlocationr,   rK   )r	   rT   r+   )rU   r\   r]   rK   metadata_dictrF   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   )
startswithrP   r   ).0rO   info_dirzfr)   r*   
<dictcomp>y   s   z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, r_   )
as_zipfiler   namelistzipfile
BadZipFiler   r`   r   r	   rT   r+   )rU   rc   r!   _ra   r9   rF   r)   rh   r*   
from_wheelt   s     
("(
zDistribution.from_wheelr.   c                 C   s   | j jS r/   )rG   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/   )rG   egg_infors   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=   )rE   rG   	_providerrO   AttributeErrorrs   r)   r)   r*   installed_by_distutils   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjS r/   )r   rG   rK   rs   r)   r)   r*   canonical_name   s    zDistribution.canonical_namec                 C   s   t | jjS r/   )parse_versionrG   versionrs   r)   r)   r*   r~      s    zDistribution.version)rO   r.   c                 C   s   | j t|S r/   )rG   r6   r'   )r2   rO   r)   r)   r*   is_file   s    zDistribution.is_filec                 c   s   | j dE d H  d S )Nscripts)rG   r?   rs   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'   rG   r6   FileNotFoundErrorr:   r   )r2   rO   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#   )rG   get_entry_mapitemsr'   	partitionr    strip)r2   r#   entriesr!   entry_pointrp   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.
        r^   zPKG-INFOzNo metadata found in %s )
isinstancerG   r	   rT   r   r   r`   r   reprloggerwarningemailparser
FeedParserfeedclose)r2   metadata_namer,   displaying_path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)rg   r9   r)   r)   r*   	<genexpr>       z1Distribution.iter_dependencies.<locals>.<genexpr>)	frozensetintersectionrG   r   requires)r2   r   r)   r)   r*   iter_dependencies   s    zDistribution.iter_dependenciesc                 C   s   | j jS r/   )rG   r   rs   r)   r)   r*   iter_provided_extras   s    z!Distribution.iter_provided_extras)extrar.   c                 C   s   t || jjv S r/   )r	   r   rG   r   )r2   r   r)   r)   r*   is_extra_provided   s    zDistribution.is_extra_provided)r)   )*r$   r%   r&   r	   r   r3   classmethodr'   r   r[   rD   rb   r   rq   propertyr   r`   rv   rx   rE   r{   r   r|   r   r~   r   r   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__rr   c                 C   s
   | t jS r/   )r	   working_set)rU   r)   r)   r*   default   s    zEnvironment.default)pathsr.   c                 C   s   | t |S r/   )r	   
WorkingSet)rU   r   r)   r)   r*   
from_paths   s    zEnvironment.from_pathsc                 c   s   | j D ]}t|V  qd S r/   )r   r   rH   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_distributionsr|   )r2   r!   r|   rF   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!   rF   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loggingrM   rn   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   Zpip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   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   r   __all__	getLoggerr$   r   r   r    r+   r   r   r)   r)   r)   r*   <module>   s,   $ 	
# 