Ë
    äØjj<  ã                   ór  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ ddlmZ dd	lmZmZmZmZmZmZ g d
¢Z ej>                  e «      Z! e"edd«      Z#e$e%d<   ejL                  dk\  Z'de(fd„Z) e)«       Z*e*sddlm+Z+ e're*sejX                  Z-nej\                  Z-de(fd„Z/dee$e$f   de(fd„Z0 e jb                  d¬«      de(fd„«       Z2 e jb                  d¬«      de(fd„«       Z3 e jb                  d¬«      de(fd„«       Z4 e jb                  d¬«      de(fd„«       Z5 e jb                  d¬«      de(fd„«       Z6dee$   de	e$ddf   fd„Z7 e jb                  d¬«      dejp                  dejp                  de$ddfd „«       Z9dejp                  dejp                  de$de(fd!„Z: e jb                  d¬«      d"dddd#œd$e(d%e
e$   d&e
e$   d'e
e$   ddf
d(„«       Z;	 	 	 	 	 d2d)e$d$e(d%e
e$   d&e
e$   d*e(d'e
e$   defd+„Z<de$fd,„Z=de$fd-„Z>d.e$de(fd/„Z?de$fd0„Z@de$fd1„ZAy)3é    N)ÚAnyÚDictÚ	GeneratorÚOptionalÚTuple)ÚSCHEME_KEYSÚScheme)ÚWINDOWS)Ú
deprecated)Úrunning_under_virtualenvé   )Ú
_sysconfig)ÚUSER_CACHE_DIRÚget_major_minor_versionÚget_src_prefixÚis_osx_frameworkÚsite_packagesÚ	user_site)
r   Úget_bin_prefixÚget_bin_userr   Úget_platlibÚget_purelibÚ
get_schemer   r   r   Ú
platlibdirÚlibÚ_PLATLIBDIR)é   é
   Úreturnc                  ó>   — t        t        t        dt        «      «      S )ax  This 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)ÚboolÚgetattrÚ	sysconfigÚ_USE_SYSCONFIG_DEFAULT© ó    úb/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.pyÚ_should_use_sysconfigr)   .   s   € ô ”œ	Ð#7Ô9OÓPÓQÐQr'   ©Ú
_distutilsc                  óH   — ddl m}  	 | d   d   }|dk(  S # t        $ r Y yw xY w)zsThe resolution to bpo-44860 will change this incorrect platlib.

    See <https://bugs.python.org/issue44860>.
    r   ©ÚINSTALL_SCHEMESÚ	unix_userÚplatlibFz	$usersite)Údistutils.command.installr.   ÚKeyError)r.   Úunix_user_platlibs     r(   Ú_looks_like_bpo_44860r4   L   s=   € õ
 :ðØ+¨KÑ8¸ÑCÐð  Ñ+Ð+øô ò Ùðús   ˆ •	! !Úschemec                 ó¦   — | d   }d|v r|j                  ddt        › d�«      }d|vry|j                  dd«      }|j                  dd«      | d	   k(  S )
