|53WvUddlmZddlZddlZddlZddlZddlZddlZddlm Z m Z ddl m Z ddl mZddlmZddlmZdd lmZmZmZmZmZmZgd ZejeZeed d Zd e d<ej!dkZ"d6dZ#e#Z$e$sddlm%Z%e"r e$sej&Z'nej(Z'd6dZ)d7dZ*ej+d6dZ,ej+d6dZ-ej+d6dZ.ej+d6dZ/ej+d6dZ0ej+d8d"Z1d9d#Z2ej+d$dddd%d:d+Z3 d;dd3Z7d=d4Z8d=d5Z9dS)?) annotationsN) 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_schemer rr 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_DEFAULT/builddir/build/BUILD/imunify360-venv-2.6.2/opt/imunify360/venv/lib/python3.11/site-packages/pip/_internal/locations/__init__.py_should_use_sysconfigr&/s   #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_44860r1Ms[ :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)r2r- 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..msT  _ L 78J K Kr$) unix_prefix unix_home)r.r+allr*s@r%_looks_like_red_hat_librDesQ :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_schemerHts+: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.rJdistutils.distrKfinalize_options exec_prefixospathnormpathsysprefix)rJrKcmds r%_looks_like_red_hat_schemerU|s211111++++++ ',,.. ! !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)r2expandr6r7)rr! get_pathsr/pathss 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)rXc3RK|]"}d|vod|vo|d V#dS)Librz site-packagesN)endswith)r>ps r%r@z1_looks_like_msys2_mingw_scheme..sW  QI5A:Iajj.I.I*Ir$c3(K|] }|V dSr=r#)r>keyr[s r%r@z1_looks_like_msys2_mingw_scheme..s'??%*??????r$r-r7)r!rYrCrZs@r%_looks_like_msys2_mingw_schemerfs]  U 3 3 3E ????(>???  r$old pathlib.PathnewrdNonecVd}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)rgrird issue_urlmessages r%_warn_mismatchedrqs5:I   JJicBBBBBr$c:||krdSt|||dS)NFrdT)rq)rgrirds r%_warn_if_mismatchrts* czzuS#3'''' 4r$FuserhomerootrSrvrw str | NonerxrSc|gd}ttd|||||dS)N)zAdditional context:z user = %rz home = %rz root = %rz prefix = %r )rlrmrnjoin)rvrwrxrSpartss r% _log_contextr~sC   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)rvrwrxrrSpypyrepythonheadersr-rr r)usrlocalrrT) check_home)rinclude platincludezscheme.)ignore_config_filesc3LK|]}|t|kVdSr=)r )r>r? default_oldrgs r%r@zget_scheme..hs4 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_inrsru)!r r_USE_SYSCONFIGr(rpathlibPathr rRimplementationnameparent startswithrrDrrr1r\rr}lenrUrHrfr!is_python_buildappenddistutils_schemeanyrrqr~)rrvrwrxrrSriwarning_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_buildrdrrgs @@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_prefixrs)r rrr(rtrrr~rirgs r%rr}sd  # % %C  # % %Cc**GL,=,=<PPP Jr$c8tjddjS)NT)rv)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)rH)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.r7rs) r rrr(rrtrrr~rs 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-rs) r rrrr(rrtrrr~)rir(rgs r%rrs  " "C  * " "C+C00 c**GL,=,=9MMM Jr$)rr)r2r3rr)rgrhrirhrdrrrj)rgrhrirhrdrrr) rvrrwryrxryrSryrrj)FNNFN)rrrvrrwryrxryrrrSryrr)rr)rrrr): __future__r functoolsloggingrOrrRr!pip._internal.models.schemerrpip._internal.utils.compatrpip._internal.utils.deprecationrpip._internal.utils.virtualenvrrr baser r r rrr__all__ getLogger__name__rlr r__annotations__ version_infor"r&rr(WARNINGrnDEBUGr1r:cacherDrHrUr\rfrqrtr~rrrrrrr#r$r%rs"""""""  ;;;;;;;;......666666CCCCCC     8 $ $73 e44 4444)W4 R R R R'&(($.$oOOmO , , , ,JJJJ      OOOO &  H H H H " CCCC  LLLLLL( cccccL8888"          r$