
    'j                        S SK Jr  S SKrS SKrS SKrS SK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  S SKJrJr  \(       a  S S	KJr  SS
 jr " S S\5      rg)    )annotationsN)OrderedDict)Iterable)TracebackType)TYPE_CHECKING)BuildEnvironmentBuildEnvironmentInstallerPrefix)TempDirectorytempdir_kinds)InstallRequirementc                     [         R                  " 5       n U  Vs1 s H"  n[        R                  R	                  U5      iM$     sn$ s  snf )z9Get system site packages, as a normalized set of strings.)sitegetsitepackagesospathnormcase)system_sitesr   s     W/var/www/html/KUNJ/venv/lib/python3.13/site-packages/pip/_internal/build_env/virtual.pyget_system_sitepackagesr      s7    '')L/;<|tBGGT"|<<<s   )Ac                  j    \ rS rSrSrS
S jrSS jr        SS jrSS.         SS jjrS	r	g)VirtualBuildEnvironment   zLegacy build environment implementation.

Patches sys.path and uses sitecustomize.py to isolate Python processes. It has
known bugs and weird edge cases, but it exists as a fallback for platforms where
the venv module is unavailable or dysfunctional.
c                  ^ [         R                  U l        Xl        [	        [
        R                  SS9m[        U4S jS 5       5      U l        / U l	        / U l
        [        [        U R                  R                  5       5      5       HM  nU R                  R                  UR                  5        U R                  R!                  UR                  5        MO     [#        5       n[$        R&                  R)                  TR&                  S5      U l        [$        R&                  R-                  U R*                  5      (       d   [$        R.                  " U R*                  5        [1        [$        R&                  R)                  U R*                  S5      SSS	9 nUR3                  [4        R6                  " S
5      R9                  X0R                  S95        S S S 5        g ! , (       d  f       g = f)NT)kindglobally_managedc              3     >#    U  H:  nU[        [        R                  R                  TR                  U5      5      4v   M<     g 7fN)r
   r   r   join).0nametemp_dirs     r   	<genexpr>3VirtualBuildEnvironment.__init__.<locals>.<genexpr>*   s5      %
- 6"'',,x}}d;<=-s   AA)normaloverlayr   zsitecustomize.pywzutf-8)encodinga  
                import os, site, sys

                # First, discover all system-sites related paths.
                original_sys_path = sys.path[:]
                # Clear sys.path so addsitedir() will add system site paths and paths
                # added by contained .pth files to sys.path reliably. This is necessary
                # since Python 3.15, which notably no longer re-executes .pth files for
                # known paths.
                sys.path = []
                known_paths = set()
                for path in {system_sites!r}:
                    site.addsitedir(path, known_paths=known_paths)
                system_paths = set(os.path.normcase(path) for path in sys.path)

                # Drop discovered system-sites related paths.
                original_sys_path = [
                    path for path in original_sys_path
                    if os.path.normcase(path) not in system_paths
                ]
                sys.path = original_sys_path

                # Second, add lib directories.
                # ensuring .pth file are processed.
                for path in {lib_dirs!r}:
                    assert not path in sys.path
                    site.addsitedir(path)
                )r   lib_dirs)sys
executablepython_executable	installerr   r   	BUILD_ENVr   	_prefixes	_bin_dirsr)   reversedlistvaluesappendbin_dirextendr   r   r   r   	_site_direxistsmkdiropenwritetextwrapdedentformat)selfr-   prefixr   fpr"   s        @r   __init__ VirtualBuildEnvironment.__init__%   sM   !$" m&=&=PTU$ %
-%
 

 %'#%tDNN$9$9$;<=FNN!!&..1MM  1 > /0hmmV<ww~~dnn--HHT^^$GGLL);<cG
HHX__ & 6 VVN7P
 
 
s   =G
G(c                   S Vs0 s H$  nU[         R                  R                  US 5      _M&     snU l        U R                  S S  nU R                  S   nU(       a.  UR                  UR                  [         R                  5      5        U R                  /n[         R                  R                  [         R                  R                  U5      S[         R                  R                  U5      S.5        g s  snf )N)PATHPYTHONNOUSERSITE
PYTHONPATHrE   1)r   environget	_save_envr0   r6   splitpathsepr7   updater   )r?   r!   r   old_path
pythonpaths        r   	__enter__!VirtualBuildEnvironment.__enter__]   s     C
B "**..t,,B

 ~~a >>&)KKrzz23nn%





-$' jjooj9	

s   +C6c                    U R                   R                  5        H=  u  pEUc"  [        R                  R	                  US 5        M*  U[        R                  U'   M?     g r   )rK   itemsr   rI   pop)r?   exc_typeexc_valexc_tbvarname	old_values         r   __exit__ VirtualBuildEnvironment.__exit__r   sD     #'.."6"6"8G 

w-&/

7#	 #9    N)for_reqc                   U R                   U   nUR                  (       a   eSUl        U(       d  g U R                  R                  XX4S9  g )NT)r   r^   )r/   setupr-   install)r?   requirementsprefix_as_stringr   r^   r@   s         r   install_requirements,VirtualBuildEnvironment.install_requirements~   sD      01<<|$Pr]   )r0   r/   rK   r7   r-   r)   r,   )r-   r	   returnNone)rf   rg   )rV   ztype[BaseException] | NonerW   zBaseException | NonerX   zTracebackType | Nonerf   rg   )
rb   zIterable[str]rc   strr   rh   r^   zInstallRequirement | Nonerf   rg   )
__name__
__module____qualname____firstlineno____doc__rB   rQ   r[   rd   __static_attributes__ r]   r   r   r      s    6Pp
*
0,
0 &
0 %	
0
 

0$ .2Q#Q Q
 Q +Q 
Q Qr]   r   )rf   zset[str])
__future__r   r   r   r*   r<   collectionsr   collections.abcr   typesr   typingr   pip._internal.build_env.baser   r	   r
   pip._internal.utils.temp_dirr   r   pip._internal.req.req_installr   r   r   ro   r]   r   <module>rx      sL    " 	  
  # $    
 F@=nQ. nQr]   