U ��.eZ�@s�ddlmZddlZddlZddlZddlmZmZddlm Z ddl m Z e rhddl m Z mZmZmZdd�Zd d �Zd d �ZdS) �)�absolute_importN)�pytoml�six)�InstallationError)�MYPY_CHECK_RUNNING)�Any�Tuple�Optional�ListcCst|t�otdd�|D��S)Ncss|]}t|tj�VqdS)N)� isinstancerZ string_types)�.0�item�r�;/usr/lib/python3.8/site-packages/pip/_internal/pyproject.py� sz"_is_list_of_str..)r �list�all)�objrrr�_is_list_of_strs �rcCs2tj�|d�}tjr.t|tj�r.|�t� ��}|S)Nzpyproject.toml) �os�path�joinrZPY2r Z text_type�encode�sys�getfilesystemencoding)Zunpacked_source_directoryrrrr�make_pyproject_pathsrc CsVtj�|�}tj�|�}|rLtj|dd��}t�|�}W5QRX|�d�}nd}|rr|sr|dk rl|sltd��d}n<|r�d|kr�|dk r�|s�td� |d���d}n |dkr�|}|dk s�t �|s�dS|dkr�d d gd d �}|dk s�t �d } d|k�rt| j |dd���|d} t | ��s(t| j |dd���|�d�} g} | dk�rLd } d d g} | | | fS)a�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 ) zutf-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.tomlzsetuptools>=40.8.0Zwheelz setuptools.build_meta:__legacy__)�requiresrzO{package} has a pyproject.toml file that does not comply with PEP 518: {reason}rz]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.) rr�isfile�io�openr�load�getr�format�AssertionErrorr) Z use_pep517Zpyproject_tomlZsetup_pyZreq_nameZ has_pyprojectZ has_setup�fZpp_tomlZ build_systemZerror_templaterZbackendZcheckrrr�load_pyproject_toml#sf    �  ��  � � �� �  r))Z __future__rr"rrZ pip._vendorrrZpip._internal.exceptionsrZpip._internal.utils.typingr�typingrrr r rrr)rrrr�s