§
    �’j|8  ã                  óŒ  — U d dl mZ 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
 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de d<   d5d„Z! e!¦   «         Z"e"sddlm#Z# e"rej$        Z%nej&        Z%d5d„Z'd6d„Z(ej)        d5d„¦   «         Z*ej)        d5d„¦   «         Z+ej)        d5d„¦   «         Z,ej)        d5d„¦   «         Z-ej)        d5d„¦   «         Z.ej)        d7d!„¦   «         Z/d8d"„Z0ej)        d#dddd$œd9d*„¦   «         Z1	 	 	 	 	 d:d;d.„Z2d<d/„Z3d<d0„Z4d=d2„Z5d<d3„Z6d<d4„Z7dS )>é    )ÚannotationsN)Ú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ÚstrÚ_PLATLIBDIRÚreturnÚboolc                 óH   — t          t          t          dd¦  «        ¦  «        S )ah  This function determines the value of _USE_SYSCONFIG.

    By default, pip uses sysconfig.
    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_SYSCONFIGT)r   ÚgetattrÚ	sysconfig© ó    úNC:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\locations\__init__.pyÚ_should_use_sysconfigr#   -   s   € õ •�	Ð#7¸Ñ>Ô>Ñ?Ô?Ð?r!   ©Ú
_distutilsc                 ó\   — ddl m}  	 | d         d         }n# t          $ r Y dS w xY w|dk    S )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_44860r.   K   s[   € ð
 :Ð9Ð9Ð9Ð9Ð9ðØ+¨KÔ8¸ÔCÐÐøÝð ð ð Øˆuˆuðøøøà Ò+Ð+s   ˆ —
%¤%Úschemeúdict[str, str]c                óÐ   — | d         }d|v r|                      ddt          › d�¦  «        }d|vrdS |                      dd¦  «        }|                      dd¦  «        | d	         k    S )
Nr*   z/$platlibdir/ú/ú/lib64/Fz/lib/z
$platbase/z$base/Úpurelib)Úreplacer   )r/   r*   Ú	unpatcheds      r"   Ú+_looks_like_red_hat_patched_platlib_purelibr7   Y   sy   € Ø�YÔ€GØ˜'Ð!Ð!Ø—/’/ /Ð3Eµ{Ð3EÐ3EÐ3EÑFÔFˆØ˜ÐÐØˆuØ—’ 	¨7Ñ3Ô3€IØ×Ò˜\¨8Ñ4Ô4¸¸yÔ8IÒIÐIr!   c                 óF   ‡ — 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  óJ   •K  — | ]}|‰v ot          ‰|         ¦  «        V — Œd S ©N)r7   )Ú.0Úkr(   s     €r"   ú	<genexpr>z*_looks_like_red_hat_lib.<locals>.<genexpr>k   sT   øè è € ð ð ð ð 	
ˆ_Ðð 	LÝ7¸ÈÔ8JÑKÔKðð ð ð ð ð r!   )Úunix_prefixÚ	unix_home)r+   r(   Úallr'   s   @r"   Ú_looks_like_red_hat_librA   c   sQ   ø€ ð :Ð9Ð9Ð9Ð9Ð9åð ð ð ð ð .ðñ ô ñ ô ð r!   c                 ó   — ddl m}  d| v od| v S )z#Debian adds two additional schemes.r   r'   Ú
deb_systemÚ
unix_local)r+   r(   r'   s    r"   Ú_looks_like_debian_schemerE   r   s+   € ð :Ð9Ð9Ð9Ð9Ð9à˜?Ð*ÐN¨|¸Ð/NÐNr!   c                 ó<  — ddl m}  ddlm}  |  |¦   «         ¦  «        }|                     ¦   «          |j        t          j                             t          j        ¦  «        › d�k    o4|j
        t          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)r+   rG   Údistutils.distrH   Úfinalize_optionsÚexec_prefixÚosÚpathÚnormpathÚsysÚprefix)rG   rH   Úcmds      r"   Ú_looks_like_red_hat_schemerR   z   s¤   € ð 2Ð1Ð1Ð1Ð1Ð1Ø+Ð+Ð+Ð+Ð+Ð+à
