0i7ddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZmZddlmZddlmZddlmZddlmZe j2d Ze j6eZGd d e j:Zddd ZGd deZ Gdde j:Z!Gdde!Z"Gdde!Z#ejHddZ%ddZ&dd gZ'y)) annotationsN) CollectionMapping)_ctx)run_subprocess)FailedProcessError)check_dependency)pipuvcfeZdZdZeej ddZej ddZy) IsolatedEnvzIsolated build environment ABC.cy)z2The Python executable of the isolated environment.Nselfs 8/opt/hc_python/lib/python3.12/site-packages/build/env.pypython_executablezIsolatedEnv.python_executable cy)zBGenerate additional env vars specific to the isolated environment.Nrrs rmake_extra_environzIsolatedEnv.make_extra_environ%rrNreturnstr)rzMapping[str, str] | None) __name__ __module__ __qualname____doc__propertyabcabstractmethodrrrrrrrsC) AA QQrrc ddlm}ddlm} t t |j jdd|i|}|y||j||k\S#t$rYywxYw) z Given a path, see if a package is present and return True if the version is sufficient for build, False if it is not, None if the package is missing. r)Versionr importlibnameNTr) packaging.versionr$_compatr&nextitermetadata distributions StopIterationversion)r'minimum_version_strdistargsr$r& distributions r_has_dependencyr3*su *"D!A!3!3!A!A!Xt!Xx!XYZ " <'' (G4G,H HH s0A A('A(cheZdZdZdd d dZd dZddZeddZeddZ dd Z dd Z y )DefaultIsolatedEnvz[ Isolated environment which supports several different underlying implementations. r  installerc||_yNr6)rr7s r__init__zDefaultIsolatedEnv.__init__Cs %.rc tjd}tjj |}||_||j dk(rt|_nt|_tjd|jjd|jj|j |S#t$r#|jt!j"wxYw)Nz build-env-prefixr zCreating isolated environment: z...)tempfilemkdtempospathrealpath_pathr7 _UvBackend _env_backend _PipBackendrlog display_namecreate Exception__exit__sysexc_inforrAs r __enter__zDefaultIsolatedEnv.__enter__Js ##<8D 77##D)DDJ ~~%$.L!$/M! HH6t7H7H7U7U6VVYZ [    $ $TZZ 0    DMM3<<> *  s B>C,C.ctjj|jr t j |jyyr9)r@rAexistsrCshutilrmtree)rargss rrKzDefaultIsolatedEnv.__exit__fs+ 77>>$** % MM$** % &rc|jS)z/The location of the isolated build environment.)rCrs rrAzDefaultIsolatedEnv.pathjszzrc.|jjS)z8The python executable of the isolated build environment.)rErrs rrz$DefaultIsolatedEnv.python_executableos  222rctjjd}d|6tjj |j j |giS|j j iS)NPATH)r@environgetpathsepjoinrE scripts_dirrNs rrz%DefaultIsolatedEnv.make_extra_environtsezz~~f% JJOOT%6%6%B%BD$IJ  ""..  rc |sytjddjdt|Dz|jj |y)at Install packages from PEP 508 requirements in the isolated build environment. :param requirements: PEP 508 requirement specification to install :note: Passing non-PEP 508 strings will result in undefined behavior, you *should not* rely on it. It is merely an implementation detail, it may change any time without warning. Nz-Installing packages in isolated environment:  c3&K|] }d| yw)z- Nr).0rs r z-DefaultIsolatedEnv.install..sMu`t[\PRSTRUh`ts)rrGr\sortedrEinstall_requirementsr requirementss rinstallzDefaultIsolatedEnv.install|sF  ADIIMu`fgs`tMuDuuv ..|sa %..  .8&33  =rr5cDeZdZUded<ded<ddZd dZed dZy) _EnvBackendrrr]cyr9rrNs rrIz_EnvBackend.createsrcyr9rrfs rrez _EnvBackend.install_requirementss3rcyr9rrs rrHz_EnvBackend.display_names#&rNrArrrjrlr)rrr__annotations__rIrer rHrrrrnrns",N &&rrnceZdZd dZej d dZej d dZed dZ d dZ ddZ e d dZ y)rFcD|j xr |j|_yr9)_has_valid_outer_pip_has_virtualenv_create_with_virtualenvrs rr:z_PipBackend.__init__s+/+D+D'D']I]I]$rctddsytj5tjdtj j d dddy dddy#1swYyxYw)z This checks for a valid global pip. Returns None if pip is missing, False if pip is too old, and True if it can be used. r z22.3Fignorez pip._vendorNT)r3warningscatch_warnings simplefilterr&util find_specrs rrvz _PipBackend._has_valid_outer_pipseuf-  $ $ &  ! !( +~~'' 6>' &>'  ' s 6A++A4cddlmdtjj duxr#t fdt ddD S)z virtualenv might be incompatible if it was installed separately from build. This verifies that virtualenv and all of its dependencies are installed as required by build. r) Requirement virtualenvNc3lK|]+}t|dkDs|djk(-yw)rN)lenr')radrr's rrcz._PipBackend._has_virtualenv..s:F 4VqZ]^_Z`cdZdK!  " "d *4Vs44zbuild[])packaging.requirementsrr&r~ranyr )rrr's @@rrwz_PipBackend._has_virtualenvsY 7~~''-T9 #F 4DvdVSTEU4VF C ?  rctjdk(rCtj\}}}t|d|j ddk\r |dk7}|rdSdSy)NDarwin. x86_64z21.0.1z20.3.0z19.1.0)platformsystemmac_verintfind)release_machineis_apple_silicon_pythons r_get_minimum_pip_version_strz(_PipBackend._get_minimum_pip_version_strsc ??  ("*"2"2"4 GQ7.W\\#./0B6+2X*='#:xHHrc|jrddl}ddl}ddlm}|j j |jj d}|ddddg}||j j d kr|jd |j|d }t|jj|_ t|jj|_yddl}|j" } |j%t'| j)|t5|\|_ |_} | rg|j7} t9d| | gst;|jdddd| gt9d| grt;|jdddddgyyy#t*j,$r'} t/j0| t3| ddd} ~ wwxYw)Nrrr%rz --activatorsz--no-setuptoolsz--no-periodic-updatez20.31.0z --no-wheelF) setup_loggingsymlinkswith_pipz7Failed to create venv. Maybe try installing virtualenv.r )rA-Imrhzpip>= setuptools uninstallz-y)rxr(rr)r&r/r$r,appendcli_runrcreatorexer script_dirr]venvrv EnvBuilder_fs_supports_symlinkrI subprocessCalledProcessErrorrlog_subprocess_errorr _find_executable_and_scriptsrr3r) rrA packagingrr&virtualenv_veroptsresultrrexcpurelibminimum_pip_version_strs rrIz_PipBackend.creates  ' ' $  *&..66y7I7I7Q7QR^7_`N!& D 1 1 9 9) DD L)''E'BF&)););%>#<#<=D  444H s)=)?(SZZ[_` A]]a@b =D "D$4g*.*K*K*M'&+! #D$:$:E5)W\]t\uUv#wx# !#D$:$:E5+W[]i#jk  00 s))#.(.ghnrr ss3*F G3"GGc tjddddd5}|jtjj |ddd |j r tjddd |jg}n|jd dg}tjd kDr|d d tjd z zgz }|dddddtjjjgz }t|tj |jy#1swYxYw#tj jwxYw)Nwz build-reqs-z.txtFzutf-8)r=suffixdeleteencodingz-mr z--pythonrr-vrhz --use-pep517z--no-warn-script-locationz --no-compilez-r)r>NamedTemporaryFilewriter@linesepr\rvrL executablerr verbosityrAabspathr'runlink)rrgreq_filecmds rrez _PipBackend.install_requirementss ( (]6Z_jq rv~ NN2::??<8 9s %((~~tUJ@V@VW--ue<~~!!C4>>A#567899 + .  C 3  IIhmm $/s r. IIhmm $s/DB(D'D$'!Ec"|jrdSdS)Nzvirtualenv+pipzvenv+pip)rxrs rrHz_PipBackend.display_name#s#'#?#?OZOrN)rrj)r bool | Nonerboolrrrrl)rrrr: functoolscached_propertyrvrw staticmethodrrIrer rHrrrrFrFsr^*      6lp%8PPrrFc.eZdZddZddZeddZy)rDcddl}||_ ddl}|j|_|jtdj|jt|j\|_|_}y#t t f$rGtjd}|d}t|dtjd|||_YwxYw)Nrr zuv executable not foundzUsing external uv from Fr)r _env_pathr find_uv_bin_uv_binModuleNotFoundErrorFileNotFoundErrorrRwhich RuntimeErrorrrGrrrIrrr])rrArr uv_binmsgrs rrIz_UvBackend.create)s " >>+DL !5!7%HOOPTP^P^_6RSWSaSa6b3 0!$%67 "\\$'F~/"3'T1 HH.vh7 8!DL "sA>>ACCc|jdg}tjdkDr'|ddtdtjdz zgz }t g|d|it j d|jiy) Nr rrrrh VIRTUAL_ENV)env)rrrminrr@rYr)rrgrs rrez_UvBackend.install_requirements>sx||U# >>A  ac!T^^a%7889:; ;C77i7,7=j =jM[_[i[i=jkrcy)Nzvenv+uvrrs rrHz_UvBackend.display_nameDsrNrrrlr)rrrrIrer rHrrrrDrD(s"c*l rrDc>tjdk7rytjd5}|d} tj|j|tj | dddy#t ttf$r YdddywxYw#1swYyxYw)z%Return True if symlinks are supportedntTzbuild-symlink-r<z-bNF) r@r'r>rsymlinkrOSErrorNotImplementedErrorAttributeError)tmp_filedests rrrIs ww$  $ $,< =2  JJx}}d + IIdO > = ,n=  > =   > =s.B5A1'B1BBBBBc2tjj}||d<tj}d|vrtjd|}nNd|vrtjd|}n2d|vrtjd|}ntj|}t j j|dt jd k(rd nd }t j j|sd |d }t|||d|dfS)z Detect the Python executable and script folder of a virtual environment. :param path: The location of the virtual environment :return: The Python executable, script folder, and purelib folder baser)schemevars posix_local posix_prefixosx_framework_library)rscriptsrz python.exepythonz0Virtual environment creation failed, executable z missingr) sysconfigget_config_varscopyget_scheme_names get_pathsr@rAr\r'rQr)rA config_vars scheme_namespathsrrs rrr[s++-224KK--/L ##6 D , & ##> L L 0 ##> L##5eI.4 U]^J 77>>* %@ HU3 uY'y)9 99rr9)r'rr0z str | Noner1rkrrr)rArrztuple[str, str, str])( __future__rr!rimportlib.utilr&r@rrRrrLrr>typingr{collections.abcrrrrr _exceptionsr _utilr Literalriget_args INSTALLERSProtocolrr3r5rnrFrDcacherr__all__rrrrs"     / +# NN; ' V__Y '  Q&// QI(K=K=\ '&// 'MP+MP`B "(:X r