U
    e                     @   sr   d dl Z d dlmZ d dlmZ erTd dlmZ d dlmZ d dl	m
Z
 d dlmZ ee jG dd	 d	eZdS )
    N)add_metaclass)MYPY_CHECK_RUNNING)Optional)Distribution)InstallRequirement)PackageFinderc                       s<   e Zd ZdZ fddZejdd Zejdd Z  Z	S )AbstractDistributiona  A base class for handling installable artifacts.

    The requirements for anything installable are as follows:

     - we must be able to determine the requirement name
       (or we can't correctly handle the non-upgrade case).

     - for packages with setup requirements, we must also be able
       to determine their requirements without installing additional
       packages (for the same reason as run-time dependencies)

     - we must be able to create a Distribution object exposing the
       above metadata.
    c                    s   t t|   || _d S N)superr   __init__req)selfr   	__class__ D/tmp/pip-unpacked-wheel-indi3crb/pip/_internal/distributions/base.pyr       s    zAbstractDistribution.__init__c                 C   s
   t  d S r	   NotImplementedError)r   r   r   r   get_pkg_resources_distribution%   s    z3AbstractDistribution.get_pkg_resources_distributionc                 C   s
   t  d S r	   r   )r   finderbuild_isolationr   r   r   prepare_distribution_metadata*   s    z2AbstractDistribution.prepare_distribution_metadata)
__name__
__module____qualname____doc__r   abcabstractmethodr   r   __classcell__r   r   r   r   r      s   
r   )r   Zpip._vendor.sixr   pip._internal.utils.typingr   typingr   Zpip._vendor.pkg_resourcesr   Zpip._internal.reqr   "pip._internal.index.package_finderr   ABCMetaobjectr   r   r   r   r   <module>   s   