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 Cs<tj |¡}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®|}|s¶dS|dkrÌd d gd d œ}d } d|krêt| j |dd�ƒ‚|d} t | ƒ�st| j |dd�ƒ‚| d¡} g} | dk�r2d } 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Úformatr) Z use_pep517Zpyproject_tomlZsetup_pyZreq_nameZ has_pyprojectZ has_setupÚfZpp_tomlZ build_systemZerror_templaterZbackendZcheckrrrÚload_pyproject_toml#sb    ÿ  ýÿ þÿÿÿ þ  r()Z __future__rr"rrZ pip._vendorrrZpip._internal.exceptionsrZpip._internal.utils.typingrÚtypingrrr r rrr(rrrrÚs