a
    bai                     @  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ddZdddddZedg dZdddddddZdS )    )annotationsN)
namedtuple)Any)InvalidRequirement)InstallationErrorInvalidPyProjectBuildRequiresMissingPyProjectBuildRequires)tomllib)get_requirementr   bool)objreturnc                 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   Q/var/www/html/SiteWeb/venv/lib/python3.9/site-packages/pip/_internal/pyproject.py	<genexpr>       z"_is_list_of_str.<locals>.<genexpr>)r   listall)r   r   r   r   _is_list_of_str   s    r   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_namer   c                 C  sL  t j| }t j|}|s.|s.t| d|rxt| dd}t| }W d   n1 sb0    Y  |d}nd}|du rdgdd}d	|vrt	|d
|d	 }t
|st|dd|D ]L}	zt|	 W q ty }
 z t|d|	d|
W Y d}
~
qd}
~
0 0 q|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   sP    ,	


r6   )
__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   r6   r   r   r   r   <module>   s   