
    5>qj                        d dl mZ d dlZd dlZd dlZd dl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 d dlmZmZ erd d	lmZ dd
Z G d de      Zy)    )annotationsN)OrderedDict)Iterable)TracebackType)TYPE_CHECKING)BuildEnvironmentBuildEnvironmentInstallerPrefix)TempDirectorytempdir_kinds)InstallRequirementc                     t        j                         } | D ch c]!  }t        j                  j	                  |      # c}S c c}w )z9Get system site packages, as a normalized set of strings.)sitegetsitepackagesospathnormcase)system_sitesr   s     ^/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pip/_internal/build_env/virtual.pyget_system_sitepackagesr      s3    '')L/;<tBGGT"<<<s   &Ac                  X    e Zd ZdZddZd	dZ	 	 	 	 	 	 	 	 d
dZdd	 	 	 	 	 	 	 	 	 ddZy)VirtualBuildEnvironmenta  Legacy 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                   t         j                  | _        || _        t	        t
        j                  d      t        fddD              | _        g | _	        g | _
        t        t        | j                  j                                     D ]L  }| j                  j                  |j                         | j                  j!                  |j                         N t#               }t$        j&                  j)                  j&                  d      | _        t$        j&                  j-                  | j*                        st%        j.                  | j*                         t1        t$        j&                  j)                  | j*                  d      dd	      5 }|j3                  t5        j6                  d
      j9                  || j                               d d d        y # 1 sw Y   y xY w)NT)kindglobally_managedc              3     K   | ]9  }|t        t        j                  j                  j                  |            f ; y wN)r
   r   r   join).0nametemp_dirs     r   	<genexpr>z3VirtualBuildEnvironment.__init__.<locals>.<genexpr>*   s6      %
 6"'',,x}}d;<=%
s   ?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__z VirtualBuildEnvironment.__init__%   s\   !$" m&=&=PTU$ %
-%
 

 %'#%tDNN$9$9$;<= 	2FNN!!&..1MM  1	2 /0hmmV<ww~~dnn-HHT^^$GGLL);<cG
 	PHHX__ & 6 VVN7P	P 	P 	Ps   A GG$c                   dD ci c]#  }|t         j                  j                  |d       % c}| _        | j                  d d  }| j                  d   }|r.|j                  |j                  t         j                               | j                  g}t         j                  j                  t         j                  j                  |      dt         j                  j                  |      d       y c c}w )N)PATHPYTHONNOUSERSITE
PYTHONPATHrB   1)r   environget	_save_envr.   r4   splitpathsepr5   updater   )r=   r    r   old_path
pythonpaths        r   	__enter__z!VirtualBuildEnvironment.__enter__]   s     C
 "**..t,,

 ~~a >>&)KKrzz23nn%





-$' jjooj9	

s   (C.c                    | j                   j                         D ];  \  }}|!t        j                  j	                  |d        )|t        j                  |<   = y r   )rH   itemsr   rF   pop)r=   exc_typeexc_valexc_tbvarname	old_values         r   __exit__z VirtualBuildEnvironment.__exit__r   sK     #'.."6"6"8 	0GY 

w-&/

7#		0    N)for_reqc                   | j                   |   }|j                  rJ d|_        |sy | j                  j                  ||||       y )NT)r   rY   )r-   setupr+   install)r=   requirementsprefix_as_stringr   rY   r>   s         r   install_requirementsz,VirtualBuildEnvironment.install_requirements~   sH      01<<|V$PrX   )r+   r	   returnNone)r`   ra   )rR   ztype[BaseException] | NonerS   zBaseException | NonerT   zTracebackType | Noner`   ra   )
r]   zIterable[str]r^   strr   rb   rY   zInstallRequirement | Noner`   ra   )__name__
__module____qualname____doc__r@   rN   rW   r_    rX   r   r   r      s~    6Pp
*
0,
0 &
0 %	
0
 

0$ .2Q#Q Q
 Q +Q 
QrX   r   )r`   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   rg   rX   r   <module>rp      sL    " 	  
  # $    
 F@=nQ. nQrX   