a
    [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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$   vC:\Users\91910\OneDrive\Desktop\vts_admin_rebuild-master\vts\Lib\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 )WheelMetadatazIMetadataProvider 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__*   s    zWheelMetadata.__init__r   r)   c                 C   s
   || j v S r*   )r+   r-   r   r$   r$   r%   has_metadata.   s    zWheelMetadata.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)r+   decodeUnicodeDecodeErrorr   r,   )r-   r   er$   r$   r%   get_metadata1   s    zWheelMetadata.get_metadatac                 C   s   t | |S r*   )r	   yield_linesr5   r0   r$   r$   r%   get_metadata_lines:   s    z WheelMetadata.get_metadata_linesc                 C   s   dS NFr$   r0   r$   r$   r%   metadata_isdir=   s    zWheelMetadata.metadata_isdirc                 C   s   g S r*   r$   r0   r$   r$   r%   metadata_listdir@   s    zWheelMetadata.metadata_listdir)script_name	namespacer)   c                 C   s   d S r*   r$   )r-   r;   r<   r$   r$   r%   
run_scriptC   s    zWheelMetadata.run_script)r   r    r!   __doc__r   r"   bytesr.   boolr1   r5   r   r7   r9   r   r:   r=   r$   r$   r$   r%   r&   $   s   	r&   c                   @   s4  e Zd ZejddddZeed dddZee	ed 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ej dddZeedddZee dddZeej j!ddd Z"d'e#e ee$ d"d#d$Z%ee dd%d&Z&dS )(DistributionN)distr)   c                 C   s
   || _ d S r*   )_distr-   rB   r$   r$   r%   r.   H   s    zDistribution.__init__)	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endswithrA   splitextDistInfoDistribution)	clsrE   dist_dirbase_dirdist_dir_namer'   dist_cls	dist_namerB   r$   r$   r%   from_directoryK   s    
zDistribution.from_directory)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 )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   )
startswithrL   r   ).0rK   info_dirzfr$   r%   
<dictcomp>k   s   z+Distribution.from_wheel.<locals>.<dictcomp>Nz has an invalid wheel, )locationr'   rG   )
as_zipfiler   namelistzipfile
BadZipFiler   ra   r   r	   rP   r&   )rQ   rX   r   _metadata_textr4   rB   r$   r]   r%   
from_wheel_   s     	
("(
zDistribution.from_wheelr)   c                 C   s   | j jS r*   )rC   ra   r-   r$   r$   r%   ra   {   s    zDistribution.locationc                 C   s   | j jS r*   )rC   egg_inforj   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 r8   )r@   rC   	_providerrK   AttributeErrorrj   r$   r$   r%   installed_by_distutils   s    z#Distribution.installed_by_distutilsc                 C   s   t | jjS r*   )r   rC   rG   rj   r$   r$   r%   canonical_name   s    zDistribution.canonical_namec                 C   s   t | jjS r*   )parse_versionrC   versionrj   r$   r$   r%   rr      s    zDistribution.version)rK   r)   c                 C   s   | j t|S r*   )rC   r1   r"   )r-   rK   r$   r$   r%   is_file   s    zDistribution.is_filec                 c   sT   t |}| j|st|| j|s0t|| j|D ]}t||V  q<d S r*   )	r"   rC   r1   FileNotFoundErrorisdirNotADirectoryErrorr:   pathlibPurePosixPath)r-   rK   r   childr$   r$   r%   iterdir   s    zDistribution.iterdirc                 C   s>   t |}| j|st|| j|}|d u r:t| ||S r*   )r"   rC   r1   rt   r5   r   )r-   rK   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   )rC   get_entry_mapitemsr"   	partitionr   strip)r-   r   entriesr   entry_pointrf   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.
        METADATAzPKG-INFOzNo metadata found in %s )
isinstancerC   r	   rP   r|   rt   ra   r   reprloggerwarningemailparser
FeedParserfeedclose)r-   metadata_namer'   displaying_pathfeed_parserr$   r$   r%   r'      s    



zDistribution.metadatar$   )extrasr)   c                 C   s"   |rt || jj}| j|S r*   )	frozensetintersectionrC   r   requires)r-   r   r$   r$   r%   iter_dependencies   s    zDistribution.iter_dependenciesc                 C   s   | j jS r*   )rC   r   rj   r$   r$   r%   iter_provided_extras   s    z!Distribution.iter_provided_extras)r$   )'r   r    r!   r	   rA   r.   classmethodr"   rW   r   rh   propertyr   ra   rl   r@   ro   r   rp   r   rr   r   rs   r   rw   rx   rz   r|   r   r   r   r   messageMessager'   r   r
   r   r   r$   r$   r$   r%   rA   G   s.   			rA   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	e dddZee	e dddZee dddZdS )EnvironmentN)wsr)   c                 C   s
   || _ d S r*   )_ws)r-   r   r$   r$   r%   r.      s    zEnvironment.__init__ri   c                 C   s
   | t jS r*   )r	   working_set)rQ   r$   r$   r%   default   s    zEnvironment.default)pathsr)   c                 C   s   | t |S r*   )r	   
WorkingSet)rQ   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_distributionsrp   )r-   r   rp   rB   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)r-   r   rB   r$   r$   r%   get_distribution   s    

zEnvironment.get_distributionc                 c   s   | j D ]}t|V  qd S r*   )r   rA   rD   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loggingrI   rw   rd   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   pip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   rq   pip._internal.exceptionsr   r   r   pip._internal.utils.miscr   pip._internal.utils.wheelr   r   baser   r   r   r   r   r   	getLoggerr   r   r   r&   rA   r   r$   r$   r$   r%   <module>   s(   $ 	
# 
