hM:|UddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z ddl m Z mZddlmZddlmZddlmZddlmZdd lmZmZmZmZmZmZgd Zeje Z!e"ed d Z#e$e%d <ej&dkZ'de(fdZ)e)Z*e*sddlm+Z+e'r e*sej,Z-nej.Z-de(fdZ/dee$e$fde(fdZ0ej1dde(fdZ2ej1dde(fdZ3ej1dde(fdZ4ej1dde(fdZ5ej1dde(fdZ6de e$de e$ddffdZ7ej1ddej8dej8de$ddfd Z9dej8dej8de$de(fd!Z:ej1dd"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$fd1ZAdS)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) returncRtttdtS)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_DEFAULT/builddir/build/BUILD/imunify360-venv-2.5.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_44860r4Ls[ :99999+K8C uu  ++s  %%schemec|d}d|vr|ddtd}d|vrdS|dd}|dd|d kS) Nr0z /$platlibdir///lib64/Fz/lib/z $platbase/z$base/purelib)replacer)r5r0 unpatcheds r(+_looks_like_red_hat_patched_platlib_purelibr<ZsyYG'!!///3E{3E3E3EFFu 733I   \8 4 4y8I IIr')maxsizecFddlmtfddDS)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..lsT  _ L 78J K Kr') unix_prefix unix_home)r1r.allr-s@r(_looks_like_red_hat_librGdsQ :99999 .  r'cddlm}d|vod|vS)z#Debian adds two additional schemes.rr- deb_system unix_local)r1r.r-s r(_looks_like_debian_schemerKss+: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) r1rMdistutils.distrNfinalize_options exec_prefixospathnormpathsysprefix)rMrNcmds r(_looks_like_red_hat_schemerX{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)r5expandr8r9)rr$ get_pathsr2pathss 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)r[c3RK|]"}d|vod|vo|d V#dS)Librz site-packagesN)endswith)rAps r(rCz1_looks_like_msys2_mingw_scheme..sW  QI5A:Iajj.I.I*Ir'c3(K|] }|V dSr@r&)rAkeyr^s r(rCz1_looks_like_msys2_mingw_scheme..s'??%*??????r'r0r9)r$r\rFr]s@r(_looks_like_msys2_mingw_schemeris]  U 3 3 3E ????(>???  r'partsc#Ktjd}ttdd}|r|r||s |Ed{VdS|D]5}||r|ddt |z }|V6dS)N LDVERSIONabiflagsr)r$get_config_varr#rUrdlen)rj ldversionrmparts r( _fix_abiflagsrrs(55IsJ--H HI,>,>x,H,H == # # /-1s8}},-.D r'oldnewrgcVd}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)rsrtrg issue_urlmessages r(_warn_mismatchedr{s5:I   JJicBBBBBr'c:||krdSt|||dS)NFrgT)r{)rsrtrgs r(_warn_if_mismatchr~s* czzuS#3'''' 4r'FuserhomerootrVrrrrVc|gd}ttd|||||dS)N)zAdditional context:z user = %rz home = %rz root = %rz prefix = %r )rvrwrxjoin)rrrrVrjs r( _log_contextrsC   E JJ % 0 0$dFKKKKKr' dist_nameisolatedc ptj||||||}tr|Stj||||||g}tD]i}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|o6|dko0t o(tjdkot"dko t%} | rR|o|dvot o t'}|rr|p|p|p t) o| jd d d komt-| jd koU| jd d koDt-| jd kp| jd dkot/p t1}|r to|dvo t3}|r)t5jdo t o|dv}|rN|| | d|fk|sStj||||||dt=fdtDrt?dddS|D]\} } }tA| | |tC||||S)N)rrrrrVpypyrhpythonheadersr0)r rr r)usrlocalrrT) check_home)rinclude platincludezscheme.)ignore_config_filesc3LK|]}|t|kVdSr@)r#)rArB default_oldrss r(rCzget_scheme..xs4 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_inr}r)"rr_USE_SYSCONFIGr+rpathlibPathr#rUimplementationnameparent startswithrrGr version_inforr4r_r rjrorXrKrir$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_msys2_mingw_bugskip_cpython_buildrgrrss @@r(rrs         C         C d?d? WS!__-- WS!__-- E>>    #v - .D  .++ .  , . %%h//  .  %%f--  "    7 "" 7Y 7 #u|3 7 !,,X66 - 0   >>577>   (Y (  ( F* (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_prefixr})rrrr+r~rrrrtrss r(rrsd  # % %C  # % %Cc**GL,=,=<PPP Jr'c8tjddjS)NT)r)rrscriptsr&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)rK)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.r9r}) rrrr+rr~rrrrs 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*r0r}) rrrrr+rr~rrr)rtr+rss r(rrs  " "C  * " "C+C00 c**GL,=,=9MMM 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  88888888888888;;;;;;;;......666666CCCCCC     8 $ $73 e44 S444)W4 Rt R R R R'&(($.$oOOmO ,t , , , ,JS#XJ4JJJJT"""    #" T"""O4OOO#"OT"""D#"&T""" Hd H H H#" HT"""#"" s  #tT/(B     T"""C',CW\C3C4CCC#"C7<glCDT""" LLL L 3-L 3- L SM L  LLL#"L( ddd d 3-d 3- d  d SM d ddddN8c8888" S     S      r'