o
    IBe-&                     @   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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* e+e,Z-G dd deZ.G dd dZ/G dd de%Z0G dd de'Z1d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Wheelc                   @   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/home/www/facesmatcher.com/frenv/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,   )r-   r/   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)r-   decodeUnicodeDecodeErrorr   r.   )r/   r   er&   r&   r'   get_metadata1   s   zInMemoryMetadata.get_metadatac                 C   s   t | |S r,   )r	   Zyield_linesr7   r1   r&   r&   r'   get_metadata_lines:      z#InMemoryMetadata.get_metadata_linesc                 C   s   dS NFr&   r1   r&   r&   r'   metadata_isdir=      zInMemoryMetadata.metadata_isdirc                 C   s   g S r,   r&   r1   r&   r&   r'   metadata_listdir@   r<   z!InMemoryMetadata.metadata_listdirscript_name	namespacec                 C   s   d S r,   r&   )r/   r>   r?   r&   r&   r'   
run_scriptC   r<   zInMemoryMetadata.run_script)r!   r"   r#   __doc__r   r$   bytesr0   boolr2   r7   r   r8   r;   r   r=   r@   r&   r&   r&   r'   r(   $   s    	r(   c                	   @   sn  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$d/d*e%e dee& fd+d,Z'dee fd-d.Z(dS )0Distributiondistr+   Nc                 C   
   || _ d S r,   )_distr/   rE   r&   r&   r'   r0   H   r3   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	   ZPathMetadataendswithrD   splitextDistInfoDistribution)	clsrI   Zdist_dirbase_dirZdist_dir_namer)   Zdist_cls	dist_namerE   r&   r&   r'   from_directoryK   s   
zDistribution.from_directorymetadata_contentsfilenamerK   c                 C   s&   d|i}t j|t|||d}| |S )NMETADATAlocationr)   rK   )r	   rS   r(   )rT   rX   rY   rK   metadata_dictrE   r&   r&   r'   from_metadata_file_contents_   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   )
startswithrP   r   ).0rO   info_dirzfr&   r'   
<dictcomp>u   s    z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, r[   )
as_zipfiler   namelistzipfile
BadZipFiler   r\   r   r	   rS   r(   )rT   r_   r   _r]   r6   rE   r&   rd   r'   
from_wheelp   s*   

zDistribution.from_wheelc                 C      | j jS r,   )rG   r\   r/   r&   r&   r'   r\         zDistribution.locationc                 C   s2   t | j}|r|}t|S | jr| j}t|S d S r,   )r   raw_namer\   r   )r/   egg_linkr\   r&   r&   r'   installed_location   s   
zDistribution.installed_locationc                 C   rn   r,   )rG   egg_inforo   r&   r&   r'   info_location   rp   zDistribution.info_locationc                 C   s&   zt | jjjW S  ty   Y dS w r:   )rC   rG   Z	_providerrO   AttributeErrorro   r&   r&   r'   installed_by_distutils   s
   z#Distribution.installed_by_distutilsc                 C      t | jjS r,   )r   rG   rK   ro   r&   r&   r'   canonical_name      zDistribution.canonical_namec                 C   rx   r,   )parse_versionrG   versionro   r&   r&   r'   r|      rz   zDistribution.versionrO   c                 C   s   | j t|S r,   )rG   r2   r$   )r/   rO   r&   r&   r'   is_file   r9   zDistribution.is_filec                 c   s    | j dE d H  d S )Nscripts)rG   r=   ro   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   r2   FileNotFoundErrorr7   r   )r/   rO   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    )rG   Zget_entry_mapitemsr$   	partitionr   strip)r/   r    entriesr   entry_pointrl   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.
        rZ   zPKG-INFOzNo metadata found in %s )
isinstancerG   r	   rS   r   r   r\   r   reprloggerwarningemailparser
FeedParserfeedclose)r/   metadata_namer)   Zdisplaying_pathZfeed_parserr&   r&   r'   _metadata_impl   s   


zDistribution._metadata_implr&   extrasc                 C   s"   |rt || jj}| j|S r,   )	frozensetintersectionrG   r   requires)r/   r   r&   r&   r'   iter_dependencies   s   zDistribution.iter_dependenciesc                 C   rn   r,   )rG   r   ro   r&   r&   r'   iter_provided_extras   s   z!Distribution.iter_provided_extras)r&   ))r!   r"   r#   r	   rD   r0   classmethodr$   r   rW   rB   r^   r   rm   propertyr   r\   rs   ru   rC   rw   r   ry   r   r|   r   r}   r   r   r   r   r   r   r   messageMessager   r   r
   r   r   r&   r&   r&   r'   rD   G   sF    
		rD   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 )Environmentwsr+   Nc                 C   rF   r,   )_ws)r/   r   r&   r&   r'   r0      r3   zEnvironment.__init__c                 C   s
   | t jS r,   )r	   Zworking_set)rT   r&   r&   r'   default   s   
zEnvironment.defaultpathsc                 C   s   | t |S r,   )r	   
WorkingSet)rT   r   r&   r&   r'   
from_paths   s   zEnvironment.from_pathsc                 c   s    | j D ]}t|V  qd S r,   )r   rD   rH   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_distributionsry   )r/   r   ry   rE   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   Zrequirer	   DistributionNotFound)r/   r   rE   r&   r&   r'   get_distribution   s   


zEnvironment.get_distribution)r!   r"   r#   r	   r   r0   r   r   r   r   r   r$   r   r   r   r   r   r   r&   r&   r&   r'   r      s    r   )2email.messager   email.parserloggingrM   rj   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   	getLoggerr!   r   r   r(   rD   r   r&   r&   r&   r'   <module>   s*    $ 
	# 