B
    Uvgi                 @   sL   d dl mZ d dlZd dlZd dlmZmZ d dlmZ dd Z	dd Z
dS )	    )absolute_importN)pytomlsix)InstallationErrorc             C   s   t | totdd | D S )Nc             s   s   | ]}t |tjV  qd S )N)
isinstancer   string_types).0item r
   8/tmp/pip-install-r_9ig3yj/pip/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   sL  t j|}t j|}|rLtj|dd}t|}W dQ R X |d}nd}|rn|sn| dkrhtdd} n8|rd|kr| dkrtd		|d d} n| dkr|} | dk	st
| sdS |dkrd
dgdd}|dk	st
d}	d|krt|	j	|dd|d }
t|
st|	j	|dd|d}g }|dkrBd}d
dg}|
||fS )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
        )
    zutf-8)encodingNzbuild-systemFzIDisabling 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.tomlzsetuptools>=38.2.5wheelzsetuptools.build_meta)requireszbuild-backendzO{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.)ospathisfileioopenr   loadgetr   formatAssertionErrorr   )
use_pep517pyproject_tomlsetup_pyreq_namehas_pyproject	has_setupfpp_tomlbuild_systemerror_templater   backendcheckr
   r
   r   load_pyproject_toml   sV    




r+   )
__future__r   r   r   pip._vendorr   r   pip._internal.exceptionsr   r   r+   r
   r
   r
   r   <module>   s   