3
ûâdeá  ã               @   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   úC/tmp/pip-build-red6nood/pip/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 )zÛFind 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   Ú"pip._vendor.packaging.requirementsr	   Úpip._vendor.packaging.utilsr
   r   Zpip._vendor.packaging.versionr   r0   Zpip._internal.utilsr   Zpip._internal.utils.packagingr   r   Zpip._internal.utils.wheelr   Úbaser   r   r   r   r   Ú	getLoggerr   Úloggerr   r!   rQ   r   r   r   r    Ú<module>   s    
B