o
    hR                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlmZmZm	Z	 d dl
mZ d dlmZ ddlmZmZmZmZmZ g dZd*ddZd+ddZG dd deZejd,ddZd-ddZd.ddZd/ddZd0d#d$Zd1d(d)ZdS )2    )annotationsN)LiteralProtocolcast)
deprecated)	strtobool   )BaseDistributionBaseEnvironmentFilesystemWheelMemoryWheelWheel)	r	   r
   r   r   r   get_default_environmentget_environmentget_wheel_distributionselect_backendreturnboolc                  C  st   t jdkrdS ttt tttj	d W  d   S 1 s!w   Y  t jdk r-dS ddl
} tt| jddS )a  Whether to use the ``importlib.metadata`` or ``pkg_resources`` backend.

    By default, pip uses ``importlib.metadata`` on Python 3.11+, and
    ``pkg_resources`` otherwise. Up to Python 3.13, This can be
    overridden by a couple of ways:

    * If environment variable ``_PIP_USE_IMPORTLIB_METADATA`` is set, it
      dictates whether ``importlib.metadata`` is used, for Python <3.14.
    * On Python 3.11, 3.12 and 3.13, Python distributors can patch
      ``importlib.metadata`` to add a global constant
      ``_PIP_USE_IMPORTLIB_METADATA = False``. This makes pip use
      ``pkg_resources`` (unless the user set the aforementioned environment
      variable to *True*).

    On Python 3.14+, the ``pkg_resources`` backend cannot be used.
    )      T_PIP_USE_IMPORTLIB_METADATANr      Fr   )sysversion_info
contextlibsuppressKeyError
ValueErrorr   r   osenvironimportlib.metadatagetattrmetadata	importlib r&   R/var/www/html/venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py_should_use_importlib_metadata   s   
 
r(   Nonec                  C  s:   t jdk rd S dd l} t| jdrd S tddddd d S )	Nr   r   r   z7Using the pkg_resources metadata backend is deprecated.zpto use the default importlib.metadata backend, by unsetting the _PIP_USE_IMPORTLIB_METADATA environment variablez26.3i4  )reasonreplacementgone_inissue)r   r   r!   hasattrr#   r   r$   r&   r&   r'   )_emit_pkg_resources_deprecation_if_needed<   s   

r/   c                   @  s&   e Zd ZU ded< ded< ded< dS )Backendz%Literal['importlib', 'pkg_resources']NAMEztype[BaseDistribution]Distributionztype[BaseEnvironment]EnvironmentN)__name__
__module____qualname____annotations__r&   r&   r&   r'   r0   U   s   
 r0   c                  C  s8   t  rddlm}  tt| S t  ddlm} tt|S )Nr   r$   )pkg_resources)r(    r%   r   r0   r/   r8   )r%   r8   r&   r&   r'   r   [   s   

r   r
   c                   C  s   t  j S )a  Get the default representation for the current environment.

    This returns an Environment instance from the chosen backend. The default
    Environment instance should be built from ``sys.path`` and may use caching
    to share instance state across calls.
    )r   r3   defaultr&   r&   r&   r'   r   i   s   r   pathslist[str] | Nonec                 C     t  j| S )a'  Get a representation of the environment specified by ``paths``.

    This returns an Environment instance from the chosen backend based on the
    given import paths. The backend must build a fresh instance representing
    the state of installed distributions when this function is called.
    )r   r3   
from_paths)r;   r&   r&   r'   r   s   s   r   	directorystrr	   c                 C  r=   )zGet the distribution metadata representation in the specified directory.

    This returns a Distribution instance from the chosen backend based on
    the given on-disk ``.dist-info`` directory.
    )r   r2   from_directory)r?   r&   r&   r'   get_directory_distribution}   s   rB   wheelr   canonical_namec                 C  s   t  j| |S )a  Get the representation of the specified wheel's distribution metadata.

    This returns a Distribution instance from the chosen backend based on
    the given wheel's ``.dist-info`` directory.

    :param canonical_name: Normalized project name of the given wheel.
    )r   r2   
from_wheel)rC   rD   r&   r&   r'   r      s   r   metadata_contentsbytesfilenamec                 C  s   t  j| ||S )a  Get the dist representation of the specified METADATA file contents.

    This returns a Distribution instance from the chosen backend sourced from the data
    in `metadata_contents`.

    :param metadata_contents: Contents of a METADATA file within a dist, or one served
                              via PEP 658.
    :param filename: Filename for the dist this metadata represents.
    :param canonical_name: Normalized project name of the given dist.
    )r   r2   from_metadata_file_contents)rF   rH   rD   r&   r&   r'   get_metadata_distribution   s
   rJ   )r   r   )r   r)   )r   r0   )r   r
   )r;   r<   r   r
   )r?   r@   r   r	   )rC   r   rD   r@   r   r	   )rF   rG   rH   r@   rD   r@   r   r	   )
__future__r   r   	functoolsr   r   typingr   r   r   pip._internal.utils.deprecationr   pip._internal.utils.miscr   baser	   r
   r   r   r   __all__r(   r/   r0   cacher   r   r   rB   r   rJ   r&   r&   r&   r'   <module>   s(    

!





	