o
    ©„js  ã                   @  sd   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
mZ G dd„ dejd	�ZdS )
é    )ÚannotationsN)ÚTYPE_CHECKING)ÚBaseDistribution)ÚInstallRequirement)ÚBuildEnvironmentInstallerÚBuildIsolationModec                      sV   e Zd ZdZd‡ fdd„Ze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__© ú^/var/www/html/django_cbt/venv/lib/python3.10/site-packages/pip/_internal/distributions/base.pyr       s   

zAbstractDistribution.__init__ú
str | Nonec                 C  ó   t ƒ ‚)zÖA 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_isolationr   Úcheck_build_depsÚboolÚallow_editablesc                 C  r   r   r   )r   r   r   r   r   r   r   r   Úprepare_distribution_metadata1   s   z2AbstractDistribution.prepare_distribution_metadata)r	   r   r
   r   )r
   r   )r
   r   )
r   r   r   r   r   r   r   r   r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpropertyÚabcÚabstractmethodr   r   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   r   ÚABCMetar   r   r   r   r   Ú<module>   s    