ˆ'�,�,‘.”.Ñ
!Ô
!€CØ×ÒÑÔÐàŒ�bœg×.Ò.­s¬Ñ?Ô?ÐGÐGÐGÒGð 	BØŒJ�RœW×-Ò-­c¬jÑ9Ô9ÐAÐAÐAÒAðr!   c                 óŒ   — t           €dS 	 t          j        dd¬¦  «        } n# t          $ r Y dS w xY wd| d         v odt           vS )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.
    NFÚ
posix_user)r/   Úexpandr3   r4   )r   r   Ú	get_pathsr,   ©Úpathss    r"   Ú_looks_like_slackware_schemerY   Ž   sg   € õ ÐØˆuðÝÔ#¨<ÀÐFÑFÔFˆˆøÝð ð ð Øˆuˆuðøøøà˜˜iÔ(Ð(ÐG¨Y½iÐ-GÐGs   ‹" ¢
0¯0c                 óz   ‡ — 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)rU   c              3  óR   K  — | ]"}d |vod|v o|                      d¦  «         V — Œ#dS )ÚLibr   zsite-packagesN)Úendswith)r;   Úps     r"   r=   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>ª   sW   è è € ð ð àð 	�QˆÐI˜5 A˜:ÐI¨a¯jªj¸Ñ.IÔ.IÐ*Iðð ð ð ð ð r!   c              3  ó(   •K  — | ]}‰|         V — Œd S r:   r    )r;   ÚkeyrX   s     €r"   r=   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>¬   s'   øè è € Ð?Ð? �%˜”*Ð?Ð?Ð?Ð?Ð?Ð?r!   ©r*   r4   )r   rV   r@   rW   s   @r"   Ú_looks_like_msys2_mingw_schemerc   ž   s]   ø€ õ Ô ¨UÐ3Ñ3Ô3€EÝð ð à?Ð?Ð?Ð?Ð(>Ð?Ñ?Ô?ðñ ô ñ ô ð r!   Úoldúpathlib.PathÚnewra   ÚNonec               óV   — d}d}t                                t          |||| |¦  «         d S )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)rd   rf   ra   Ú	issue_urlÚmessages        r"   Ú_warn_mismatchedrn   °   s5   € à:€Ið	ð õ
 ‡J‚J� ¨¨i¸¸cÑBÔBÐBÐBÐBr!   c               ó:   — | |k    rdS t          | ||¬¦  «         dS )NF©ra   T)rn   )rd   rf   ra   s      r"   Ú_warn_if_mismatchrq   »   s*   € Ø
ˆc‚z€zØˆuÝ�S˜# 3Ð'Ñ'Ô'Ð'Øˆ4r!   F©ÚuserÚhomeÚrootrP   rs   rt   ú
str | Noneru   rP   c                ó|   — g d¢}t                                t          d                     |¦  «        | |||¦  «         d S )N)zAdditional context:z	user = %rz	home = %rz	root = %rzprefix = %rú
)ri   rj   rk   Újoin)rs   rt   ru   rP   Úpartss        r"   Ú_log_contextr{   Â   sC   € ðð ð €Eõ ‡J‚J� §	¢	¨%Ñ 0Ô 0°$¸¸dÀFÑKÔKÐKÐKÐKr!   Ú	dist_nameÚisolatedr   c           	     óP  ‡‡— t          j        | |||||¬¦  «        }t          r|S t          j        | |||||¬¦  «        Šg }t          D �]Y}t          j        t          ‰|¦  «        ¦  «        }	t          j        t          ||¦  «        ¦  «        }
|	|
k    rŒNt          j	        j
        dk    oK|d uoG|dv oC|	j        |
j        k    o3|	j
                             d¦  «        o|
j
                             d¦  «        }|rŒ²|oGt          ¦   «         o9|dk    o3|	j        j        |
j        k    o|	j        j
                             d¦  «        }|rŒÿ|dk    rt          ¦   «         r�Œ|o&|dk    o t           ot           dk    ot#          ¦   «         }|r�ŒB|o|dv ot           ot%          ¦   «         }|r�Œb|p|p|pt'          ¦   «          o€|	j        dd	…         d
