o
    5e3'                     @   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)   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__.   s   
zInMemoryMetadata.__init__r!   c                 C   s
   || j v S r/   )r0   r2   r!   r)   r)   r*   has_metadata2      
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_metadata5   s   zInMemoryMetadata.get_metadatac                 C   s   t | |S r/   )r	   yield_linesr:   r4   r)   r)   r*   get_metadata_lines>      z#InMemoryMetadata.get_metadata_linesc                 C   s   dS NFr)   r4   r)   r)   r*   metadata_isdirA      zInMemoryMetadata.metadata_isdirc                 C   s   g S r/   r)   r4   r)   r)   r*   metadata_listdirD   r@   z!InMemoryMetadata.metadata_listdirscript_name	namespacec                 C   s   d S r/   r)   )r2   rB   rC   r)   r)   r*   
run_scriptG   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+   (   s    	r+   c                	   @   s  e Zd Zdejdd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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$d2d*e%e dee& fd+d,Z'dee fd-d.Z(d/edefd0d1Z)dS )3r   distr.   Nc                 C   
   || _ d S r/   )_distr2   rH   r)   r)   r*   r3   L   r6   zDistribution.__init__	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)	clsrL   dist_dirbase_dirdist_dir_namer,   dist_cls	dist_namerH   r)   r)   r*   from_directoryO   s   
zDistribution.from_directorymetadata_contentsfilenamerN   c                 C   s&   d|i}t j|t|||d}| |S )NMETADATAlocationr,   rN   )r	   rW   r+   )rX   r_   r`   rN   metadata_dictrH   r)   r)   r*   from_metadata_file_contentsc   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   )
startswithrS   r   ).0rR   info_dirzfr)   r*   
<dictcomp>y   s    z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, rb   )
as_zipfiler   namelistzipfile
BadZipFiler   rc   r   r	   rW   r+   )rX   rf   r!   _rd   r9   rH   r)   rk   r*   
from_wheelt   s*   

zDistribution.from_wheelc                 C      | j jS r/   )rJ   rc   r2   r)   r)   r*   rc         zDistribution.locationc                 C   s2   t | j}|r|}t|S | jr| j}t|S d S r/   )r   raw_namerc   r   )r2   egg_linkrc   r)   r)   r*   installed_location   s   
zDistribution.installed_locationc                 C   ru   r/   )rJ   egg_inforv   r)   r)   r*   info_location   rw   zDistribution.info_locationc                 C   s&   zt | jjjW S  ty   Y dS w r>   )rG   rJ   	_providerrR   AttributeErrorrv   r)   r)   r*   installed_by_distutils   s
   z#Distribution.installed_by_distutilsc                 C      t | jjS r/   )r   rJ   rN   rv   r)   r)   r*   canonical_name      zDistribution.canonical_namec                 C   r   r/   )parse_versionrJ   versionrv   r)   r)   r*   r      r   zDistribution.versionrR   c                 C   s   | j t|S r/   )rJ   r5   r'   )r2   rR   r)   r)   r*   is_file   r=   zDistribution.is_filec                 c   s    | j dE d H  d S )Nscripts)rJ   rA   rv   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'   rJ   r5   FileNotFoundErrorr:   r   )r2   rR   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#   )rJ   get_entry_mapitemsr'   	partitionr    strip)r2   r#   entriesr!   entry_pointrs   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.
        ra   zPKG-INFOzNo metadata found in %s )
isinstancerJ   r	   rW   r   r   rc   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)   extrasc                 C   s0   |rt dd |D }|| jj}| j|S )Nc                 s   s    | ]}t |V  qd S r/   )r	   
safe_extra)rj   r9   r)   r)   r*   	<genexpr>   s    z1Distribution.iter_dependencies.<locals>.<genexpr>)	frozensetintersectionrJ   r   requires)r2   r   r)   r)   r*   iter_dependencies   s   zDistribution.iter_dependenciesc                 C   ru   r/   )rJ   r   rv   r)   r)   r*   iter_provided_extras   s   z!Distribution.iter_provided_extrasextrac                 C   s   t || jjv S r/   )r	   r   rJ   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^   rF   re   r   rt   propertyr   rc   rz   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*   r   K   sH    
		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   rI   r/   )_ws)r2   r   r)   r)   r*   r3      r6   zEnvironment.__init__c                 C   s
   | t jS r/   )r	   working_set)rX   r)   r)   r*   default   s   
zEnvironment.defaultpathsc                 C   s   | t |S r/   )r	   
WorkingSet)rX   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loggingrP   rq   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   pip._vendor.packaging.utilsr   r   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.    $ 	
# 