
    VPiM7                       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<   ej!        dk    Z"d6dZ# e#            Z$e$sddlm%Z% e"r
e$sej&        Z'nej(        Z'd6dZ)d7dZ*ej+        d6d            Z,ej+        d6d            Z-ej+        d6d            Z.ej+        d6d            Z/ej+        d6d            Z0ej+        d8d"            Z1d9d#Z2ej+        d$dddd%d:d+            Z3	 	 	 	 	 d;d<d/Z4d=d0Z5d=d1Z6d>d3Z7d=d4Z8d=d5Z9d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                 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)r   getattr	sysconfig_USE_SYSCONFIG_DEFAULT     t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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_44860r1   M   s[    
 :99999+K8C   uu++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   )r2   r-   	unpatcheds      r%   +_looks_like_red_hat_patched_platlib_purelibr:   [   sy    YG'!!///3E{3E3E3EFFu	733I\844y8IIIr$   c                 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>m   sT          	
_ 	L78JKK     r$   )unix_prefix	unix_home)r.   r+   allr*   s   @r%   _looks_like_red_hat_librD   e   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_schemerH   t   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.   rJ   distutils.distrK   finalize_optionsexec_prefixospathnormpathsysprefix)rJ   rK   cmds      r%   _looks_like_red_hat_schemerU   |   s     211111++++++
',,..
!
!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)r2   expandr6   r7   )r   r!   	get_pathsr/   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)rX   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I5A:Iajj.I.I*I     r$   c              3  (   K   | ]}|         V  d S r=   r#   )r>   keyr[   s     r%   r@   z1_looks_like_msys2_mingw_scheme.<locals>.<genexpr>   s'      ??%*??????r$   r-   r7   )r!   rY   rC   rZ   s   @r%   _looks_like_msys2_mingw_schemerf      s]     U333E  ????(>???     r$   oldpathlib.Pathnewrd   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)rg   ri   rd   	issue_urlmessages        r%   _warn_mismatchedrq      s5    :I	 
 JJicBBBBBr$   c               :    | |k    rdS t          | ||           dS )NFrd   T)rq   )rg   ri   rd   s      r%   _warn_if_mismatchrt      s*    
czzuS#3''''4r$   FuserhomerootrS   rv   rw   
str | Nonerx   rS   c                |    g d}t                               t          d                    |          | |||           d S )N)zAdditional context:z	user = %rz	home = %rz	root = %rzprefix = %r
)rl   rm   rn   join)rv   rw   rx   rS   partss        r%   _log_contextr~      sC      E JJ		% 0 0$dF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)rv   rw   rx   r   rS   pypyre   pythonheadersr-   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    )r>   r?   default_oldrg   s     r%   r@   zget_scheme.<locals>.<genexpr>h  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_inrs   ru   )!r
   r   _USE_SYSCONFIGr(   r   pathlibPathr    rR   implementationnameparent
startswithr   rD   r   r   r1   r\   r   r}   lenrU   rH   rf   r!   is_python_buildappenddistutils_schemeanyr   rq   r~   )r   rv   rw   rx   r   rS   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_buildrd   r   rg   s                      @@r%   r   r      sq    
  C  


  C  c? c?WS!__--WS!__--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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_prefixrs   )r
   r   r   r(   rt   r   r   r~   ri   rg   s     r%   r   r   }  sd    

#
%
%C 


#
%
%Cc**GL,=,=<PPP Jr$   c                 8    t          j        dd          j        S )N T)rv   )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)rH   )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.r7   rs   )	r
   r   r   r(   r   rt   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'   r-   rs   )
r
   r   r   r   r(   r   rt   r   r   r~   )ri   r(   rg   s      r%   r   r     s    

 
"
"C 

 *
 
"
"C+C00 
c**GL,=,=9MMM Jr$   )r   r   )r2   r3   r   r   )rg   rh   ri   rh   rd   r   r   rj   )rg   rh   ri   rh   rd   r   r   r   )
rv   r   rw   ry   rx   ry   rS   ry   r   rj   )FNNFN)r   r   rv   r   rw   ry   rx   ry   r   r   rS   ry   r   r   )r   r   )r   r   r   r   ):
__future__r   	functoolsloggingrO   r   rR   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__rl   r    r   __annotations__version_infor"   r&   r   r(   WARNINGrn   DEBUGr1   r:   cacherD   rH   rU   r\   rf   rq   rt   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	$	$ 73e44 4 4 4 4)W4 R R R R '&((    $. $oOOmO, , , ,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$   