o
    ©„jË  ã                   @  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 d dl	m
Z
mZmZ d dlmZ d dlmZ ddd„Zddd„Zedg d¢ƒZddd„ZdS )é    )ÚannotationsN)Ú
namedtuple)ÚAny)ÚInvalidRequirement)ÚInstallationErrorÚInvalidPyProjectBuildRequiresÚMissingPyProjectBuildRequires)Útomllib)Úget_requirementÚobjr   ÚreturnÚboolc                 C  s   t | tƒotdd„ | D ƒƒS )Nc                 s  s   � | ]}t |tƒV  qd S )N)Ú
isinstanceÚstr)Ú.0Úitem© r   úU/var/www/html/django_cbt/venv/lib/python3.10/site-packages/pip/_internal/pyproject.pyÚ	<genexpr>   s   € z"_is_list_of_str.<locals>.<genexpr>)r   ÚlistÚall)r   r   r   r   Ú_is_list_of_str   s   r   Úunpacked_source_directoryr   c                 C  s   t j | d¡S )Nzpyproject.toml)ÚosÚpathÚjoin)r   r   r   r   Úmake_pyproject_path   s   r   ÚBuildSystemDetails)ÚrequiresÚbackendÚcheckÚbackend_pathÚpyproject_tomlÚsetup_pyÚreq_namec                 C  s:  t j | ¡}t j |¡}|s|st|› d�ƒ‚|r<t| dd��}t | ¡ ¡}W d  ƒ n1 s1w   Y  | d¡}nd}|du rHdgddœ}d	|vrQt	|d
�‚|d	 }t
|ƒs_t|dd�‚|D ]}	zt|	ƒ W qa ty }
 z
t|d|	›�d�|
‚d}
~
ww | d¡}| dg ¡}g }|du r–d}dg}t||||ƒS )a¼  Load the pyproject.toml file.

    Parameters:
        pyproject_toml - Location of the project's pyproject.toml file
        setup_py - Location of the project's setup.py file
        req_name - The name of the requirement we're processing (for
                   error reporting)

    Returns:
        None if we should use the legacy code path, otherwise a tuple
        (
            requirements from pyproject.toml,
            name of PEP 517 backend,
            requirements we should check are installed after setting
                up the build environment
            directory paths to import the backend from (backend-path),
                relative to the project root.
        )
    zW does not appear to be a Python project: neither 'setup.py' nor 'pyproject.toml' found.zutf-8)ÚencodingNzbuild-systemzsetuptools>=40.8.0z setuptools.build_meta:__legacy__)r   úbuild-backendr   )ÚpackagezIt is not a list of strings.)r'   Úreasonz$It contains an invalid requirement: r&   zbackend-path)r   r   Úisfiler   Úopenr	   ÚloadsÚreadÚgetr   r   r   r
   r   r   )r"   r#   r$   Úhas_pyprojectÚ	has_setupÚfÚpp_tomlÚbuild_systemr   ÚrequirementÚerrorr   r!   r    r   r   r   Úload_pyproject_toml   sV   ÿÿþ	
þþý€ÿ
r5   )r   r   r   r   )r   r   r   r   )r"   r   r#   r   r$   r   r   r   )Ú
__future__r   r   Úcollectionsr   Útypingr   Ú"pip._vendor.packaging.requirementsr   Úpip._internal.exceptionsr   r   r   Úpip._internal.utils.compatr	   Úpip._internal.utils.packagingr
   r   r   r   r5   r   r   r   r   Ú<module>   s    

ÿ