o
    h&                     @  s`   d dl mZ d dlZd dlmZ d dlmZ d dlmZ er$d dl	m
Z
 G dd dejd	ZdS )
    )annotationsN)TYPE_CHECKING)BaseDistribution)InstallRequirement)BuildEnvironmentInstallerc                      sR   e Zd ZdZd fddZejdd	d
ZejdddZ	ej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.

     - if we need to do work in the build tracker, we must be able to generate a unique
       string to identify the requirement in the build tracker.
    reqr   returnNonec                   s   t    || _d S N)super__init__r   )selfr   	__class__ S/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/distributions/base.pyr       s   

zAbstractDistribution.__init__
str | Nonec                 C     t  )zA string that uniquely identifies this requirement to the build tracker.

        If None, then this dist has no work to do in the build tracker, and
        ``.prepare_distribution_metadata()`` will not be called.NotImplementedErrorr   r   r   r   build_tracker_id$   s   z%AbstractDistribution.build_tracker_idr   c                 C  r   r   r   r   r   r   r   get_metadata_distribution,   s   z.AbstractDistribution.get_metadata_distributionbuild_env_installerr   build_isolationboolcheck_build_depsc                 C  r   r   r   )r   r   r   r   r   r   r   prepare_distribution_metadata0   s   z2AbstractDistribution.prepare_distribution_metadata)r   r   r	   r
   )r	   r   )r	   r   )r   r   r   r   r   r   r	   r
   )__name__
__module____qualname____doc__r   abcabstractpropertyr   abstractmethodr   r   __classcell__r   r   r   r   r      s    r   )	metaclass)
__future__r   r#   typingr   pip._internal.metadata.baser   pip._internal.reqr   pip._internal.build_envr   ABCMetar   r   r   r   r   <module>   s    