U ÀÒ.e]ã@sdZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZddlmZddlmZdd lmZdd lmZdd lmZerÄdd lmZmZmZmZmZdd l m!Z!e "e#¡Z$Gdd„dƒZ%Gdd„de&ƒZ'Gdd„de'ƒZ(dS)z;Build Environment used for isolation during sdist building éN)Ú OrderedDict)Úget_python_lib)Ú get_paths)Ú RequirementÚVersionConflictÚ WorkingSet)Ú__file__)Úcall_subprocess)Ú TempDirectory)ÚMYPY_CHECK_RUNNING)Ú open_spinner)ÚTupleÚSetÚIterableÚOptionalÚList)Ú PackageFinderc@seZdZdd„ZdS)Ú_PrefixcCsj||_d|_ttjdkrdnd||dœd�d|_td|d�}td|d�}||kr\|g|_n ||g|_dS) NFÚntZ posix_prefix)ÚbaseZplatbase)ÚvarsZscripts)Ú plat_specificÚprefixT)ÚpathÚsetuprÚosÚnameÚbin_dirrÚlib_dirs)ÚselfrZpurelibZplatlib©r ú;/usr/lib/python3.8/site-packages/pip/_internal/build_env.pyÚ__init__!sþý   z_Prefix.__init__N)Ú__name__Ú __module__Ú __qualname__r"r r r r!rsrc@s@eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dS)ÚBuildEnvironmentzFCreates and manages an isolated environment to install build deps c sòtdd�ˆ_t‡fdd„dDƒƒˆ_gˆ_gˆ_ttˆj ¡ƒƒD] }ˆj  |j ¡ˆj  |j ¡qBdd„t dd �t d d �fDƒ}tj ˆjjd ¡ˆ_tj ˆj¡s°t ˆj¡ttj ˆjd ¡d ƒ�"}| t d¡j|ˆjd�¡W5QRXdS)Nz build-env)Zkindc3s(|] }|ttj ˆjj|¡ƒfVqdS©N)rrrÚjoinÚ _temp_dir©Ú.0r©rr r!Ú ;sÿz,BuildEnvironment.__init__..)ZnormalZoverlaycSsh|]}tj |¡’qSr )rrÚnormcase)r+Úsiter r r!Ú Isz,BuildEnvironment.__init__..F)rTr/zsitecustomize.pyÚwaŸ 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)rÚ _prefixesÚ _bin_dirsÚ _lib_dirsÚreversedÚlistÚvaluesÚappendrÚextendrrrrr(Ú _site_dirÚexistsÚmkdirÚopenÚwriteÚtextwrapÚdedentÚformat)rrr2Úfpr r,r!r"7s0  þ þÿ ÿçzBuildEnvironment.__init__cCsndd„dDƒ|_|jdd…}|jd}|r>| | tj¡¡|jg}tj tj  |¡dtj  |¡dœ¡dS)NcSsi|]}|tj |d¡“qSr')rÚenvironÚgetr*r r r!Ú osÿz.BuildEnvironment.__enter__..)ÚPATHZPYTHONNOUSERSITEZ PYTHONPATHrGÚ1) Ú _save_envr4r:ÚsplitrÚpathsepr;rDÚupdater()rrZold_pathZ pythonpathr r r!Ú __enter__nsþ   ýzBuildEnvironment.__enter__cCs:|j ¡D]*\}}|dkr*tj |d¡q |tj|<q dSr')rIÚitemsrrDÚpop)rÚexc_typeÚexc_valÚexc_tbZvarnameÚ old_valuer r r!Ú__exit__�szBuildEnvironment.__exit__cCs|j ¡dSr')r)Úcleanupr,r r r!rUˆszBuildEnvironment.cleanupc Cs˜tƒ}tƒ}|r�t|jƒ}|D]p}z"| t |¡¡dkrB| |¡Wqtk rŒ}z*| t|j d  ¡ƒt|j dƒf¡W5d}~XYqXq||fS)z–Return 2 sets: - conflicting requirements: set of (installed, wanted) reqs tuples - missing requirements: set of reqs Nré) Úsetrr5ÚfindrÚparseÚaddrÚstrÚargsZas_requirement)rZreqsZmissingZ conflictingZwsZreqÚer r r!Úcheck_requirementsŒs  ÿz#BuildEnvironment.check_requirementsc Csb|j|}|jrt‚d|_|s"dStjtj t¡dddd|jdg}t   ¡t j krZ|  d¡dD]:}t|j|ƒ}| d | d d ¡d  t|pŽd hƒ¡f¡q^|j} | rØ| d| dg¡| dd…D]} | d| g¡qÂn |  d¡|jD]} | d| g¡qè|jD]} | d| g¡�q|j�r*|  d¡|  d ¡| |¡t|ƒ�} t|| d�W5QRXdS)NTZinstallz--ignore-installedz --no-userz--prefixz--no-warn-script-locationz-v)Z no_binaryZ only_binaryz--Ú_ú-ú,z:none:z-irrVz--extra-index-urlz --no-indexz --find-linksz--trusted-hostz--pre)Úspinner)r3rÚAssertionErrorÚsysÚ executablerrÚdirnameÚ pip_locationÚloggerZgetEffectiveLevelÚloggingÚDEBUGr9ÚgetattrÚformat_controlr:Úreplacer(ÚsortedÚ index_urlsZ find_linksZ trusted_hostsZallow_all_prereleasesr r )rÚfinderÚ requirementsZprefix_as_stringÚmessagerr\rlZformatsroZ extra_indexÚlinkZhostrbr r r!Úinstall_requirementsŸsJ   ý  ÿ       z%BuildEnvironment.install_requirementsN) r#r$r%Ú__doc__r"rMrTrUr^rtr r r r!r&3s7r&c@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) ÚNoOpBuildEnvironmentz5A no-op drop-in replacement for BuildEnvironment cCsdSr'r r,r r r!r"ÐszNoOpBuildEnvironment.__init__cCsdSr'r r,r r r!rMÓszNoOpBuildEnvironment.__enter__cCsdSr'r )rrPrQrRr r r!rTÖszNoOpBuildEnvironment.__exit__cCsdSr'r r,r r r!rUÙszNoOpBuildEnvironment.cleanupcCs tƒ‚dSr')ÚNotImplementedError)rrprqrrrr r r!rtÜsz)NoOpBuildEnvironment.install_requirementsN) r#r$r%rur"rMrTrUrtr r r r!rvÌs rv))rurirrdr@Ú collectionsrZdistutils.sysconfigrZ sysconfigrZpip._vendor.pkg_resourcesrrrZpiprrgZpip._internal.utils.subprocessr Zpip._internal.utils.temp_dirr Zpip._internal.utils.typingr Zpip._internal.utils.uir Útypingr rrrrZpip._internal.indexrZ getLoggerr#rhrÚobjectr&rvr r r r!Ús*