
    жvgM:                     |   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j&        dk    Z'de(fdZ) e)            Z*e*sddlm+Z+ e'r
e*sej,        Z-nej.        Z-de(fdZ/dee$e$f         de(fdZ0 e j1        d          de(fd            Z2 e j1        d          de(fd            Z3 e j1        d          de(fd            Z4 e j1        d          de(fd            Z5 e j1        d          de(fd            Z6dee$         de	e$ddf         fdZ7 e j1        d          dej8        dej8        de$ddfd             Z9dej8        dej8        de$de(fd!Z: e j1        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ZAdS )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                  R    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     ]/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/pip/_internal/locations/__init__.py_should_use_sysconfigr)   .   s      	#79OPPQQQr'   
_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_44860r4   L   s[    
 :99999+K8C   uu++s    
%%schemec                     | d         }d|v r|                     ddt           d          }d|vrdS |                     dd          }|                     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   sy    YG'!!///3E{3E3E3EFFu	733I\844y8IIIr'   )maxsizec                  F     ddl m  t           fddD                       S )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   J   K   | ]}|v ot          |                   V  d S N)r<   ).0kr.   s     r(   	<genexpr>z*_looks_like_red_hat_lib.<locals>.<genexpr>l   sT          	
_ 	L78JKK     r'   )unix_prefix	unix_home)r1   r.   allr-   s   @r(   _looks_like_red_hat_librG   d   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)r1   r.   r-   s    r(   _looks_like_debian_schemerK   s   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)r1   rM   distutils.distrN   finalize_optionsexec_prefixospathnormpathsysprefix)rM   rN   cmds      r(   _looks_like_red_hat_schemerX   {   s     211111++++++w||~~&&Cbg..s??GGGG 	BJRW--cj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 )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)r5   expandr8   r9   )r   r$   	get_pathsr2   pathss    r(   _looks_like_slackware_schemer_      sg     u#<FFF   uui((GYi-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)r[   c              3   R   K   | ]"}d |vod|v o|                     d           V  #dS )Libr   zsite-packagesN)endswith)rA   ps     r(   rC   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>   sW         	QI5A:Iajj.I.I*I     r'   c              3   (   K   | ]}|         V  d S r@   r&   )rA   keyr^   s     r(   rC   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>   s'      ??%*??????r'   r0   r9   )r$   r\   rF   r]   s   @r(   _looks_like_msys2_mingw_schemeri      s]     U333E  ????(>???     r'   partsc              #     K   t          j        d          }t          t          dd           }|r|r|                    |          s
| E d {V  d S | D ]5}|                    |          r|d dt          |          z
           }|V  6d S )N	LDVERSIONabiflagsr   )r$   get_config_varr#   rU   rd   len)rj   	ldversionrm   parts       r(   _fix_abiflagsrr      s      (55IsJ--H  H I,>,>x,H,H    ==## 	/-1s8}},-.D



 r'   oldnewrg   c                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)rs   rt   rg   	issue_urlmessages        r(   _warn_mismatchedr{      s5    :I	 
 JJicBBBBBr'   c                :    | |k    rdS t          | ||           dS )NFrg   T)r{   )rs   rt   rg   s      r(   _warn_if_mismatchr~      s*    
czzuS#3''''4r'   FuserhomerootrV   r   r   r   rV   c                 |    g d}t                               t          d                    |          | |||           d S )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      sC      E JJ		% 0 0$dFKKKKKr'   	dist_nameisolatedc           	      p   t          j        | |||||          }t          r|S t          j        | |||||          g }t          D ]i}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|o6|dk    o0t           o(t          j        dk    ot"          dk    ot%                      }|rR|o|dv ot           ot'                      }|rr|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t1                      }|rt          o|dv ot3                      }|r)t5          j        d          ot           o|dv }|rN|                    |	|
d| f           k|sS t          j        | |||||d          t=          fdt          D                       rt?          dd d            S |D ]\  }	}
}tA          |	|
|           tC          ||||           S )N)r   r   r   r   rV   pypyrh   pythonheadersr0   )r   	   r   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#   )rA   rB   default_oldrs   s     r(   rC   zget_scheme.<locals>.<genexpr>x  s4      
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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   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_msys2_mingw_bugskip_cpython_buildrg   r   rs   s                      @@r(   r   r      s    
  C  


  C  d? d?WS!__--WS!__--E>> #v- .D .++. ,. 
%%h//	.
 
%%f-- 	 " 	  7 ""7Y7 #u|37 !,,X66 	- 0 	 	>>577>  (Y((  F*( u$	(
 &'' 	  	
  /++// -..	 	# & 	 EEE+C+E+EF NAaC $44NEK  1$N A%'N U[!!A%BQ7)B	N
 ,--L1J1L1L 	' * 	
 X33X8V8X8X 	   	 %666 ;;:: 	
  	}}} =>>>> 

 -   K 
B
B
B
B
Bk
B
B
BBB L
 		
 		
 		
 		
 
 . 0 0uc3/////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     sd    

#
%
%C 


#
%
%Cc**GL,=,=<PPP Jr'   c                  8    t          j        dd          j        S )N T)r   )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)rK   )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.r9   r}   )	r   r   r   r+   r   r~   r   r   r   r   s     r(   r   r     sy    

 
"
"C 


 
"
"C+C00 
c**GL,=,=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*   r0   r}   )
r   r   r   r   r+   r   r~   r   r   r   )rt   r+   rs   s      r(   r   r     s    

 
"
"C 

 *
 
"
"C+C00 
c**GL,=,=9MM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 8 8 8 8 8 8 8 8 8 8 8 8 ; ; ; ; ; ; ; ; . . . . . . 6 6 6 6 6 6 C C C C C C                        
	8	$	$ 73e44S 4 4 4)W4 Rt R R R R '&((    $. $oOOmO,t , , , ,JS#X J4 J J J J T"""    #" T"""O4 O O O #"O T"""D    #"& T"""Hd H H H #"H T"""    #""s 	#tT/(B      T"""C', CW\ C3 C4 C C C #"C7< gl C D     T"""  L L L
L 3-L 3-	L
 SML 
L L L #"L(  d dd
d 3-d 3-	d
 d SMd d d d dN    8c 8 8 8 8     "S    S      r'   