3 ig/@sddlZddlmZddlmZmZmZddlmZddl m Z m Z ddl m Z eeddd Zeed d d Zed ddddgZeeeeeeedddZdS)N) namedtuple)AnyListOptional)tomli)InvalidRequirement Requirement)InstallationError)objreturncCst|totdd|DS)Ncss|]}t|tVqdS)N) isinstancestr).0itemr6/tmp/pip-build-88gy_88q/pip/pip/_internal/pyproject.py sz"_is_list_of_str..)r listall)r rrr_is_list_of_str sr)unpacked_source_directoryr cCstjj|dS)Nzpyproject.toml)ospathjoin)rrrrmake_pyproject_pathsrBuildSystemDetailsrequiresbackendcheck backend_path) use_pep517pyproject_tomlsetup_pyreq_namer cCstjj|}tjj|}| r2| r2t|d|rdt|dd}tj|}WdQRX|jd}nd}|r| r|dk r| rtdd}n>|rd|kr|dk r| rtd j|dd}n |dkr|}|dk st |sdS|dkrd d gd d }|dk st d} d|kr$t| j|dd|d} t | sHt| j|ddxJ| D]B} y t | Wn.t k rt| j|dj| dYnXqNW|jd} |jdg} g}| dkrd } d d g}t | | || S)aBLoad 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)encodingNz build-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.tomlzsetuptools>=40.8.0wheelz setuptools.build_meta:__legacy__)rz build-backendzO{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)packagereasonz1'build-system.requires' is not a list of strings.z='build-system.requires' contains an invalid requirement: {!r}z backend-path)rrisfiler openrloadgetformatAssertionErrorrrrr)r r!r"r#Z has_pyprojectZ has_setupfZpp_tomlZ build_systemZerror_templater requirementrrrrrrload_pyproject_tomlst                   r0)r collectionsrZtypingrrr pip._vendorrZ"pip._vendor.packaging.requirementsrrZpip._internal.exceptionsr boolrr rrr0rrrrs