3 (\@sdZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZddlmZddlmZdd lmZdd lmZdd lmZerdd lmZmZmZmZmZdd l m!Z!ej"e#Z$GdddZ%Gddde&Z'Gddde'Z(dS)z;Build Environment used for isolation during sdist building N) OrderedDict)get_python_lib) get_paths) RequirementVersionConflict WorkingSet)__file__)call_subprocess) TempDirectory)MYPY_CHECK_RUNNING) open_spinner)TupleSetIterableOptionalList) PackageFinderc@seZdZddZdS)_PrefixcCsj||_d|_ttjdkrdnd||ddd|_td|d}td|d}||kr\|g|_n ||g|_dS) NFnt posix_prefix)baseplatbase)varsscripts) plat_specificprefixT)pathsetuprosnamebin_dirrlib_dirs)selfrpurelibplatlibr%j/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-build-k1a8l1r5/pip/pip/_internal/build_env.py__init__s    z_Prefix.__init__N)__name__ __module__ __qualname__r'r%r%r%r&rsrc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)BuildEnvironmentzFCreates and manages an isolated environment to install build deps c stdd_jjtfdddD_g_g_x6ttjj D] }jj |j jj |j qNWddtd d td d fD}tjjjjd _tjjjstjjttjjjd d"}|jtjdj|jdWdQRXdS)Nz build-env)kindc3s(|] }|ttjjjj|fVqdS)N)rrrjoin _temp_dir).0r)r"r%r& 9sz,BuildEnvironment.__init__..normaloverlaycSsh|]}tjj|qSr%)rrnormcase)r/siter%r%r& Fsz,BuildEnvironment.__init__..F)rTr4zsitecustomize.pywa import os, site, sys # First, drop system-sites related paths. original_sys_path = sys.path[:] known_paths = set() for path in {system_sites!r}: site.addsitedir(path, known_paths=known_paths) system_paths = set( os.path.normcase(path) for path in sys.path[len(original_sys_path):] ) original_sys_path = [ path for path in original_sys_path if os.path.normcase(path) not in system_paths ] sys.path = original_sys_path # Second, add lib directories. # ensuring .pth file are processed. for path in {lib_dirs!r}: assert not path in sys.path site.addsitedir(path) ) system_sitesr!)r1r2)r r.creater _prefixes _bin_dirs _lib_dirsreversedlistvaluesappendr extendr!rrrr- _site_direxistsmkdiropenwritetextwrapdedentformat)r"rr7fpr%)r"r&r'3s(     zBuildEnvironment.__init__cCsndddD|_|jdd}|jd}|r>|j|jtj|jg}tjjtjj |dtjj |ddS) NcSsi|]}tjj|d|qS)N)renvironget)r/rr%r%r& lsz.BuildEnvironment.__enter__..PATHPYTHONNOUSERSITE PYTHONPATH1)rMrNrO)rMrNrO) _save_envr:r@splitrpathseprArJupdater-)r"rZold_pathZ pythonpathr%r%r& __enter__ks   zBuildEnvironment.__enter__cCs>x8|jjD]*\}}|dkr,tjj|dq |tj|<q WdS)N)rQitemsrrJpop)r"exc_typeexc_valexc_tbZvarname old_valuer%r%r&__exit__~szBuildEnvironment.__exit__cCs|jjdS)N)r.cleanup)r"r%r%r&r]szBuildEnvironment.cleanupcCst}t}|rt|j}xx|D]p}y"|jtj|dkrD|j|Wq tk r}z,|jt|j dj t|j dfWYdd}~Xq Xq W||fS)zReturn 2 sets: - conflicting requirements: set of (installed, wanted) reqs tuples - missing requirements: set of reqs Nr) setrr;findrparseaddrstrargsas_requirement)r"reqsmissingZ conflictingwsreqer%r%r&check_requirementss  (z#BuildEnvironment.check_requirementsc Csz|j|}|j std|_|s$dStjtjjtdddd|jdg}t j t j kr\|j dxBdD]:}t|j|}|jd |jd d d jt|pdhfqbW|jr|jd|jdgx0|jddD]} |jd| gqWn |j dx|jD]} |jd| gqWx$|jD]\} } } |jd| gqW|jrB|j d|j d |j|t|} t|| dWdQRXdS)NTinstallz--ignore-installedz --no-userz--prefixz--no-warn-script-locationz-v no_binary only_binaryz--_-,z:none:z-irr^z--extra-index-urlz --no-indexz --find-linksz--trusted-hostz--pre)spinner)rmrn)r9rAssertionErrorsys executablerrdirname pip_locationloggergetEffectiveLevelloggingDEBUGr?getattrformat_controlr@replacer-sorted index_urls find_linkssecure_originsallow_all_prereleasesr r )r"finder requirementsZprefix_as_stringmessagerrdr}formatsZ extra_indexlinkrohostrrr%r%r&install_requirementss:            z%BuildEnvironment.install_requirementsN) r(r)r*__doc__r'rUr\r]rkrr%r%r%r&r+/s8r+c@s8eZdZdZddZddZddZdd Zd d Zd S) NoOpBuildEnvironmentz5A no-op drop-in replacement for BuildEnvironment cCsdS)Nr%)r"r%r%r&r'szNoOpBuildEnvironment.__init__cCsdS)Nr%)r"r%r%r&rUszNoOpBuildEnvironment.__enter__cCsdS)Nr%)r"rXrYrZr%r%r&r\szNoOpBuildEnvironment.__exit__cCsdS)Nr%)r"r%r%r&r]szNoOpBuildEnvironment.cleanupcCs tdS)N)NotImplementedError)r"rrrrr%r%r&rsz)NoOpBuildEnvironment.install_requirementsN) r(r)r*rr'rUr\r]rr%r%r%r&rs r))rrzrrtrF collectionsrdistutils.sysconfigr sysconfigrZpip._vendor.pkg_resourcesrrrpiprrwZpip._internal.utils.miscr Zpip._internal.utils.temp_dirr Zpip._internal.utils.typingr Zpip._internal.utils.uir Ztypingr rrrrZpip._internal.indexr getLoggerr(rxrobjectr+rr%r%r%r&s*