_tGUddlmZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z m Z ddl mZddlmZddlmZdd lmZdd lmZmZmZmZmZmZgd ZejeZe ed d Z!de"d<ej#dkZ$d7dZ%e%Z&e&sddlm'Z'e$r e&sej(Z)nej*Z)d7dZ+d8dZ,ej-d7dZ.ej-d7dZ/ej-d7dZ0ej-d7dZ1ej-d7dZ2ej-d9d#Z3d:d$Z4ej-d%dddd&d;d,Z5 dd1Z7d>d2Z8d?d4Z9d>d5Z:d>d6Z;dS)@) annotationsN)Any) SCHEME_KEYSScheme)WINDOWS) deprecated)running_under_virtualenv) _sysconfig)USER_CACHE_DIRget_major_minor_versionget_src_prefixis_osx_framework site_packages user_site) r get_bin_prefix get_bin_userr get_platlib get_purelib get_schemerrr platlibdirlibstr _PLATLIBDIR) returnboolcRtttdtS)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)rgetattr sysconfig_USE_SYSCONFIG_DEFAULTr/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pip/_internal/locations/__init__.py_should_use_sysconfigr'0s   #79OPP Q QQr% _distutilsc\ddlm} |dd}n#t$rYdSwxYw|dkS)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_44860r2Ns[ :99999+K8C uu  ++s  %%schemedict[str, str]c|d}d|vr|ddtd}d|vrdS|dd}|dd|d kS) Nr.z /$platlibdir///lib64/Fz/lib/z $platbase/z$base/purelib)replacer)r3r. unpatcheds r&+_looks_like_red_hat_patched_platlib_purelibr;\syYG'!!///3E{3E3E3EFFu 733I   \8 4 4y8I IIr%cFddlmtfddDS)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+c3JK|]}|vot|VdSN)r;).0kr,s r& z*_looks_like_red_hat_lib..nsT  _ L 78J K Kr%) unix_prefix unix_home)r/r,allr+s@r&_looks_like_red_hat_librEfsQ :99999 .  r%cddlm}d|vod|vS)z#Debian adds two additional schemes.rr+ deb_system unix_local)r/r,r+s r&_looks_like_debian_schemerIus+:99999 ? * N|/NNr%c<ddlm}ddlm}||}||jt jtjdko4|j t jtj dkS)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) r/rKdistutils.distrLfinalize_options exec_prefixospathnormpathsysprefix)rKrLcmds r&_looks_like_red_hat_schemerV}s211111++++++w||~~&&C bg..s??GGGG B JRW--cj99AAA Ar%ctdS tjdd}n#t$rYdSwxYwd|dvodtvS)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. NF posix_user)r3expandr7r8)rr" get_pathsr0pathss r&_looks_like_slackware_schemer]sgu#<FFF uu i( ( GYi-GGs " 00cztjddtdfddDDS)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)rYc3RK|]"}d|vod|vo|d V#dS)Librz site-packagesN)endswith)r?ps r&rAz1_looks_like_msys2_mingw_scheme..sW  QI5A:Iajj.I.I*Ir%c3(K|] }|V dSr>r$)r?keyr\s r&rAz1_looks_like_msys2_mingw_scheme..s'??%*??????r%r.r8)r"rZrDr[s@r&_looks_like_msys2_mingw_schemergs]  U 3 3 3E ????(>???  r%old pathlib.PathnewreNonecVd}d}tt|||||dS)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)rhrjre issue_urlmessages r&_warn_mismatchedrrs5:I   JJicBBBBBr%c:||krdSt|||dS)NFreT)rr)rhrjres r&_warn_if_mismatchrus* czzuS#3'''' 4r%FuserhomerootrTrwrx str | NoneryrTc|gd}ttd|||||dS)N)zAdditional context:z user = %rz home = %rz root = %rz prefix = %r )rmrnrojoin)rwrxryrTpartss r& _log_contextrsC   E JJ % 0 0$dFKKKKKr% dist_nameisolatedrc Ptj||||||}tr|Stj||||||g}tD]Y}t jt|} t jt||} | | krNtj j dkoK|duoG|dvoC| j | j ko3| j do| j d} | r|oGto9|dko3| j j | j ko| j j d} | r|dkrtr|o&|dko t ot dko t#} | rB|o|dvot o t%}|rb|p|p|p t' o| jdd d komt+| jdkoU| jdd koDt+| jd kp| jd d kot-p t/}|rto|dvo t1}|rt3jdo t o|dv}|r>|| | d|f[|sStj||||||dt;fdtDrt=dddS|D]\} } }t?| | |tA||||S)N)rwrxryrrTpypyrfpythonheadersr.rr r)usrlocalrrT) check_home)rinclude platincludezscheme.)ignore_config_filesc3LK|]}|t|kVdSr>)r!)r?r@ default_oldrhs r&rAzget_scheme..is4 B B;q>WS!__ , B B B B B Br%zConfiguring 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_inrtrv)!r r_USE_SYSCONFIGr)rpathlibPathr!rSimplementationnameparent startswithrrErrr2r]r r~lenrVrIrgr"is_python_buildappenddistutils_schemeanyrrrr)rrwrxryrrTrjwarning_contextsr@old_vnew_vskip_pypy_special_case$skip_osx_framework_user_special_caseskip_bpo_44860skip_slackware_user_schemeskip_linux_system_special_caseskip_msys2_mingw_bugskip_cpython_buildrerrhs @@r&rrsq         C         C c?c? WS!__-- WS!__-- E>>    #v - .D  .++ .  , . %%h//  .  %%f--  "    7 "" 7Y 7 #u|3 7 !,,X66 - 0   >>577>   (Y (  (u$ (&''      /++ /  /-.. # &   EEE+C+E+E F N AaC $44 NEK  1$ N A%' NU[!!A%BQ7)B  N ,--L1J1L1L ' *    X33 X8V8X8X      % 6 6 6 ;  ;::    }}} =>>>>  -    K B B B B Bk B B BBB L   .00uc3/////dD@@@@ Jr%ctj}tr|Stj}t t j|t j|drt|S)N bin_prefixrt)r rrr)rurrrrjrhs r&rr~sd  # % %C  # % %Cc**GL,=,=<PPP Jr%c8tjddjS)NT)rw)r rscriptsr$r%r&rrs  $ / / / 77r%valuec6tsdS|dkrdSdS)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)rI)rs r&$_looks_like_deb_system_dist_packagesrs- % & &u 000t 5r%ctj}tr|Stj}t |r|St t j|t j|drt|S)z,Return the default pure-Python lib location.r8rt) r rrr)rrurrrrs r&rrsy  " "C  " "C+C00 c**GL,=,=9MMM Jr%ctj}tr|Sddlm}|j}t |r|St tj|tj|drt|S)z0Return the default platform-shared lib location.r r(r.rt) r rrrr)rrurrr)rjr)rhs r&rrs  " "C  * " "C+C00 c**GL,=,=9MMM Jr%)rr)r3r4rr)rhrirjrirerrrk)rhrirjrirerrr) rwrrxrzryrzrTrzrrk)FNNFN)rrrwrrxrzryrzrrrTrzrr)rr)rrrr)< __future__r functoolsloggingrPrrSr"typingrpip._internal.models.schemerrpip._internal.utils.compatrpip._internal.utils.deprecationrpip._internal.utils.virtualenvr rr baser r rrrr__all__ getLogger__name__rmr!r__annotations__ version_infor#r'rr)WARNINGroDEBUGr2r;cacherErIrVr]rgrrrurrrrrrrr$r%r&rs"""""""  ;;;;;;;;......666666CCCCCC     8 $ $73 e44 4444)W4 R R R R'&(($.$oOOmO , , , ,JJJJ      OOOO &  H H H H " CCCC  LLLLLL( cccccL8888"          r%