File: //usr/local/lib/python3.7/site-packages/pip/_internal/__pycache__/pyproject.cpython-37.pyc
B
L��g� � @ s� d dl Zd dlZd dlmZ d dlmZmZmZ d dl m
Z
d dlmZm
Z
d dlmZmZmZ eed�dd �Zeed
�dd�Zed
ddddg�Zee eeeee d�dd�ZdS )� N)�
namedtuple)�Any�List�Optional)�tomli)�InvalidRequirement�Requirement)�InstallationError�InvalidPyProjectBuildRequires�MissingPyProjectBuildRequires)�obj�returnc C s t | t�otdd� | D ��S )Nc s s | ]}t |t�V qd S )N)�
isinstance�str)�.0�item� r �;/tmp/pip-unpacked-wheel-hv55ucu3/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 )Nzpyproject.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|dd��}t�|�� �}W dQ R X |�d�}nd}|r�|s�| dk r�| s�td��d} nX|r�d|kr�| dk r�| s�td � |d ���d} n(| dkr�|p�t
j�d
� p�t
j�d� } | dk s�t
�| s�dS |dk�rdgd
d�}|dk �st
�d|k�r.t|d��|d } t| ��sLt|dd��xT| D ]L}
yt|
� W n8 tk
�r� } zt|d|
��d�|�W dd}~X Y nX �qRW |�d�}|�dg �}
g }|dk�r�d
}dg}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.zutf-8)�encodingNzbuild-systemzIDisabling PEP 517 processing is invalid: project does not have a setup.pyTz
build-backendzbDisabling PEP 517 processing is invalid: project specifies a build backend of {} in pyproject.toml�
setuptools�wheelzsetuptools>=40.8.0z setuptools.build_meta:__legacy__)r z
build-backendr )�packagezIt is not a list of strings.)r) �reasonz$It contains an invalid requirement: zbackend-path)r r �isfiler �openr �loads�read�get�format� importlib�util� find_spec�AssertionErrorr r r
r r r )r"