3
Ug                 @   s   d dl Zd dlZd dl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 d dlmZmZ d d	lmZ d
dlmZmZmZmZm Z  ej!e"Z#G dd deZ$G dd deZ%G dd deZ&dS )    N)
CollectionIterableIteratorList
NamedTupleOptional)pkg_resources)Requirement)NormalizedNamecanonicalize_name)parse)misc)get_installerget_metadata)$pkg_resources_distribution_for_wheel   )BaseDistributionBaseEntryPointBaseEnvironmentDistributionVersionWheelc               @   s   e Zd ZU eeedS )
EntryPointN)__name__
__module____qualname__strnamevaluegroup r   r   H/tmp/pip-unpacked-wheel-0ht26j5g/pip/_internal/metadata/pkg_resources.pyr      s   
r   c               @   s2  e Zd Zej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dddZe
edddZeedddZee dddZe
ejjdddZf fee ee  d d!d"Z!ee dd#d$Z"dS )%DistributionN)distreturnc             C   s
   || _ d S )N)_dist)selfr"   r   r   r    __init__    s    zDistribution.__init__)wheelr   r#   c             C   s*   |j  }t|||j}W d Q R X | |S )N)Z
as_zipfiler   location)clsr'   r   zfr"   r   r   r    
from_wheel#   s    
zDistribution.from_wheel)r#   c             C   s   | j jS )N)r$   r(   )r%   r   r   r    r(   )   s    zDistribution.locationc             C   s   | j jS )N)r$   egg_info)r%   r   r   r    info_directory-   s    zDistribution.info_directoryc             C   s   t | jjS )N)r   r$   project_name)r%   r   r   r    canonical_name1   s    zDistribution.canonical_namec             C   s   t | jjS )N)parse_versionr$   version)r%   r   r   r    r1   5   s    zDistribution.versionc             C   s
   t | jS )N)r   r$   )r%   r   r   r    	installer9   s    zDistribution.installerc             C   s   t j| jS )N)r   dist_is_localr$   )r%   r   r   r    local=   s    zDistribution.localc             C   s   t j| jS )N)r   dist_in_usersiter$   )r%   r   r   r    in_usersiteA   s    zDistribution.in_usersitec             C   s   t j| jS )N)r   dist_in_site_packagesr$   )r%   r   r   r    in_site_packagesE   s    zDistribution.in_site_packages)r   r#   c             C   s    | j j|st|| j j|S )N)r$   has_metadataFileNotFoundErrorr   )r%   r   r   r   r    	read_textI   s    zDistribution.read_textc             c   sb   x\| j j j D ]J\}}x@|j D ]4\}}t|jd\}}}t|j |j |dV  q"W qW d S )N=)r   r   r   )r$   get_entry_mapitemsr   	partitionr   strip)r%   r   entriesr   Zentry_point_r   r   r   r    iter_entry_pointsN   s    zDistribution.iter_entry_pointsc             C   s
   t | jS )N)r   r$   )r%   r   r   r    metadataT   s    zDistribution.metadata)extrasr#   c             C   s"   |rt |j| jj}| jj|S )N)	frozensetintersectionr$   rE   requires)r%   rE   r   r   r    iter_dependenciesX   s    zDistribution.iter_dependenciesc             C   s   | j jS )N)r$   rE   )r%   r   r   r    iter_provided_extras]   s    z!Distribution.iter_provided_extras)#r   r   r   r   r!   r&   classmethodr   r   r+   propertyr   r(   r-   r
   r/   r   r1   r2   boolr4   r6   r8   r;   r   r   rC   emailmessageMessagerD   r   r	   rI   rJ   r   r   r   r    r!      s2   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	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 )N)_ws)r%   rR   r   r   r    r&   b   s    zEnvironment.__init__)r#   c             C   s
   | t jS )N)r   working_set)r)   r   r   r    defaulte   s    zEnvironment.default)pathsr#   c             C   s   | t j|S )N)r   
WorkingSet)r)   rV   r   r   r    
from_pathsi   s    zEnvironment.from_paths)r   r#   c             C   s,   t |}x| j 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   Ziter_distributionsr/   )r%   r   r/   r"   r   r   r    _search_distributionm   s
    
z Environment._search_distributionc             C   sD   | j |}|r|S y| jj| W n tjk
r8   d S X | j |S )N)rY   rS   requirer   DistributionNotFound)r%   r   r"   r   r   r    get_distributiony   s    

zEnvironment.get_distributionc             c   s   x| j D ]}t|V  qW d S )N)rS   r!   )r%   r"   r   r   r    _iter_distributions   s    zEnvironment._iter_distributions)r   r   r   r   rW   r&   rK   r   rU   r   r   r   rX   r   rY   r\   r   r]   r   r   r   r    rQ   a   s   rQ   )'email.messagerN   loggingtypingr   r   r   r   r   r   pip._vendorr   Z"pip._vendor.packaging.requirementsr	   pip._vendor.packaging.utilsr
   r   Zpip._vendor.packaging.versionr   r0   Zpip._internal.utilsr   pip._internal.utils.packagingr   r   pip._internal.utils.wheelr   baser   r   r   r   r   	getLoggerr   loggerr   r!   rQ   r   r   r   r    <module>   s    
B