k    omt+          |
j        ¦  «        dk    oU|
j        d         dk    oDt+          |
j        ¦  «        d	k     p|
j        d         dk    ot-          ¦   «         pt/          ¦   «         }|r�Œüt          o|dv ot1          ¦   «         }|r�Œt3          j        d¬¦  «        ot           o|dv }|r�Œ>|                     |	|
d|› �f¦  «         �Œ[|s‰S t          j        | |||||d¬¦  «        Št;          ˆˆfd„t          D ¦   «         ¦  «        rt=          dd d ¬¦  «         ‰S |D ]\  }	}
}t?          |	|
|¬¦  «         ŒtA          ||||¬¦  «         ‰S )N)rs   rt   ru   r}   rP   Úpypyrb   ÚpythonÚheadersr*   r   r	   é   )ÚusrÚlocalrƒ   é   r„   T)Ú
check_home)r�   ÚincludeÚplatincludezscheme.)Úignore_config_filesc              3  óL   •K  — | ]}‰|         t          ‰|¦  «        k    V — Œd S r:   )r   )r;   r<   Údefault_oldrd   s     €€r"   r=   zget_scheme.<locals>.<genexpr>f  s4   øè è € Ð
BÐ
B°ˆ;�qŒ>�W S¨!™_œ_Ò,Ð
BÐ
BÐ
BÐ
BÐ
BÐ
Br!   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_inrp   rr   )!r
   r   Ú_USE_SYSCONFIGr%   r   ÚpathlibÚPathr   rO   ÚimplementationÚnameÚparentÚ
startswithr   rA   r   r   r.   rY   r   rz   ÚlenrR   rE   rc   r   Úis_python_buildÚappendÚdistutils_schemeÚanyr   rn   r{   )r|   rs   rt   ru   r}   rP   rf   Úwarning_contextsr<   Ú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_msys2_mingw_bugÚskip_cpython_buildra   r‹   rd   s                      @@r"   r   r   Õ   sq  øø€ õ Ô
ØØØØØØðñ ô €Cõ ð Øˆ
å
Ô
ØØØØØØðñ ô €Cð ÐÝð c?ñ c?ˆÝ”�W S¨!™_œ_Ñ-Ô-ˆÝ”�W S¨!™_œ_Ñ-Ô-ˆà�EŠ>ˆ>Øõ ÔÔ# vÒ-ð .Ø˜DÐ ð.àÐ+Ð+ð.ð ” ¤Ò,ð.ð ”
×%Ò% hÑ/Ô/ð	.ð
 ”
×%Ò% fÑ-Ô-ð 	ð "ð 	Øð ð 7Ý Ñ"Ô"ð7à�Y’ð7ð ”Ô# u¤|Ò3ð7ð ”Ô!×,Ò,¨XÑ6Ô6ð 	-ð 0ð 	Øð �	Š>ˆ>Õ5Ñ7Ô7ˆ>Ùð ð (Ø�Y’ð(å�ð(õ ˜uÒ$ð(õ &Ñ'Ô'ð 	ð ð 	Ùð
 ð /ØÐ+Ð+ð/å�ð/õ -Ñ.Ô.ð	 	#ð &ð 	Ùð ÐE˜ÐE ÐEÕ+CÑ+EÔ+EÐFð NØ”˜A˜a˜CÔ Ð$4Ò4ðNå�E”KÑ Ô  1Ò$ðNð ”˜A” %Ò'ðNõ �U”[Ñ!Ô! AÒ%ÐB¨¬°Q¬¸7Ò)Bð	Nõ
 ,Ñ-Ô-ÐLÕ1JÑ1LÔ1Lð 	'ð *ð 	Ùõ
 ÐX˜Ð3Ð3ÐXÕ8VÑ8XÔ8Xð 	ð  ð 	Ùõ Ô%°Ð6Ñ6Ô6ð ;Ý�ð;àÐ:Ð:ð 	ð
 ð 	Ùà×Ò ¨¨}¸¨}¨}Ð =Ñ>Ô>Ð>Ñ>àð Øˆ
õ
 Ô-ØØØØØØØ ðñ ô €Kõ Ð
BÐ
BÐ
BÐ
BÐ
BµkÐ
BÑ
BÔ
BÑBÔBð ÝðLð
 Øð		
