B
    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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&   U/var/www/cleansys/lib/python3.7/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 )InMemoryMetadatazIMetadataProvider 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InMemoryMetadata.__init__)r   r+   c             C   s
   || j kS )N)r,   )r.   r   r&   r&   r'   has_metadata.   s    zInMemoryMetadata.has_metadatac             C   sT   y| j |  S  tk
rN } z"td| j d| d| dW d d }~X Y nX 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InMemoryMetadata.get_metadatac             C   s   t | |S )N)r	   Zyield_linesr4   )r.   r   r&   r&   r'   get_metadata_lines:   s    z#InMemoryMetadata.get_metadata_linesc             C   s   dS )NFr&   )r.   r   r&   r&   r'   metadata_isdir=   s    zInMemoryMetadata.metadata_isdirc             C   s   g S )Nr&   )r.   r   r&   r&   r'   metadata_listdir@   s    z!InMemoryMetadata.metadata_listdir)script_name	namespacer+   c             C   s   d S )Nr&   )r.   r8   r9   r&   r&   r'   
run_scriptC   s    zInMemoryMetadata.run_script)r!   r"   r#   __doc__r   r$   bytesr/   boolr0   r4   r   r5   r6   r   r7   r:   r&   r&   r&   r'   r(   $   s   	r(   c               @   sZ  e Zd ZejddddZeeedddZ	ee
eeedd	d
ZeeeedddZ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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 dd"d#Z 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 )N)_dist)r.   r?   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sXt
tj}tj	|d dd }||||d}| |S )Nz	.egg-infor   z
.dist-info-)project_namer)   )rstriposseppathsplitr	   ZPathMetadataendswithr>   splitextAssertionErrorDistInfoDistribution)	clsrA   Zdist_dirbase_dirZdist_dir_namer)   Zdist_cls	dist_namer?   r&   r&   r'   from_directoryK   s    
zDistribution.from_directory)metadata_contentsfilenamerC   r+   c             C   s&   d|i}t j|t|||d}| |S )NMETADATA)locationr)   rC   )r	   rL   r(   )rM   rQ   rR   rC   metadata_dictr?   r&   r&   r'   from_metadata_file_contents_   s    z(Distribution.from_metadata_file_contents)wheelr   r+   c          
      s   y>|  ,t|\ } fdd D }W d Q R X W nd tjk
rp } zt|j||W d d }~X Y n4 tk
r } zt| d| W d d }~X Y nX tj	|jt
||j|d}| |S )Nc                s4   i | ],}|   d rt||d dd qS )/r   )
startswithr   rH   ).0rG   )info_dirzfr&   r'   
<dictcomp>u   s   z+Distribution.from_wheel.<locals>.<dictcomp>z has an invalid wheel, )rT   r)   rC   )
as_zipfiler   namelistzipfile
BadZipFiler   rT   r   r	   rL   r(   )rM   rW   r   _rU   r3   r?   r&   )r\   r]   r'   
from_wheelp   s    
$
zDistribution.from_wheel)r+   c             C   s   | j jS )N)r@   rT   )r.   r&   r&   r'   rT      s    zDistribution.locationc             C   s.   t | j}|r|}n| jr"| j}nd S t|S )N)r   raw_namerT   r   )r.   egg_linkrT   r&   r&   r'   installed_location   s    
zDistribution.installed_locationc             C   s   | j jS )N)r@   egg_info)r.   r&   r&   r'   info_location   s    zDistribution.info_locationc             C   s(   yt | jjjS  tk
r"   dS X d S )NF)r=   r@   Z	_providerrG   AttributeError)r.   r&   r&   r'   installed_by_distutils   s    z#Distribution.installed_by_distutilsc             C   s   t | jjS )N)r   r@   rC   )r.   r&   r&   r'   canonical_name   s    zDistribution.canonical_namec             C   s   t | jjS )N)parse_versionr@   version)r.   r&   r&   r'   rn      s    zDistribution.version)rG   r+   c             C   s   | j t|S )N)r@   r0   r$   )r.   rG   r&   r&   r'   is_file   s    zDistribution.is_filec             c   s   | j dE d H  d S )Nscripts)r@   r7   )r.   r&   r&   r'   iter_distutils_script_names   s    z(Distribution.iter_distutils_script_namesc             C   s>   t |}| j|st|| j|}|d kr:t| ||S )N)r$   r@   r0   FileNotFoundErrorr4   r   )r.   rG   r   contentr&   r&   r'   	read_text   s    
zDistribution.read_textc             c   sb   x\| j   D ]J\}}x@| D ]4\}}t|d\}}}t| | |dV  q"W qW d S )N=)r   r   r    )r@   Zget_entry_mapitemsr$   	partitionr   strip)r.   r    entriesr   entry_pointrc   r   r&   r&   r'   iter_entry_points   s    zDistribution.iter_entry_pointsc             C   s   t | jtjrd}nd}y| |}W n@ tk
rf   | jrHt| j}n
t| j}t	
d| d}Y nX tj }|| | S )z
        :raises NoneMetadataError: if the distribution reports `has_metadata()`
            True but `get_metadata()` returns None.
        rS   zPKG-INFOzNo metadata found in %s )
isinstancer@   r	   rL   rt   rr   rT   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&   )extrasr+   c             C   s"   |rt || jj}| j|S )N)	frozensetintersectionr@   r   requires)r.   r   r&   r&   r'   iter_dependencies   s    zDistribution.iter_dependenciesc             C   s   | j jS )N)r@   r   )r.   r&   r&   r'   iter_provided_extras   s    z!Distribution.iter_provided_extras)r&   ))r!   r"   r#   r	   r>   r/   classmethodr$   r   rP   r<   rV   r   rd   propertyr   rT   rg   ri   r=   rk   r   rl   r   rn   r   ro   r   rq   rt   r   r   r{   r   messageMessager   r   r
   r   r   r&   r&   r&   r'   r>   G   s:   
		r>   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 dddZee	e dddZee	e dddZdS )EnvironmentN)wsr+   c             C   s
   || _ d S )N)_ws)r.   r   r&   r&   r'   r/      s    zEnvironment.__init__)r+   c             C   s
   | t jS )N)r	   Zworking_set)rM   r&   r&   r'   default   s    zEnvironment.default)pathsr+   c             C   s   | t |S )N)r	   
WorkingSet)rM   r   r&   r&   r'   
from_paths   s    zEnvironment.from_pathsc             c   s   x| j D ]}t|V  qW d S )N)r   r>   )r.   r?   r&   r&   r'   _iter_distributions   s    zEnvironment._iter_distributions)r   r+   c             C   s,   t |}x|  D ]}|j|kr|S qW 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_distributionsrl   )r.   r   rl   r?   r&   r&   r'   _search_distribution   s
    
z Environment._search_distributionc             C   sD   |  |}|r|S y| j| W n tjk
r8   d S X |  |S )N)r   r   Zrequirer	   DistributionNotFound)r.   r   r?   r&   r&   r'   get_distribution   s    

zEnvironment.get_distribution)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   )2email.messager   email.parserloggingrE   ra   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   Zpip._vendor.packaging.utilsr   r   Zpip._vendor.packaging.versionr   rm   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(   r>   r   r&   r&   r&   r'   <module>   s(   $ 	
# 