U n aR@sdZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZddlmZddlmZdd lmZdd lmZmZdd lmZerdd lmZmZmZmZm Z dd l!m"Z"e#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__) open_spinner)call_subprocess) TempDirectory tempdir_kinds)MYPY_CHECK_RUNNING)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&XC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_internal\build_env.py__init__!s   z_Prefix.__init__N)__name__ __module__ __qualname__r(r&r&r&r'rsrc@s8eZdZdZddZddZddZdd Zd d Zd S) BuildEnvironmentzFCreates and manages an isolated environment to install build deps c sttjddtfdddD|_g|_g|_tt|j D] }|j |j |j |j qDddtdd tdd fD}tjjd |_tj|jst|jttj|jd d "}|td j||jdW5QRXdS)NT)kindglobally_managedc3s&|]}|ttjj|fVqdSN)rrrjoin.0r temp_dirr&r' =sz,BuildEnvironment.__init__..)normaloverlaycSsh|]}tj|qSr&)rrnormcase)r2siter&r&r' Ksz,BuildEnvironment.__init__..F)rr9zsitecustomize.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")r r BUILD_ENVr _prefixes _bin_dirs _lib_dirsreversedlistvaluesappendr!extendr"rrrr0 _site_direxistsmkdiropenwritetextwrapdedentformat)r#rr<fpr&r3r'r(7s6   zBuildEnvironment.__init__cCsndddD|_|jdd}|jd}|r>||tj|jg}tjtj |dtj |ddS)NcSsi|]}|tj|dqSr/)renvirongetr1r&r&r' qsz.BuildEnvironment.__enter__..)PATHPYTHONNOUSERSITE PYTHONPATHrR1) _save_envr?rEsplitrpathseprFrOupdater0)r#rold_path pythonpathr&r&r' __enter__ps   zBuildEnvironment.__enter__cCs:|jD]*\}}|dkr*tj|dq |tj|<q dSr/)rVitemsrrOpop)r#exc_typeexc_valexc_tbvarname old_valuer&r&r'__exit__szBuildEnvironment.__exit__c Cst}t}|rt|j}|D]p}z"|t|dkrB||Wqtk r}z*|t|j d t|j dfW5d}~XYqXq||fS)zReturn 2 sets: - conflicting requirements: set of (installed, wanted) reqs tuples - missing requirements: set of reqs Nr) setrr@findrparseaddrstrargsas_requirement)r#reqsmissing conflictingwsreqer&r&r'check_requirementss  z#BuildEnvironment.check_requirementsc Csb|j|}|jrtd|_|s"dStjtjtdddd|jdg}t t j krZ| ddD]:}t|j|}|d |d d d t|pd hfq^|j} | r|d| dg| ddD]} |d| gqn | d|jD]} |d| gq|jD]} |d| gq|jr*| d| d ||t|} t|| dW5QRXdS)NTinstallz--ignore-installedz --no-userz--prefixz--no-warn-script-locationz-v) no_binary only_binaryz--_-,z:none:z-irrez--extra-index-urlz --no-indexz --find-linksz--trusted-hostz--pre)spinner)r>rAssertionErrorsys executablerrdirname pip_locationloggergetEffectiveLevelloggingDEBUGrDgetattrformat_controlrEreplacer0sorted index_urls find_links trusted_hostsallow_all_prereleasesr r )r#finder requirementsprefix_as_stringmessagerrkrformatsr extra_indexlinkhostrzr&r&r'install_requirementssJ            z%BuildEnvironment.install_requirementsN) r)r*r+__doc__r(r\rdrsrr&r&r&r'r,3s 9r,c@s8eZdZdZddZddZddZdd Zd d Zd S) NoOpBuildEnvironmentz5A no-op drop-in replacement for BuildEnvironment cCsdSr/r&r#r&r&r'r(szNoOpBuildEnvironment.__init__cCsdSr/r&rr&r&r'r\szNoOpBuildEnvironment.__enter__cCsdSr/r&)r#r_r`rar&r&r'rdszNoOpBuildEnvironment.__exit__cCsdSr/r&rr&r&r'cleanupszNoOpBuildEnvironment.cleanupcCs tdSr/)NotImplementedError)r#rrrrr&r&r'rsz)NoOpBuildEnvironment.install_requirementsN) r)r*r+rr(r\rdrrr&r&r&r'rs r)*rrrr|rK collectionsrdistutils.sysconfigr sysconfigrZpip._vendor.pkg_resourcesrrrpiprrpip._internal.cli.spinnersr pip._internal.utils.subprocessr pip._internal.utils.temp_dirr r pip._internal.utils.typingr typingrrrrr"pip._internal.index.package_finderr getLoggerr)rrobjectr,rr&r&r&r's*