관리-도구
편집 파일: pyproject.cpython-38.pyc
U &?�fw � @ s� d dl Zd dlZd dlZd dlmZ d dlmZmZm Z ej dkrLd dlZnd dlm Z d dlmZ d dlmZmZmZ d dlmZ eed �d d�Zeed�d d�Zedddddg�Ze e eeee e d�dd�ZdS )� N)� namedtuple)�Any�List�Optional)� � )�tomli)�InvalidRequirement)�InstallationError�InvalidPyProjectBuildRequires�MissingPyProjectBuildRequires)�get_requirement)�obj�returnc C s t | t�otdd� | D ��S )Nc s s | ]}t |t�V qd S )N)� isinstance�str)�.0�item� r �E/opt/hc_python/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 )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 5 Q 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��| D ]L} zt| � W n8 tk �r� } zt|d| ��d�|�W 5 d}~X Y nX �qP|�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)�encodingzbuild-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�wheelzsetuptools>=40.8.0z setuptools.build_meta:__legacy__)r r) r )�packagezIt is not a list of strings.)r, �reasonz$It contains an invalid requirement: zbackend-path)r r �isfiler �open�tomllib�loads�read�get�format� importlib�util� find_spec�AssertionErrorr r r r r r )r$ r% r&