kgh7FUddlZddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z m Z ddl mZddlmZddlmZddlmZdd lmZmZmZmZmZmZgd ZejeZe 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&fdZ.ej/dde&fdZ0ej/dde&fdZ1ej/dde&fdZ2ej/dde&fdZ3ej/dde&fdZ4ej/ddej5dej5de"ddfdZ6dej5dej5de"de&fdZ7ej/dd dddd!d"e&d#e e"d$e e"d%e e"ddf d&Z8 d0d'e"d"e&d#e e"d$e e"d(e&d%e e"de fd)Z9de"fd*Z:de"fd+Z;d,e"de&fd-ZdS)1N)AnyDictOptional) 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 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.6.0/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_44860r2Ls[ :99999+K8C uu  ++s  %%schemec|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: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)r/r,allr+s@r&_looks_like_red_hat_librEdsQ :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_schemerIss+: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)r3expandr6r7)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.r7)r"rZrDr[s@r&_looks_like_msys2_mingw_schemergs]  U 3 3 3E ????(>???  r%oldnewrecVd}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)rhrire issue_urlmessages r&_warn_mismatchedrps5:I   JJicBBBBBr%c:||krdSt|||dS)NFreT)rp)rhrires r&_warn_if_mismatchrss* czzuS#3'''' 4r%FuserhomerootrTrurvrwrTc|gd}ttd|||||dS)N)zAdditional context:z user = %rz home = %rz root = %rz prefix = %r )rkrlrmjoin)rurvrwrTpartss r& _log_contextr|sC   E JJ % 0 0$dFKKKKKr% dist_nameisolatedc 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)rurvrwr~rTpypyrfpythonheadersr.rr r)usrlocalrrT) check_home)rinclude platincludezscheme.)ignore_config_filesc3LK|]}|t|kVdSr>)r!)r?r@ default_oldrhs r&rAzget_scheme..gs4 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_inrrrt)!r r_USE_SYSCONFIGr)rpathlibPathr!rSimplementationnameparent startswithrrErrr2r]r r{lenrVrIrgr"is_python_buildappenddistutils_schemeanyr rpr|)r}rurvrwr~rTriwarning_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_prefixrr)r rrr)rsrrr|rirhs r&rr|sd  # % %C  # % %Cc**GL,=,=<PPP Jr%c8tjddjS)NT)ru)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.r7rr) r rrr)rrsrrr|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.rr) r rrrr)rrsrrr|)rir)rhs r&rrs  " "C  * " "C+C00 c**GL,=,=9MMM Jr%)FNNFN)? functoolsloggingrPrrSr"typingrrrpip._internal.models.schemerrpip._internal.utils.compatrpip._internal.utils.deprecationr pip._internal.utils.virtualenvr rr baser rrrrr__all__ getLogger__name__rkr!rstr__annotations__ version_infor#r r'rr)WARNINGrmDEBUGr2r: lru_cacherErIrVr]rgrrprsr|rrrrrrr$r%r&rsy  &&&&&&&&&&;;;;;;;;......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"""#""T"""C',CW\C3C4CCC#"C7<glCDT""" LLL L 3-L 3- L SM L  LLL#"L( ccc c 3-c 3- c  c SM c ccccL8c8888" S     S      r%