U
    
Ha                     @   sP   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ G dd de j	dZ
dS )	    N)Optional)Distribution)PackageFinder)InstallRequirementc                       sX   e Zd ZdZedd fddZejee	 dddZ
ejeedd	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.
    N)reqreturnc                    s   t    || _d S N)super__init__r   )selfr   	__class__ D/tmp/pip-unpacked-wheel-tx790h60/pip/_internal/distributions/base.pyr      s    
zAbstractDistribution.__init__)r   c                 C   s
   t  d S r	   NotImplementedError)r   r   r   r   get_pkg_resources_distribution   s    z3AbstractDistribution.get_pkg_resources_distribution)finderbuild_isolationr   c                 C   s
   t  d S r	   r   )r   r   r   r   r   r   prepare_distribution_metadata"   s    z2AbstractDistribution.prepare_distribution_metadata)__name__
__module____qualname____doc__r   r   abcabstractmethodr   r   r   r   boolr   __classcell__r   r   r   r   r   
   s    r   )	metaclass)r   typingr   Zpip._vendor.pkg_resourcesr   "pip._internal.index.package_finderr   Zpip._internal.reqr   ABCMetar   r   r   r   r   <module>   s
   