o
    1c$                     @   s$  d dl Z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$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#Z.G dd de%Z/dS )    N)
CollectionIterableIteratorListMapping
NamedTupleOptional)pkg_resources)Requirement)NormalizedNamecanonicalize_name)parse)InvalidWheelNoneMetadataErrorUnsupportedWheel)display_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$   ]/var/www/html/django/env/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 )WheelMetadatazIMetadataProvider 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WheelMetadata.__init__r   c                 C   s
   || j v S r*   )r+   r-   r   r$   r$   r%   has_metadata.      
zWheelMetadata.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WheelMetadata.get_metadatac                 C   s   t | |S r*   )r	   Zyield_linesr5   r/   r$   r$   r%   get_metadata_lines:      z WheelMetadata.get_metadata_linesc                 C   s   dS NFr$   r/   r$   r$   r%   metadata_isdir=      zWheelMetadata.metadata_isdirc                 C   s   g S r*   r$   r/   r$   r$   r%   metadata_listdir@   r:   zWheelMetadata.metadata_listdirscript_name	namespacec                 C   s   d S r*   r$   )r-   r<   r=   r$   r$   r%   
run_scriptC   r:   zWheelMetadata.run_script)r   r    r!   __doc__r   r"   bytesr.   boolr0   r5   r   r6   r9   r   r;   r>   r$   r$   r$   r%   r&   $   s    	r&   c                   @   sD  e Zd ZdejddfddZededd fddZed	e	d
edd 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deej fddZdedefddZdee fddZe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 ))Distributiondistr)   Nc                 C   
   || _ d S r*   )_distr-   rC   r$   r$   r%   r.   H   r1   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endswithrB   splitextDistInfoDistribution)	clsrG   Zdist_dirbase_dirZdist_dir_namer'   Zdist_cls	dist_namerC   r$   r$   r%   from_directoryK   s   
zDistribution.from_directory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 )a  Load the distribution from a given wheel.

        :raises InvalidWheel: Whenever loading of the wheel causes a
            :py:exc:`zipfile.BadZipFile` exception to be thrown.
        :raises UnsupportedWheel: If the wheel is a valid zip, but malformed
            internally.
        c                    s4   i | ]}|   d r|d dd t|qS )/r   )
startswithrN   r   ).0rM   info_dirzfr$   r%   
<dictcomp>k   s    z+Distribution.from_wheel.<locals>.<dictcomp>Nz has an invalid wheel, )locationr'   rI   )
as_zipfiler   namelistzipfile
BadZipFiler   r_   r   r	   rQ   r&   )rR   rV   r   _Zmetadata_textr4   rC   r$   r[   r%   
from_wheel_   s*   	

zDistribution.from_wheelc                 C      | j jS r*   )rE   r_   r-   r$   r$   r%   r_   {      zDistribution.locationc                 C   rf   r*   )rE   egg_inforg   r$   r$   r%   info_location   rh   zDistribution.info_locationc                 C   s&   zt | jjjW S  ty   Y dS w r8   )rA   rE   Z	_providerrM   AttributeErrorrg   r$   r$   r%   installed_by_distutils   s
   z#Distribution.installed_by_distutilsc                 C      t | jjS r*   )r   rE   rI   rg   r$   r$   r%   canonical_name      zDistribution.canonical_namec                 C   rm   r*   )parse_versionrE   versionrg   r$   r$   r%   rq      ro   zDistribution.versionrM   c                 C   s   | j t|S r*   )rE   r0   r"   )r-   rM   r$   r$   r%   is_file   r7   zDistribution.is_filec                 c   sV    t |}| j|st|| j|st|| j|D ]	}t||V  qd S r*   )	r"   rE   r0   FileNotFoundErrorisdirNotADirectoryErrorr;   pathlibPurePosixPath)r-   rM   r   childr$   r$   r%   iterdir   s   zDistribution.iterdirc                 C   s>   t |}| j|st|| j|}|d u rt| ||S r*   )r"   rE   r0   rs   r5   r   )r-   rM   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   )rE   Zget_entry_mapitemsr"   	partitionr   strip)r-   r   entriesr   entry_pointrd   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.
        ZMETADATAzPKG-INFOzNo metadata found in %s )
isinstancerE   r	   rQ   r{   rs   r_   r   reprloggerwarningemailparser
FeedParserfeedclose)r-   metadata_namer'   Zdisplaying_pathZfeed_parserr$   r$   r%   r'      s   


zDistribution.metadatar$   extrasc                 C   s"   |rt || jj}| j|S r*   )	frozensetintersectionrE   r   requires)r-   r   r$   r$   r%   iter_dependencies   s   zDistribution.iter_dependenciesc                 C   rf   r*   )rE   r   rg   r$   r$   r%   iter_provided_extras   s   z!Distribution.iter_provided_extras)r$   )'r   r    r!   r	   rB   r.   classmethodr"   rU   r   re   propertyr   r_   rj   rA   rl   r   rn   r   rq   r   rr   r   rv   rw   ry   r{   r   r   r   r   messageMessager'   r   r
   r   r   r$   r$   r$   r%   rB   G   s0    			rB   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de	e fddZdede	e fddZdee fddZdS )Environmentwsr)   Nc                 C   rD   r*   )_ws)r-   r   r$   r$   r%   r.      r1   zEnvironment.__init__c                 C   s
   | t jS r*   )r	   Zworking_set)rR   r$   r$   r%   default   s   
zEnvironment.defaultpathsc                 C   s   | t |S r*   )r	   
WorkingSet)rR   r   r$   r$   r%   
from_paths   s   zEnvironment.from_pathsr   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_distributionsrn   )r-   r   rn   rC   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   rC   r$   r$   r%   get_distribution   s   


zEnvironment.get_distributionc                 c   s    | j D ]}t|V  qd S r*   )r   rB   rF   r$   r$   r%   _iter_distributions   s   
zEnvironment._iter_distributions)r   r    r!   r	   r   r.   r   r   r   r   r   r"   r   r   r   r   r   r   r$   r$   r$   r%   r      s    r   )0email.messager   email.parserloggingrK   rv   rb   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   pip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   rp   pip._internal.exceptionsr   r   r   pip._internal.utils.miscr   pip._internal.utils.wheelr   r   baser   r   r   r   r   r   	getLoggerr   r   r   r&   rB   r   r$   r$   r$   r%   <module>   s*    $ 
	# 
