o
    =g.)                     @   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)   W/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.pyr    *   s   
 r    c                   @   s   e Zd ZdZdeeef deddfddZdedefd	d
Z	dedefddZ
dedee fddZdedefddZdedee fddZdededdf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
wheel_namereturnNc                 C   s   || _ || _d S N)	_metadata_wheel_name)selfr,   r-   r)   r)   r*   __init__6   s   
zInMemoryMetadata.__init__r!   c                 C   s
   || j v S r/   )r0   r2   r!   r)   r)   r*   has_metadata:      
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)r0   decodeUnicodeDecodeErrorr   r1   )r2   r!   er)   r)   r*   get_metadata=   s   zInMemoryMetadata.get_metadatac                 C   s   t | |S r/   )r	   yield_linesr:   r4   r)   r)   r*   get_metadata_linesF      z#InMemoryMetadata.get_metadata_linesc                 C   s   dS NFr)   r4   r)   r)   r*   metadata_isdirI      zInMemoryMetadata.metadata_isdirc                 C   s   g S r/   r)   r4   r)   r)   r*   metadata_listdirL   r@   z!InMemoryMetadata.metadata_listdirscript_name	namespacec                 C   s   d S r/   r)   )r2   rB   rC   r)   r)   r*   
run_scriptO   r@   zInMemoryMetadata.run_script)r$   r%   r&   __doc__r   r'   bytesr3   boolr5   r:   r   r<   r?   r   rA   rD   r)   r)   r)   r*   r+   0   s    	r+   c                	   @   s  e Zd ZdejddfddZedeee	f fddZ
ede	defd	d
Zedede	de	defddZedede	defddZedee	 fddZedee	 fddZedee	 fddZedefddZedefddZedefddZede	fd d!Zd"edefd#d$Zdee	 fd%d&Zd"ede	fd'd(Z de!e" fd)d*Z#de$j%j&fd+d,Z'd3d.e(e	 de!e) fd/d0Z*de!e fd1d2Z+dS )4r   distr.   Nc                 C   s   || _ d | _d S r/   )_dist_Distribution__extra_mappingr2   rH   r)   r)   r*   r3   T   s   
zDistribution.__init__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>)rJ   rI   extrasr2   r)   r)   r*   _extra_mappingZ   s
   
zDistribution._extra_mapping	directoryc           	      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)	clsrS   dist_dirbase_dirdist_dir_namer,   dist_cls	dist_namerH   r)   r)   r*   from_directoryc   s   
zDistribution.from_directorymetadata_contentsfilenamerU   c                 C   s&   d|i}t j|t|||d}| |S )NMETADATAlocationr,   rU   )r	   r^   r+   )r_   rf   rg   rU   metadata_dictrH   r)   r)   r*   from_metadata_file_contentsw   s   z(Distribution.from_metadata_file_contentswheelr!   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   )
startswithrZ   r   )rM   rY   info_dirzfr)   r*   rO      s    z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, ri   )
as_zipfiler   namelistzipfile
BadZipFiler   rj   r   r	   r^   r+   )r_   rm   r!   _rk   r9   rH   r)   rq   r*   
from_wheel   s*   

zDistribution.from_wheelc                 C      | j jS r/   )rI   rj   rQ   r)   r)   r*   rj         zDistribution.locationc                 C   s2   t | j}|r|}t|S | jr| j}t|S d S r/   )r   raw_namerj   r   )r2   egg_linkrj   r)   r)   r*   installed_location   s   
zDistribution.installed_locationc                 C   rz   r/   )rI   egg_inforQ   r)   r)   r*   info_location   r{   zDistribution.info_locationc                 C   s&   zt | jjjW S  ty   Y dS w r>   )rG   rI   	_providerrY   AttributeErrorrQ   r)   r)   r*   installed_by_distutils   s
   z#Distribution.installed_by_distutilsc                 C      t | jjS r/   )r   rI   rU   rQ   r)   r)   r*   canonical_name      zDistribution.canonical_namec                 C   r   r/   )parse_versionrI   versionrQ   r)   r)   r*   r      r   zDistribution.versionc                 C   rz   r/   )rI   r   rQ   r)   r)   r*   raw_version   r{   zDistribution.raw_versionrY   c                 C   s   | j t|S r/   )rI   r5   r'   )r2   rY   r)   r)   r*   is_file   r=   zDistribution.is_filec                 c   s    | j dE d H  d S )Nscripts)rI   rA   rQ   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'   rI   r5   FileNotFoundErrorr:   r   )r2   rY   r!   contentr)   r)   r*   	read_text   s   
zDistribution.read_textc                 c   s\    | j   D ]#\}}| D ]\}}t|d\}}}t| | |dV  qqd S )N=)r!   r"   r#   )rI   get_entry_mapitemsr'   	partitionr    strip)r2   r#   entriesr!   entry_pointrx   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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.
        rh   zPKG-INFOzNo metadata found in %s )
isinstancerI   r	   r^   r   r   rj   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)   rP   c                    s:   |rt  jt tt|@ } fdd|D } j|S )Nc                    s   g | ]} j | qS r)   )rR   rL   rQ   r)   r*   
<listcomp>   s    z2Distribution.iter_dependencies.<locals>.<listcomp>)setrR   mapr   rI   requires)r2   rP   relevant_extrasr)   rQ   r*   iter_dependencies   s   
zDistribution.iter_dependenciesc                 C   s
   | j  S r/   )rR   keysrQ   r)   r)   r*   iter_provided_extras   r6   z!Distribution.iter_provided_extras)r)   ),r$   r%   r&   r	   r   r3   propertyr   r   r'   rR   classmethodr   re   rF   rl   r   ry   r   rj   r~   r   rG   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   sN    
		r   c                   @   s   e Zd ZdejddfddZedefddZede	e
e  defd	d
Zdee fddZdede	e fddZdede	e fddZdS )r   wsr.   Nc                 C   s
   || _ d S r/   )_ws)r2   r   r)   r)   r*   r3      r6   zEnvironment.__init__c                 C   s
   | t jS r/   )r	   working_set)r_   r)   r)   r*   default  s   
zEnvironment.defaultpathsc                 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   rK   r)   r)   r*   _iter_distributions	  s   
zEnvironment._iter_distributionsr!   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   rH   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 r/   )r   r   requirer	   DistributionNotFound)r2   r!   rH   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loggingrW   rv   typingr   r   r   r   r   r   r   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>   s0    $

# +