
    j6                       % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJr  S SKJr  S SKJr  SSKJr  SS	KJrJrJrJrJrJr  / S
Qr\R6                  " \5      r\" \SS5      rS\ S'   S#S jr!\!" 5       r"\"(       d  SSKJ#r#  \"(       a  \RH                  r%O\RL                  r%S#S jr'S$S jr(\RR                  S#S j5       r*\RR                  S#S j5       r+\RR                  S#S j5       r,\RR                  S#S j5       r-\RR                  S#S j5       r.\RR                  S%S j5       r/S&S jr0\RR                  SSSSS.         S'S jj5       r1     S(             S)S jjr2S*S jr3S*S jr4S+S  jr5S*S! jr6S*S" jr7g),    )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_PLATLIBDIRc                 6    [        [        [        SS5      5      $ )aL  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)boolgetattr	sysconfig     q/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pip/_internal/locations/__init__.py_should_use_sysconfigr"   -   s     	#7>??r    
_distutilsc                 J    SSK Jn    U S   S   nUS:H  $ ! [         a     gf = f)zkThe 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=    
 :+K8C ++  s    
""c                    U S   nSU;   a  UR                  SS[         S35      nSU;  a  gUR                  SS5      nUR                  SS5      U S	   :H  $ )
Nr)   z/$platlibdir///lib64/Fz/lib/z
$platbase/z$base/purelib)replacer   )schemer)   	unpatcheds      r!   +_looks_like_red_hat_patched_platlib_purelibr5   Y   se    YG'!///Q{m13EF	73I\84y8IIIr    c                 :   ^  SSK Jm   [        U 4S jS 5       5      $ )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.
r   r&   c              3  X   >#    U  H  nUT;   =(       a    [        TU   5      v   M!     g 7fN)r5   ).0kr'   s     r!   	<genexpr>*_looks_like_red_hat_lib.<locals>.<genexpr>k   s8       .A 	
_ 	L78JK	L-s   '*)unix_prefix	unix_home)r*   r'   allr&   s   @r!   _looks_like_red_hat_libr@   c   s$     :  .  r    c                 0    SSK Jn   SU ;   =(       a    SU ;   $ )z#Debian adds two additional schemes.r   r&   
deb_system
unix_local)r*   r'   r&   s    r!   _looks_like_debian_schemerD   r   s     :?*N|/NNr    c                 V   SSK Jn   SSKJn  U " U" 5       5      nUR	                  5         UR
                  [        R                  R                  [        R
                  5       S3:H  =(       a=    UR                  [        R                  R                  [        R                  5       S3:H  $ )aH  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*   rF   distutils.distrG   finalize_optionsexec_prefixospathnormpathsysprefix)rF   rG   cmds      r!   _looks_like_red_hat_schemerQ   z   s{     2+
,.
!Cbgg..s?@GG 	BJJRWW--cjj9:&AAr    c                     [         c  g [        R                  " SSS9n SU S   ;   =(       a	    S[         ;  $ ! [         a     gf = f)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.
F
posix_user)r3   expandr0   r1   )r   r   	get_pathsr+   pathss    r!   _looks_like_slackware_schemerX      sT     ##<F i((GYi-GG  s   7 
AAc                 f   ^  [         R                  " SSS9m [        S U 4S jS 5        5       5      $ )aq  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)rT   c              3  ~   #    U  H3  nS U;  =(       a"    SU;   =(       a    UR                  S5      (       + v   M5     g7f)Libr   zsite-packagesN)endswith)r9   ps     r!   r;   1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>   s8      ?A 	QI5A:Iajj.I*II?s   ;=c              3  .   >#    U  H
  nTU   v   M     g 7fr8   r   )r9   keyrW   s     r!   r;   r_      s     ?(>%*(>s   r)   r1   )r   rU   r?   rV   s   @r!   _looks_like_msys2_mingw_schemerc      s7     U3E ?(>?  r    c               D    SnSn[         R                  [        XBX0U5        g )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)oldnewra   	issue_urlmessages        r!   _warn_mismatchedrl      s%    :I	 
 JJicBr    c               $    X:X  a  g[        XUS9  g)NFra   T)rl   )rh   ri   ra   s      r!   _warn_if_mismatchro      s    
zS3'r    FuserhomerootrO   c                b    / SQn[         R                  [        SR                  U5      XX#5        g )N)zAdditional context:z	user = %rz	home = %rz	root = %rzprefix = %r
)re   rf   rg   join)rq   rr   rs   rO   partss        r!   _log_contextrx      s&    E JJ		% 0$dKr    c           
     L  ^^ [         R                  " U UUUUUS9n[        (       a  U$ [        R                  " U UUUUUS9m/ n[         GHf  n[
        R                  " [        TU5      5      n	[
        R                  " [        Xh5      5      n
X:X  a  MJ  [        R                  R                  S:H  =(       at    US L=(       ai    US;   =(       a]    U	R                  U
R                  :H  =(       a=    U	R                  R                  S5      =(       a    U
R                  R                  S5      nU(       a  M  U=(       al    [        5       =(       a[    US:H  =(       aO    U	R                  R                  U
R                  :H  =(       a%    U	R                  R                  R                  S5      nU(       a  GMj  US:X  a  [        5       (       a  GM  U=(       a8    US:H  =(       a,    [        (       + =(       a    [         S:g  =(       a
    [#        5       nU(       a  GM  U=(       a(    US;   =(       a    [        (       + =(       a
    [%        5       nU(       a  GM  U=(       d    U=(       d    U=(       d
    ['        5       (       + =(       a    U	R(                  SS	 S
:H  =(       a    [+        U
R(                  5      S:  =(       al    U
R(                  S   S:H  =(       aS    [+        U
R(                  5      S	:  =(       d    U
R(                  S   S:g  =(       a    [-        5       =(       d
    [/        5       nU(       a  GM  [        =(       a    US;   =(       a
    [1        5       nU(       a  GM  [2        R4                  " SS9=(       a    [        (       + =(       a    US;   nU(       a  GMP  UR7                  XSU 345        GMi     U(       d  T$ [        R8                  " U UUUUUSS9m[;        UU4S j[         5       5      (       a  [=        SS S S9  T$ U H  u  pn[?        XUS9  M     [A        XX5S9  T$ )N)rq   rr   rs   isolatedrO   pypyrb   pythonheadersr)   r   r	      )usrlocalr      r   T)
check_home)r}   includeplatincludezscheme.)ignore_config_filesc              3  H   >#    U  H  nTU   [        TU5      :g  v   M     g 7fr8   )r   )r9   r:   default_oldrh   s     r!   r;   get_scheme.<locals>.<genexpr>f  s      
Bk;q>WS!_,ks   "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replacementgone_inrn   rp   )!r
   r   _USE_SYSCONFIGr$   r   pathlibPathr   rN   implementationnameparent
startswithr   r@   r   r   r-   rX   r   rw   lenrQ   rD   rc   r   is_python_buildappenddistutils_schemeanyr   rl   rx   )	dist_namerq   rr   rs   rz   rO   ri   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   rh   s                      @@r!   r   r      s    

C ~



C [WS!_-WS_-> ##v- .D .++. ,. 

%%h/	.
 

%%f- 	 "  7 "7Y7 ##u||37 !!,,X6 	- 0 	>577  (Y(( u$( &' 	 
  /++// -.	 	# & EEE+C+EF NAa $44NEKK 1$N A%'N U[[!A%BQ7)B	N
 ,-L1J1L 	' *
 X33X8V8X 	   %%6 ;;:: 	
 } =>G J 

 -- K 
Bk
BBBL
 		
 
 .c3/ .dD@Jr    c                     [         R                  " 5       n [        (       a  U $ [        R                  " 5       n[	        [
        R                  " U5      [
        R                  " U 5      SS9(       a
  [        5         U$ )N
bin_prefixrn   )r
   r   r   r$   ro   r   r   rx   ri   rh   s     r!   r   r   {  sP    

#
#
%C~


#
#
%Cc*GLL,=<PJr    c                 @    [         R                  " SSS9R                  $ )N T)rq   )r
   r   scriptsr   r    r!   r   r     s      $/777r    c                2    [        5       (       d  gU S:X  a  gg)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)rD   )values    r!   $_looks_like_deb_system_dist_packagesr     s     %&&00r    c                    [         R                  " 5       n [        (       a  U $ [        R                  " 5       n[	        U5      (       a  U$ [        [        R                  " U5      [        R                  " U 5      SS9(       a
  [        5         U$ )z,Return the default pure-Python lib location.r1   rn   )	r
   r   r   r$   r   ro   r   r   rx   r   s     r!   r   r     s`    

 
 
"C~


 
 
"C+C00
c*GLL,=9MJr    c                     [         R                  " 5       n [        (       a  U $ SSKJn  UR                  " 5       n[        U5      (       a  U$ [        [        R                  " U5      [        R                  " U 5      SS9(       a
  [        5         U$ )z0Return the default platform-shared lib location.r	   r#   r)   rn   )
r
   r   r   r   r$   r   ro   r   r   rx   )ri   r$   rh   s      r!   r   r     sc    

 
 
"C~


 
 
"C+C00
c*GLL,=9MJr    )returnr   )r3   zdict[str, str]r   r   )rh   pathlib.Pathri   r   ra   r   r   None)rh   r   ri   r   ra   r   r   r   )
rq   r   rr   
str | Noners   r   rO   r   r   r   )FNNFN)r   r   rq   r   rr   r   rs   r   rz   r   rO   r   r   r   )r   r   )r   r   r   r   )8
__future__r   	functoolsloggingrK   r   rN   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__re   r   r   __annotations__r"   r   r$   DEBUGrg   WARNINGr-   r5   cacher@   rD   rQ   rX   rc   rl   ro   rx   r   r   r   r   r   r   r   r    r!   <module>r      s   "   	  
  ; . 6 C   
		8	$ 3e4S 4@ '(  mmOooO,J   O O  & H H  " C C  L
L L 	L
 L 
L L( cc
c c 	c
 c c cL8"r    