
    k"g                     h    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e j                        Z
y)	    N)Optional)PackageFinder)BaseDistribution)InstallRequirementc            	            e Zd ZdZdeddf fdZej                  dee	   fd       Z
ej                  defd       Zej                  ded	ed
eddfd       Z x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.
    reqreturnNc                 0    t         |           || _        y N)super__init__r	   )selfr	   	__class__s     Y/var/www/html/djangosite/lib/python3.12/site-packages/pip/_internal/distributions/base.pyr   zAbstractDistribution.__init__   s        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   s    r   build_tracker_idz%AbstractDistribution.build_tracker_id    s     "##r   c                     t               r   r   r   s    r   get_metadata_distributionz.AbstractDistribution.get_metadata_distribution(   s    !##r   finderbuild_isolationcheck_build_depsc                     t               r   r   )r   r   r   r   s       r   prepare_distribution_metadataz2AbstractDistribution.prepare_distribution_metadata,   s     "##r   )__name__
__module____qualname____doc__r   r   abcabstractpropertyr   strr   abstractmethodr   r   r   boolr   __classcell__)r   s   @r   r   r   	   s    $. 4  	$(3- $ $ 	$+; $ $ 	$$ $ 	$
 
$ $r   r   )	metaclass)r#   typingr   "pip._internal.index.package_finderr   pip._internal.metadata.baser   pip._internal.reqr   ABCMetar    r   r   <module>r0      s$    
  < 8 0*$S[[ *$r   