U
    
HaP                     @   s   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 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  erd dlm!Z! e"e#Z$G dd de
Z%G dd deZ&G dd deZ'dS )    N)TYPE_CHECKING
CollectionIterableIteratorList
NamedTupleOptional)pkg_resources)Requirement)canonicalize_name)parse)misc)get_installerget_metadata)$pkg_resources_distribution_for_wheel   )BaseDistributionBaseEntryPointBaseEnvironmentDistributionVersion)NormalizedNamec                   @   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    H/tmp/pip-unpacked-wheel-tx790h60/pip/_internal/metadata/pkg_resources.pyr      s   
r   c                   @   s0  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	d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d'ee 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__)pathr   r$   c              	   C   s.   t j|dd}t|||}W 5 Q R X | |S )NT)
allowZip64)zipfileZipFiler   )clsr*   r   zfr#   r    r    r!   
from_wheel)   s    zDistribution.from_wheelr$   c                 C   s   | j jS r%   )r&   locationr(   r    r    r!   r2   /   s    zDistribution.locationc                 C   s   | j jS r%   )r&   egg_infor3   r    r    r!   info_directory3   s    zDistribution.info_directoryr   c                 C   s   t | jjS r%   )r   r&   project_namer3   r    r    r!   canonical_name7   s    zDistribution.canonical_namec                 C   s   t | jjS r%   )parse_versionr&   versionr3   r    r    r!   r9   ;   s    zDistribution.versionc                 C   s
   t | jS r%   )r   r&   r3   r    r    r!   	installer?   s    zDistribution.installerc                 C   s   t | jS r%   )r   dist_is_editabler&   r3   r    r    r!   editableC   s    zDistribution.editablec                 C   s   t | jS r%   )r   dist_is_localr&   r3   r    r    r!   localG   s    zDistribution.localc                 C   s   t | jS r%   )r   dist_in_usersiter&   r3   r    r    r!   in_usersiteK   s    zDistribution.in_usersitec                 C   s   t | jS r%   )r   dist_in_site_packagesr&   r3   r    r    r!   in_site_packagesO   s    zDistribution.in_site_packagesr   r$   c                 C   s    | j |st|| j |S r%   )r&   has_metadataFileNotFoundErrorr   )r(   r   r    r    r!   	read_textS   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   )r&   get_entry_mapitemsr   	partitionr   strip)r(   r   entriesr   Zentry_point_r   r    r    r!   iter_entry_pointsX   s    zDistribution.iter_entry_pointsc                 C   s
   t | jS r%   )r   r&   r3   r    r    r!   metadata^   s    zDistribution.metadatar    )extrasr$   c                 C   s"   |rt || jj}| j|S r%   )	frozensetintersectionr&   rP   requires)r(   rP   r    r    r!   iter_dependenciesb   s    zDistribution.iter_dependencies)r    )!r   r   r   r	   r"   r)   classmethodr   r0   propertyr   r2   r5   r7   r   r9   r:   boolr<   r>   r@   rB   rF   r   r   rN   emailmessageMessagerO   r   r
   rT   r    r    r    r!   r"   %   s4   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 r%   )_ws)r(   r\   r    r    r!   r)   i   s    zEnvironment.__init__r1   c                 C   s
   | t jS r%   )r	   working_set)r.   r    r    r!   defaultl   s    zEnvironment.default)pathsr$   c                 C   s   | t |S r%   )r	   
WorkingSet)r.   r`   r    r    r!   
from_pathsp   s    zEnvironment.from_pathsrC   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   Ziter_distributionsr7   )r(   r   r7   r#   r    r    r!   _search_distributiont   s
    

z Environment._search_distributionc                 C   sF   |  |}|r|S z| j| W n tjk
r:   Y d S X |  |S r%   )rc   r]   requirer	   DistributionNotFound)r(   r   r#   r    r    r!   get_distribution   s    

zEnvironment.get_distributionc                 c   s   | j D ]}t|V  qd S r%   )r]   r"   r'   r    r    r!   _iter_distributions   s    
zEnvironment._iter_distributions)r   r   r   r	   ra   r)   rU   r   r_   r   r   r   rb   r   rc   rf   r   rg   r    r    r    r!   r[   h   s   r[   )(email.messagerX   loggingr,   typingr   r   r   r   r   r   r   pip._vendorr	   "pip._vendor.packaging.requirementsr
   pip._vendor.packaging.utilsr   Zpip._vendor.packaging.versionr   r8   Zpip._internal.utilsr   pip._internal.utils.packagingr   r   pip._internal.utils.wheelr   baser   r   r   r   r   	getLoggerr   loggerr   r"   r[   r    r    r    r!   <module>   s"   $

C