Nr0   z/$platlibdir/ú/ú/lib64/Fz/lib/z
$platbase/z$base/Úpurelib)Úreplacer   )r5   r0   Ú	unpatcheds      r(   Ú+_looks_like_red_hat_patched_platlib_purelibr<   Z   se   € Ø�YÑ€GØ˜'Ñ!Ø—/‘/ /°Q´{°mÀ1Ð3EÓFˆØ˜ÑØØ—‘ 	¨7Ó3€IØ×Ñ˜\¨8Ó4¸¸yÑ8IÑIÐIr'   )Úmaxsizec                  ó8   ‡ — ddl mŠ  t        ˆ fd„dD «       «      S )z‘Red 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.
    r   r-   c              3   óF   •K  — | ]  }|‰v xr t        ‰|   «      –— Œ y ­w©N)r<   )Ú.0Úkr.   s     €r(   ú	<genexpr>z*_looks_like_red_hat_lib.<locals>.<genexpr>l   s9   øè ø€ ò ð ð 	
ˆ_Ðò 	LÜ7¸ÈÑ8JÓKó	Lñùs   ƒ!)Úunix_prefixÚ	unix_home)r1   r.   Úallr-   s   @r(   Ú_looks_like_red_hat_librG   d   s$   ø€ õ :äó ð .ôó ð r'   c                  ó"   — ddl m}  d| v xr d| v S )z#Debian adds two additional schemes.r   r-   Ú
deb_systemÚ
unix_local)r1   r.   r-   s    r(   Ú_looks_like_debian_schemerK   s   s   € õ :à˜?Ð*ÒN¨|¸Ð/NÐNr'   c                  óL  — ddl m}  ddlm}  |  |«       «      }|j	                  «        |j
                  t        j                  j                  t        j
                  «      › d�k(  xr= |j                  t        j                  j                  t        j                  «      › d�k(  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)r1   rM   Údistutils.distrN   Úfinalize_optionsÚexec_prefixÚosÚpathÚnormpathÚsysÚprefix)rM   rN   Úcmds      r(   Ú_looks_like_red_hat_schemerX   {   s{   € õ 2Ý+á‘|“~Ó&€CØ×ÑÔà�‰œbŸg™g×.Ñ.¬s¯©Ó?Ð@ÀÐGÑGò 	BØ�J‰JœRŸW™W×-Ñ-¬c¯j©jÓ9Ð:¸&ÐAÑAðr'   c                  ó€   — t         €y	 t        j                  dd¬«      } d| d   v xr dt         vS # t        $ r Y yw xY w)zÌSlackware 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)r5   Úexpandr8   r9   )r   r$   Ú	get_pathsr2   ©Úpathss    r(   Ú_looks_like_slackware_schemer_   �   sT   € ô ÐØðÜ×#Ñ#¨<ÀÔFˆð ˜˜iÑ(Ð(ÒG¨Y¼iÐ-GÐGøô ò Ùðús   ‰1 ±	=¼=c                  óh   ‡ — t        j                  dd¬«      Š t        d„ ˆ fd„dD «       D «       «      S )a‰  MSYS2 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[   c              3   óX   K  — | ]"  }d |vxr d|v xr |j                  d«       –— Œ$ y­w)ÚLibr   zsite-packagesN)Úendswith)rA   Úps     r(   rC   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>«   s9   è ø€ ò àð 	�QˆÒI˜5 A˜:ÒI¨a¯j©j¸Ó.IÐ*IÓIñùs   ‚(*c              3   ó(   •K  — | ]	  }‰|   –— Œ y ­wr@   r&   )rA   Úkeyr^   s     €r(   rC   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>­   s   øè ø€ Ò? �%˜•*Ñ?ùs   ƒ©r0   r9   )r$   r\   rF   r]   s   @r(   Ú_looks_like_msys2_mingw_schemeri   Ÿ   s7   ø€ ô ×Ñ ¨UÔ3€EÜñ ã?Ð(>Ô?ôó ð r'   Úpartsc              #   óö   K  — t        j                  d«      }t        t        dd «      }|r|r|j	                  |«      s| E d {  –—†  y | D ](  }|j	                  |«      r|d dt        |«      z
   }|–— Œ* y 7 Œ3­w)NÚ	LDVERSIONÚabiflagsr   )r$   Úget_config_varr#   rU   rd   Úlen)rj   Ú	ldversionrm   Úparts       r(   Ú_fix_abiflagsrr   ±   s�   è ø€ Ü×(Ñ(¨Ó5€IÜ”s˜J¨Ó-€Hñ ™H¨I×,>Ñ,>¸xÔ,HØ×ÐØð ò ˆØ�=‰=˜Ô#ØÐ-˜1œs 8›}Ñ,Ð.ˆDØ‹
ñð	 	ús   ‚AA9ÁA7Á4A9ÚoldÚnewrg   c                óH   — d}d}t         j                  t        |||| |«       y )Nz(https://github.com/pypa/pip/issues/10151zSValue for %s does not match. Please report this to <%s>
distutils: %s
sysconfig: %s)ÚloggerÚlogÚ_MISMATCH_LEVEL)rs   rt   rg   Ú	issue_urlÚmessages        r(   Ú_warn_mismatchedr{   Á   s)   € à:€Ið	ð ô
 ‡J�JŒ ¨¨i¸¸cÕBr'   c                ó,   — | |k(  ryt        | ||¬«       y)NF©rg   T)r{   )rs   rt   rg   s      r(   Ú_warn_if_mismatchr~   Ì   s   € Ø
ˆc‚zØÜ�S˜# 3Õ'Ør'   F©ÚuserÚhomeÚrootrV   r€   r�   r‚   rV   c                 óf   — g d¢}t         j                  t        dj                  |«      | |||«       y )N)zAdditional context:z	user = %rz	home = %rz	root = %rzprefix = %rú
)rv   rw   rx   Újoin)r€   r�   r‚   rV   rj   s        r(   Ú_log_contextr†   Ó   s*   € ò€Eô ‡J�JŒ §	¡	¨%Ó 0°$¸¸dÀFÕKr'   Ú	dist_nameÚisolatedc           	      óf  ‡‡— t        j                  | |||||¬«      }t        r|S t        j                  | |||||¬«      Šg }t        D �]ó  }t        j                  t        ‰|«      «      }	t        j                  t        ||«      «      }
|	|
k(  rŒHt        j                  j                  dk(  xr_ |d uxrY |dv xrS |	j                  |
j                  k(  xr8 |	j                  j                  d«      xr |
j                  j                  d«      }|rŒÉ|xr] t        «       xrQ |dk(  xrJ |	j                  j                  |
j                  k(  xr% |	j                  j                  j                  d«      }|r�Œ.|dk(  rt        «       r�Œ?|xr: |dk(  xr3 t         xr* t        j                   dk\  xr t"        dk7  xr
 t%        «       }|r�Œ�|xr |dv xr t         xr
 t'        «       }|r�Œ¢|xs |xs |xs
 t)        «        xr† |	j*                  d	d
 dk(  xrr t-        |
j*                  «      d	kD  xrX |
j*                  d	   dk(  xrD t-        |
j*                  «      d
k  xs |
j*                  d   dk7  xr t/        «       xs
 t1        «       }|r�ŒEt        j                   dk  xr: t         xr1 |dv xr+ t3        t5        |	j*                  «      «      |
j*                  k(  }|r�Œ˜t        xr |dv xr
 t7        «       }|r�Œ´t9        j:                  d¬«      xr t         xr |dv }|r�ŒÝ|j=                  |	|
d|› �f«       �Œö |s‰S t        j>                  | |||||d¬«      ŠtA        ˆˆfd„t        D «       «      rtC        dd d ¬«       ‰S |D ]  \  }	}
}tE        |	|
|¬«       Œ tG        ||||¬«       ‰S )N)r€   r�   r‚   rˆ   rV   Úpypyrh   ÚpythonÚheadersr0   )r   é	   r   r   r   )ÚusrÚlocalrŽ   é   r�   )r   é   )rŒ   r0   r9   T)Ú
check_home)rŒ   ÚincludeÚplatincludezscheme.)Úignore_config_filesc              3   óB   •K  — | ]  }‰|   t        ‰|«      k7  –— Œ y ­wr@   )r#   )rA   rB   Údefault_oldrs   s     €€r(   rC   zget_scheme.<locals>.<genexpr>ƒ  s    øè ø€ Ò
B°ˆ;�q‰>œW S¨!›_Õ,Ñ
Bùs   ƒzöConfiguring 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ÚreplacementÚgone_inr}   r   )$r   r   Ú_USE_SYSCONFIGr+   r   ÚpathlibÚPathr#   rU   ÚimplementationÚnameÚparentÚ
startswithr   rG   r
   Úversion_infor   r4   r_   r   rj   ro   rX   rK   Útuplerr   ri   r$   Úis_python_buildÚappendÚdistutils_schemeÚanyr   r{   r†   )r‡   r€   r�   r‚   rˆ   rV   rt   Úwarning_contextsrB   Úold_vÚnew_vÚskip_pypy_special_caseÚ$skip_osx_framework_user_special_caseÚskip_bpo_44860Úskip_slackware_user_schemeÚskip_linux_system_special_caseÚskip_sysconfig_abiflag_bugÚskip_msys2_mingw_bugÚskip_cpython_buildrg   r—   rs   s                       @@r(   r   r   æ   sE  ù€ ô ×
Ñ
ØØØØØØô€Cõ Øˆ
ä
×
Ñ
ØØØØØØô€Cð ÐÜó o?ˆÜ—‘œW S¨!›_Ó-ˆÜ—‘œW S¨!›_Ó-ˆà�EŠ>Øô ×Ñ×#Ñ# vÑ-ò .Ø˜DÐ ò.àÐ+Ð+ò.ð —‘ §¡Ñ,ò.ð —
‘
×%Ñ% hÓ/ò	.ð
 —
‘
×%Ñ% fÓ-ð 	ñ "Øð ò 7Ü Ó"ò7à�Y‘ò7ð —‘×#Ñ# u§|¡|Ñ3ò7ð —‘×!Ñ!×,Ñ,¨XÓ6ð 	-ñ 0Ùð �	Š>Ô5Ô7Ùð ò (Ø�Y‘ò(ä�ò(ô × Ñ  FÑ*ò(ô ˜uÑ$ò	(ô
 &Ó'ð 	ñ Ùð
 ò /ØÐ+Ð+ò/ä�ò/ô -Ó.ð	 	#ñ &Ùð ÒE˜ÒE ÒEÔ+CÓ+EÐFò NØ—‘˜A˜aÐ Ð$4Ñ4òNä�E—K‘KÓ  1Ñ$òNð —‘˜A‘ %Ñ'òNô �U—[‘[Ó! AÑ%ÒB¨¯©°Q©¸7Ñ)Bò	Nô
 ,Ó-ÒLÔ1JÓ1Lð 	'ñ *Ùô
 ×Ñ˜vÑ%ò AÜ�òAàÐ6Ð6òAô ”m E§K¡KÓ0Ó1°U·[±[Ñ@ð	 	#ñ &Ùô
 ÒX˜Ð3Ð3ÒXÔ8VÓ8Xð 	ñ  Ùô ×%Ñ%°Ô6ò ;Ü�ò;àÐ:Ð:ð 	ñ
 Ùà×Ñ ¨°¸¸¨}Ð =Ö>ð_o?ñb Øˆ
ô
 ×-Ñ-ØØØØØØØ ô€Kô Ô
B´kÔ
BÔBÜðLð
 Øõ		
ð ˆ
ð .ò 0Ñˆˆu�cÜ˜ ¨3Ö/ð0ä�d ¨D¸Õ@à€Jr'   c                  óâ   — t        j                  «       } t        r| S t        j                  «       }t	        t        j                  |«      t        j                  | «      d¬«      r
t        «        |S )NÚ
bin_prefixr}   )r   r   r›   r+   r~   rœ   r�   r†   ©rt   rs   s     r(   r   r   ˜  sN   € Ü
×
#Ñ
#Ó
%€CÝØˆ
ä
×
#Ñ
#Ó
%€CÜœŸ™ cÓ*¬G¯L©L¸Ó,=À<ÕPÜŒØ€Jr'   c                  óD   — t        j                  dd¬«      j                  S )NÚ T)r€   )r   r   Úscriptsr&   r'   r(   r   r   £  s   € Ü× Ñ  ¨$Ô/×7Ñ7Ð7r'   Úvaluec                 ó&   — t        «       sy| dk(  ryy)aõ  Check 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   )r¹   s    r(   Ú$_looks_like_deb_system_dist_packagesr»   §  s   € ô %Ô&ØØÐ0Ò0ØØr'   c                  óü   — t        j                  «       } t        r| S t        j                  «       }t	        |«      r|S t        t        j                  |«      t        j                  | «      d¬«      r
t        «        |S )z,Return the default pure-Python lib location.r9   r}   )	r   r   r›   r+   r»   r~   rœ   r�   r†   rµ   s     r(   r   r   ¸  s[   € ä
×
 Ñ
 Ó
"€CÝØˆ
ä
×
 Ñ
 Ó
"€CÜ+¨CÔ0Øˆ
ÜœŸ™ cÓ*¬G¯L©L¸Ó,=À9ÕMÜŒØ€Jr'   c                  ó  — t        j                  «       } t        r| S ddlm}  |j                  «       }t        |«      r|S t        t        j                  |«      t        j                  | «      d¬«      r
t        «        |S )z0Return the default platform-shared lib location.r   r*   r0   r}   )
r   r   r›   r·   r+   r»   r~   rœ   r�   r†   )rt   r+   rs   s      r(   r   r   Æ  s`   € ä
×
 Ñ
 Ó
"€CÝØˆ
åà
 ˆ*×
 Ñ
 Ó
"€CÜ+¨CÔ0Øˆ
ÜœŸ™ cÓ*¬G¯L©L¸Ó,=À9ÕMÜŒØ€Jr'   )FNNFN)BÚ	functoolsÚloggingrR   rœ   rU   r$   Útypingr   r   r   r   r   Úpip._internal.models.schemer   r	   Úpip._internal.utils.compatr
   Úpip._internal.utils.deprecationr   Úpip._internal.utils.virtualenvr   r·   r   Úbaser   r   r   r   r   r   Ú__all__Ú	getLoggerÚ__name__rv   r#   r   ÚstrÚ__annotations__r¢   r%   r"   r)   r›   r+   ÚWARNINGrx   ÚDEBUGr4   r<   Ú	lru_cacherG   rK   rX   r_   ri   rr   r�   r{   r~   r†   r   r   r   r»   r   r   r&   r'   r(   ú<module>rÎ      s`  ðÜ Û Û 	Û Û 
Û ß 8Õ 8ç ;Ý .Ý 6Ý Cå ÷÷ ò€ð 
ˆ×	Ñ	˜8Ó	$€ñ ˜3 ¨eÓ4€ˆSÓ 4à×)Ñ)¨WÑ4Ð ðR˜tó Rñ 'Ó(€áõ ñ ¡.Ø—o‘o�Oà—m‘m€Oð,˜tó ,ðJ¸¸SÀ#¸X¹ð JÈ4ó Jð €×Ñ˜TÔ"ð ò ó #ðð €×Ñ˜TÔ"ðO 4ò Oó #ðOð €×Ñ˜TÔ"ð Dò ó #ðð& €×Ñ˜TÔ"ðH dò Hó #ðHð €×Ñ˜TÔ"ð¨ò ó #ðð"˜˜s™ð ¨	°#°t¸T°/Ñ(Bó ð  €×Ñ˜TÔ"ðC˜'Ÿ,™,ð C¨W¯\©\ð CÀ3ð CÈ4ò Có #ðCð˜7Ÿ<™<ð ¨g¯l©lð ÀCð ÈDó ð €×Ñ˜TÔ"ð ØØØ òLà
ðLð �3‰-ðLð �3‰-ð	Lð
 �S‰MðLð 
òLó #ðLð( ØØØØ ñoØðoà
ðoð �3‰-ðoð �3‰-ð	oð
 ðoð �S‰Mðoð óoðd˜ó ð8�có 8ð°ð ¸ó ð"�Só ð�Sô r'   