o
    {ŸŽiN  ã                   @   sz   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 dd„ Zd	d
„ Zedg d¢ƒZdd„ ZdS )é    N)Ú
namedtuple)ÚAnyÚListÚOptional)Útomli)ÚInvalidRequirementÚRequirement)ÚInstallationErrorc                 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   úaC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\site-packages\pip/_internal/pyproject.pyÚ	<genexpr>   s   € z"_is_list_of_str.<locals>.<genexpr>)r
   ÚlistÚall)Úobjr   r   r   Ú_is_list_of_str   s   
þr   c                 C   s   t j | d¡S )Nzpyproject.toml)ÚosÚpathÚjoin)Úunpacked_source_directoryr   r   r   Úmake_pyproject_path   s   r   ÚBuildSystemDetails)ÚrequiresÚbackendÚcheckÚbackend_pathc              
   C   s®  t j |¡}t j |¡}|r/t|dd��}t |¡}W d  ƒ n1 s$w   Y  | d¡}nd}|rB|sB| dur?| s?tdƒ‚d} n|rZd|v rZ| durW| sWtd |d ¡ƒ‚d} n| du r`|} | dusfJ ‚| sjdS |du rud	d
gddœ}|dus{J ‚d}	d|vrŠt|	j|dd�ƒ‚|d }
t	|
ƒs›t|	j|dd�ƒ‚|
D ]}zt
|ƒ W q� ty¸   t|	j|d |¡d�ƒ‚w | d¡}| dg ¡}g }|du rÐd}d	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.
        )
    zutf-8)ÚencodingNzbuild-systemzIDisabling 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.tomlzsetuptools>=40.8.0Úwheelz setuptools.build_meta:__legacy__)r   r    zO{package} has a pyproject.toml file that does not comply with PEP 518: {reason}r   z]it has a 'build-system' table but not 'build-system.requires' which is mandatory in the table)ÚpackageÚreasonz1'build-system.requires' is not a list of strings.z='build-system.requires' contains an invalid requirement: {!r}zbackend-path)r   r   ÚisfileÚopenr   ÚloadÚgetr	   Úformatr   r   r   r   )Ú
use_pep517Úpyproject_tomlÚsetup_pyÚreq_nameÚhas_pyprojectÚ	has_setupÚfÚpp_tomlÚbuild_systemÚerror_templater   Úrequirementr   r   r   r   r   r   Úload_pyproject_toml   s„   ÿÿÿý
þ	ÿÿÿþüÿÿ
r4   )r   Úcollectionsr   Útypingr   r   r   Úpip._vendorr   Z"pip._vendor.packaging.requirementsr   r   Úpip._internal.exceptionsr	   r   r   r   r4   r   r   r   r   Ú<module>   s    