a
    0f.)                     @   s@  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 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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)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 eed< eed< eed< dS )
EntryPointnamevaluegroupN)__name__
__module____qualname__str__annotations__ r)   r)   ]/var/www/ai-form-bot/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__6   s    zInMemoryMetadata.__init__r!   r.   c                 C   s
   || j v S r/   )r0   r2   r!   r)   r)   r*   has_metadata:   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_metadatac                 C   s   t | |S r/   )r	   yield_linesr:   r5   r)   r)   r*   get_metadata_linesF   s    z#InMemoryMetadata.get_metadata_linesc                 C   s   dS NFr)   r5   r)   r)   r*   metadata_isdirI   s    zInMemoryMetadata.metadata_isdirc                 C   s   g S r/   r)   r5   r)   r)   r*   metadata_listdirL   s    z!InMemoryMetadata.metadata_listdir)script_name	namespacer.   c                 C   s   d S r/   r)   )r2   r@   rA   r)   r)   r*   
run_scriptO   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+   0   s   	r+   c                   @   s  e Zd ZejddddZeeee	f 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!e" dd&d'Z#e$j%j&dd(d)Z'd0e(e	 e!e) d+d,d-Z*e!e dd.d/Z+dS )1r   N)distr.   c                 C   s   || _ d | _d S r/   )_dist_Distribution__extra_mappingr2   rF   r)   r)   r*   r3   T   s    zDistribution.__init__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>]   s   z/Distribution._extra_mapping.<locals>.<dictcomp>)rH   rG   extrasr2   r)   r)   r*   _extra_mappingZ   s
    
zDistribution._extra_mapping)	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)	clsrR   dist_dirbase_dirdist_dir_namer,   dist_cls	dist_namerF   r)   r)   r*   from_directoryc   s    
zDistribution.from_directory)metadata_contentsfilenamerT   r.   c                 C   s&   d|i}t j|t|||d}| |S )NMETADATAlocationr,   rT   )r	   r]   r+   )r^   re   rf   rT   metadata_dictrF   r)   r)   r*   from_metadata_file_contentsw   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   )
startswithrY   r   )rL   rX   info_dirzfr)   r*   rN      s   z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, rh   )
as_zipfiler   namelistzipfile
BadZipFiler   ri   r   r	   r]   r+   )r^   rl   r!   _rj   r9   rF   r)   rp   r*   
from_wheel   s     
("(
zDistribution.from_wheelc                 C   s   | j jS r/   )rG   ri   rP   r)   r)   r*   ri      s    zDistribution.locationc                 C   s.   t | j}|r|}n| jr"| j}nd S t|S r/   )r   raw_nameri   r   )r2   egg_linkri   r)   r)   r*   installed_location   s    
zDistribution.installed_locationc                 C   s   | j jS r/   )rG   egg_inforP   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   	_providerrX   AttributeErrorrP   r)   r)   r*   installed_by_distutils   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjS r/   )r   rG   rT   rP   r)   r)   r*   canonical_name   s    zDistribution.canonical_namec                 C   s   t | jjS r/   )parse_versionrG   versionrP   r)   r)   r*   r      s    zDistribution.versionc                 C   s   | j jS r/   )rG   r   rP   r)   r)   r*   raw_version   s    zDistribution.raw_version)rX   r.   c                 C   s   | j t|S r/   )rG   r6   r'   )r2   rX   r)   r)   r*   is_file   s    zDistribution.is_filec                 c   s   | j dE d H  d S )Nscripts)rG   r?   rP   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   rX   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_pointrw   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.
        rg   zPKG-INFOzNo metadata found in %s )
isinstancerG   r	   r]   r   r   ri   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)   )rO   r.   c                    s:   |r.t  jt tt|@ } fdd|D } j|S )Nc                    s   g | ]} j | qS r)   )rQ   rK   rP   r)   r*   
<listcomp>       z2Distribution.iter_dependencies.<locals>.<listcomp>)setrQ   mapr   rG   requires)r2   rO   Zrelevant_extrasr)   rP   r*   iter_dependencies   s    
zDistribution.iter_dependenciesc                 C   s
   | j  S r/   )rQ   keysrP   r)   r)   r*   iter_provided_extras   s    z!Distribution.iter_provided_extras)r)   ),r$   r%   r&   r	   r   r3   propertyr   r   r'   rQ   classmethodr   rd   rD   rk   r   rx   r   ri   r{   r}   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   S   sD   
		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__rJ   c                 C   s
   | t jS r/   )r	   working_set)r^   r)   r)   r*   default  s    zEnvironment.default)pathsr.   c                 C   s   | t |S r/   )r	   
WorkingSet)r^   r   r)   r)   r*   
from_paths  s    zEnvironment.from_pathsc                 c   s   | j D ]}t|V  qd S r/   )r   r   rI   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loggingrV   ru   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   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>   s.   $

# +