U
    &%e                     @   s   d dl Zd dl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mZ d dlmZmZmZ eeddd	Zeed
ddZedddddgZee eeeee dddZdS )    N)
namedtuple)AnyListOptional)tomli)InvalidRequirementRequirement)InstallationErrorInvalidPyProjectBuildRequiresMissingPyProjectBuildRequires)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   V/var/www/html/Darija-Ai-API/env/lib/python3.8/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)
use_pep517pyproject_tomlsetup_pyreq_namer   c                 C   s  t j|}t j|}|s.|s.t| d|rdt|dd}t| }W 5 Q R X |d}nd}|r|s| dk	r| stdd} nX|rd|kr| dk	r| std		|d d} n(| dkr|pt
jd
 pt
jd } | dk	st| sdS |dkrddgdd}|dk	std|kr0t|d|d }	t|	sNt|dd|	D ]L}
zt|
 W n8 tk
r } zt|d|
d|W 5 d}~X Y nX qR|d}|dg }g }|dkrd}dg}t|	|||S )aB  Load the pyproject.toml file.

    Parameters:
        use_pep517 - Has the user requested PEP 517 processing? None
                     means the user hasn't explicitly specified.
        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)encodingzbuild-systemNzIDisabling PEP 517 processing is invalid: project does not have a setup.pyTbuild-backendzbDisabling PEP 517 processing is invalid: project specifies a build backend of {} in pyproject.toml
setuptoolswheelzsetuptools>=40.8.0z setuptools.build_meta:__legacy__)r   r'   r   )packagezIt is not a list of strings.)r*   reasonz$It contains an invalid requirement: zbackend-path)r   r   isfiler	   openr   loadsreadgetformat	importlibutil	find_specAssertionErrorr   r   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   s    

	




r=   )importlib.utilr2   r   collectionsr   typingr   r   r   pip._vendorr   "pip._vendor.packaging.requirementsr   r   pip._internal.exceptionsr	   r
   r   boolr   r   r   r   r=   r   r   r   r   <module>   s$    
   