ñ 		
ô 		
ð 		
ð ˆ
ð .ð 0ð 0Ñˆˆu�cÝ˜ ¨3Ð/Ñ/Ô/Ð/Ð/Ý�d ¨D¸Ð@Ñ@Ô@Ð@à€Jr!   c                 óì   — t          j        ¦   «         } t          r| S t          j        ¦   «         }t	          t          j        |¦  «        t          j        | ¦  «        d¬¦  «        rt          ¦   «          |S )NÚ
bin_prefixrp   )r
   r   r�   r%   rq   r�   r‘   r{   ©rf   rd   s     r"   r   r   {  sd   € Ý
Ô
#Ñ
%Ô
%€CÝð Øˆ
å
Ô
#Ñ
%Ô
%€CÝ�œ cÑ*Ô*­G¬L¸Ñ,=Ô,=À<ÐPÑPÔPð Ý‰ŒˆØ€Jr!   c                 ó8   — t          j        dd¬¦  «        j        S )NÚ T)rs   )r
   r   Úscriptsr    r!   r"   r   r   †  s   € ÝÔ  ¨$Ð/Ñ/Ô/Ô7Ð7r!   Úvaluec                ó6   — t          ¦   «         sdS | dk    rdS dS )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)rE   )r«   s    r"   Ú$_looks_like_deb_system_dist_packagesr­   Š  s-   € õ %Ñ&Ô&ð ØˆuØÐ0Ò0Ð0ØˆtØˆ5r!   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.r4   rp   )	r
   r   r�   r%   r­   rq   r�   r‘   r{   r§   s     r"   r   r   ›  sy   € å
Ô
 Ñ
"Ô
"€CÝð Øˆ
å
Ô
 Ñ
"Ô
"€CÝ+¨CÑ0Ô0ð Øˆ
Ý�œ cÑ*Ô*­G¬L¸Ñ,=Ô,=À9ÐMÑMÔ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$   r*   rp   )
r
   r   r�   r©   r%   r­   rq   r�   r‘   r{   )rf   r%   rd   s      r"   r   r   ©  s�   € å
Ô
 Ñ
"Ô
"€CÝð Øˆ
àÐÐÐÐÐà
 ˆ*Ô
 Ñ
"Ô
"€CÝ+¨CÑ0Ô0ð Øˆ
Ý�œ cÑ*Ô*­G¬L¸Ñ,=Ô,=À9ÐMÑMÔMð Ý‰ŒˆØ€Jr!   )r   r   )r/   r0   r   r   )rd   re   rf   re   ra   r   r   rg   )rd   re   rf   re   ra   r   r   r   )
rs   r   rt   rv   ru   rv   rP   rv   r   rg   )FNNFN)r|   r   rs   r   rt   rv   ru   rv   r}   r   rP   rv   r   r   )r   r   )r«   r   r   r   )8Ú
__future__r   Ú	functoolsÚloggingrL   r�   rO   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__ri   r   r   Ú__annotations__r#   r�   r%   ÚDEBUGrk   ÚWARNINGr.   r7   ÚcacherA   rE   rR   rY   rc   rn   rq   r{   r   r   r   r­   r   r   r    r!   r"   ú<module>r¿      s   ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð à ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø .Ð .Ð .Ð .Ð .Ð .Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø CÐ CÐ CÐ CÐ CÐ Cà Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð €ð 
ˆÔ	˜8Ñ	$Ô	$€ð �7˜3 ¨eÑ4Ô4€Ð 4Ð 4Ð 4Ñ 4ð@ð @ð @ð @ð 'Ð&Ñ(Ô(€àð ð ÐÐÐÐÐð ð &Ø”m€O€Oà”o€Oð,ð ,ð ,ð ,ðJð Jð Jð Jð „ðð ð ñ „ðð „ðOð Oð Oñ „ðOð „ðð ð ñ „ðð& „ðHð Hð Hñ „ðHð „ðð ð ñ „ðð" „ðCð Cð Cñ „ðCðð ð ð ð „ð ØØØðLð Lð Lð Lð Lñ „ðLð( ØØØØðcð cð cð cð cðLð ð ð ð8ð 8ð 8ð 8ðð ð ð ð"ð ð ð ðð ð ð ð ð r!   