\h<rUddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZddlmZdd lmZmZmZmZmZmZgd Zej>e Z!e"ed d Z#e$e%d <ejLdk\Z'de(fdZ)e)Z*e*sddlm+Z+e're*s ejXZ-n ej\Z-de(fdZ/dee$e$fde(fdZ0ejbdde(fdZ2ejbdde(fdZ3ejbdde(fdZ4ejbdde(fdZ5ejbdde(fdZ6de e$de e$ddffdZ7ejbddejpdejpde$ddfd Z9dejpdejpde$de(fd!Z:ejbdd"dddd#d$e(d%e e$d&e e$d'e e$ddf d(Z; d2d)e$d$e(d%e e$d&e e$d*e(d'e e$defd+Zd.e$de(fd/Z?de$fd0Z@de$fd1ZAy)3N)AnyDict GeneratorOptionalTuple) SCHEME_KEYSScheme)WINDOWS) deprecated)running_under_virtualenv) _sysconfig)USER_CACHE_DIRget_major_minor_versionget_src_prefixis_osx_framework site_packages user_site) rget_bin_prefix get_bin_userr get_platlib get_purelib get_schemerrr platlibdirlib _PLATLIBDIR) returnc>tttdtS)axThis function determines the value of _USE_SYSCONFIG. By default, pip uses sysconfig on Python 3.10+. But Python distributors can override this decision by setting: sysconfig._PIP_USE_SYSCONFIG = True / False Rationale in https://github.com/pypa/pip/issues/10647 This is a function for testability, but should be constant during any one run. _PIP_USE_SYSCONFIG)boolgetattr sysconfig_USE_SYSCONFIG_DEFAULTc/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.py_should_use_sysconfigr).s  #79OP QQr' _distutilscHddlm} |dd}|dk(S#t$rYywxYw)zsThe resolution to bpo-44860 will change this incorrect platlib. See . rINSTALL_SCHEMES unix_userplatlibFz $usersite)distutils.command.installr.KeyError)r.unix_user_platlibs r(_looks_like_bpo_44860r4Ls= :+K8C  ++ s  !!schemec|d}d|vr|jddtd}d|vry|jdd}|jdd|d k(S) Nr0z /$platlibdir///lib64/Fz/lib/z $platbase/z$base/purelib)replacer)r5r0 unpatcheds r(+_looks_like_red_hat_patched_platlib_purelibr<ZseYG'!///Q{m13EF 73I   \8 4y8I IIr')maxsizec8ddlmtfddDS)zRed Hat patches platlib in unix_prefix and unix_home, but not purelib. This is the only way I can see to tell a Red Hat-patched Python. rr-c3FK|]}|vxrt|ywN)r<).0kr.s r( z*_looks_like_red_hat_lib..ls9  _ L 78J K Ls!) unix_prefix unix_home)r1r.allr-s@r(_looks_like_red_hat_librGds$ : . r'c"ddlm}d|vxrd|vS)z#Debian adds two additional schemes.rr- deb_system unix_local)r1r.r-s r(_looks_like_debian_schemerKss: ? * N|/NNr'cLddlm}ddlm}||}|j |j t jjtj dk(xr=|jt jjtjdk(S)a\Red Hat patches ``sys.prefix`` and ``sys.exec_prefix``. Red Hat's ``00251-change-user-install-location.patch`` changes the install command's ``prefix`` and ``exec_prefix`` to append ``"/local"``. This is (fortunately?) done quite unconditionally, so we create a default command object without any configuration to detect this. r)install) Distributionz/local) r1rMdistutils.distrNfinalize_options exec_prefixospathnormpathsysprefix)rMrNcmds r(_looks_like_red_hat_schemerX{s{2+|~&C bgg..s?@GG B JJRWW--cjj9:&A Ar'cty tjdd}d|dvxrdtvS#t$rYywxYw)zSlackware patches sysconfig but fails to patch distutils and site. Slackware changes sysconfig's user scheme to use ``"lib64"`` for the lib path, but does not do the same to the site module. F posix_user)r5expandr8r9)rr$ get_pathsr2pathss r(_looks_like_slackware_schemer_sT##<F i( ( GYi-GG s 1 ==chtjddtdfddDDS)aMSYS2 patches distutils and sysconfig to use a UNIX-like scheme. However, MSYS2 incorrectly patches sysconfig ``nt`` scheme. The fix is likely going to be included in their 3.10 release, so we ignore the warning. See msys2/MINGW-packages#9319. MSYS2 MINGW's patch uses lowercase ``"lib"`` instead of the usual uppercase, and is missing the final ``"site-packages"``. ntF)r[c3XK|]"}d|vxrd|vxr|jd $yw)Librz site-packagesN)endswith)rAps r(rCz1_looks_like_msys2_mingw_scheme..s9  QI5A:Iajj.I*IIs(*c3(K|] }| ywr@r&)rAkeyr^s r(rCz1_looks_like_msys2_mingw_scheme..s?%*?sr0r9)r$r\rFr]s@r(_looks_like_msys2_mingw_schemeris7   U 3E ?(>? r'partsc#Ktjd}ttdd}|r|r|j |s |Ed{y|D](}|j |r|ddt |z }|*y73w)N LDVERSIONabiflagsr)r$get_config_varr#rUrdlen)rj ldversionrmparts r( _fix_abiflagsrrs((5IsJ-H HI,>,>x,H == #-1s8},.D  sAA9A74A9oldnewrgcHd}d}tjt|||||y)Nz(https://github.com/pypa/pip/issues/10151zSValue for %s does not match. Please report this to <%s> distutils: %s sysconfig: %s)loggerlog_MISMATCH_LEVEL)rsrtrg issue_urlmessages r(_warn_mismatchedr{s):I   JJicBr'c,||k(ryt|||y)NFrgT)r{)rsrtrgs r(_warn_if_mismatchr~s czS#3' r'FuserhomerootrVrrrrVcfgd}tjtdj|||||y)N)zAdditional context:z user = %rz home = %rz root = %rz prefix = %r )rvrwrxjoin)rrrrVrjs r( _log_contextrs* E JJ % 0$dFKr' dist_nameisolatedc ftj||||||}tr|Stj||||||g}tD]}t j t|} t j t||} | | k(rHtjjdk(xr_|duxrY|dvxrS| j| jk(xr8| jjdxr| jjd} | r|xr]txrQ|dk(xrJ| jj| jk(xr%| jjjd} | r.|dk(r tr?|xr:|dk(xr3t xr*tj dk\xrt"dk7xr t%} | r|xr|dvxrt xr t'}|r|xs|xs|xs t) xr| j*d d d k(xrrt-| j*d kDxrX| j*d d k(xrDt-| j*d kxs| j*d dk7xrt/xs t1}|rEtj dkxr:t xr1|dvxr+t3t5| j*| j*k(}|rtxr|dvxr t7}|rt9j:dxr t xr|dv}|r|j=| | d|f|sStj>||||||dtAfdtDrtCdddS|D]\} } }tE| | |tG||||S)N)rrrrrVpypyrhpythonheadersr0)r rr r)usrlocalrr)r)rr0r9T) check_home)rinclude platincludezscheme.)ignore_config_filesc3BK|]}|t|k7ywr@)r#)rArB default_oldrss r(rCzget_scheme..s B;q>WS!_ , BszConfiguring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621)reason replacementgone_inr}r)$rr_USE_SYSCONFIGr+rpathlibPathr#rUimplementationnameparent startswithrrGr version_inforr4r_r rjrorXrKtuplerrrir$is_python_buildappenddistutils_schemeanyr r{r)rrrrrrVrtwarning_contextsrBold_vnew_vskip_pypy_special_case$skip_osx_framework_user_special_caseskip_bpo_44860skip_slackware_user_schemeskip_linux_system_special_caseskip_sysconfig_abiflag_bugskip_msys2_mingw_bugskip_cpython_buildrgrrss @@r(rrsE        C        C o? WS!_- WS!_- E>     # #v - .D  .++ .  , . %%h/  .  %%f-  "   7 " 7Y 7 ##u||3 7 !!,,X6 - 0  >57   (Y (  (  F* (u$  ( &'     /++ /  /-. # &  EEE+C+E F N Aa $44 NEKK 1$ N A%' NU[[!A%BQ7)B  N ,-L1J1L ' *    v % A  A66 AmEKK01U[[@ # &   X33 X8V8X    % % 6 ;  ;::   } =>_o?b  --    K Bk BBL   .0uc3/0dD@ Jr'ctj}tr|Stj}t t j |t j |dr t|S)N bin_prefixr})rrrr+r~rrrrtrss r(rrsN  # # %C  # # %Cc*GLL,=<P Jr'cDtjddjS)NT)r)rrscriptsr&r'r(rrs  $ / 7 77r'valuec&tsy|dk(ryy)aCheck if the value is Debian's APT-controlled dist-packages. Debian's ``distutils.sysconfig.get_python_lib()`` implementation returns the default package path controlled by APT, but does not patch ``sysconfig`` to do the same. This is similar to the bug worked around in ``get_scheme()``, but here the default is ``deb_system`` instead of ``unix_local``. Ultimately we can't do anything about this Debian bug, and this detection allows us to skip the warning when needed. Fz/usr/lib/python3/dist-packagesT)rK)rs r($_looks_like_deb_system_dist_packagesrs % & 00 r'ctj}tr|Stj}t |r|St t j|t j|dr t|S)z,Return the default pure-Python lib location.r9r}) rrrr+rr~rrrrs r(rrs[  "C  "C+C0 c*GLL,=9M Jr'ctj}tr|Sddlm}|j}t |r|St tj|tj|dr t|S)z0Return the default platform-shared lib location.r r*r0r}) rrrrr+rr~rrr)rtr+rss r(rrs`  "C  * "C+C0 c*GLL,=9M Jr')FNNFN)B functoolsloggingrRrrUr$typingrrrrrpip._internal.models.schemerr pip._internal.utils.compatr pip._internal.utils.deprecationr pip._internal.utils.virtualenvr rrbaserrrrrr__all__ getLogger__name__rvr#rstr__annotations__rr%r"r)rr+WARNINGrxDEBUGr4r< lru_cacherGrKrXr_rirrrr{r~rrrrrrrr&r'r(rs`  88;.6C    8 $3 e4 S4))W4 Rt R'(.ooOmmO ,t ,JS#XJ4JT"  # T"O4O#OT"D#&T" Hd H# HT"#" s  #tT/(B  T"C',,CW\\C3C4C#C7<<gllCDT" L L 3-L 3- L SM L  L#L( oo o 3-o 3- o  o SM o od8c8" S  S r'