
    鴀j                        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dS )    )annotationsN)OrderedDict)Iterable)TracebackType)TYPE_CHECKING)BuildEnvironmentBuildEnvironmentInstallerPrefix)TempDirectorytempdir_kinds)InstallRequirementreturnset[str]c                 @    t          j                    } d | D             S )z9Get system site packages, as a normalized set of strings.c                L    h | ]!}t           j                            |          "S  )ospathnormcase).0r   s     i/workspace/show-city-briefing-agent/.venv/lib/python3.11/site-packages/pip/_internal/build_env/virtual.py	<setcomp>z*get_system_sitepackages.<locals>.<setcomp>   s(    <<<tBGT""<<<    )sitegetsitepackages)system_sitess    r   get_system_sitepackagesr      s$    '))L<<|<<<<r   c                  8    e Zd ZdZddZddZddZddddZdS )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.
    	installerr	   r   Nonec                   t           j        | _        || _        t	          t
          j        d          t          fddD                       | _        g | _	        g | _
        t          t          | j                                                            D ]@}| j	                            |j                   | j
                            |j
                   At#                      }t$          j                            j        d          | _        t$          j                            | j                  st%          j        | j                   t1          t$          j                            | j        d          dd	          5 }|                    t5          j        d
                              || j
                             d d d            d S # 1 swxY w Y   d S )NT)kindglobally_managedc              3     K   | ]8}|t          t          j                            j        |                    fV  9d S N)r
   r   r   join)r   nametemp_dirs     r   	<genexpr>z3VirtualBuildEnvironment.__init__.<locals>.<genexpr>*   sV       %
 %
 6"',,x}d;;<<=%
 %
 %
 %
 %
 %
r   )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_executabler    r   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UU$ %
 %
 %
 %
-%
 %
 %
 
 

 %'#%tDN$9$9$;$;<<== 	2 	2FN!!&.111M  1111
 /00hmV<<w~~dn-- 	%HT^$$$GLL);<<cG
 
 
 	PHHX_ &  6 VVNN7P P P	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   AGGGc                   d dD             | _         | j        d d          }| j         d         }|r2|                    |                    t          j                             | j        g}t          j                            t          j        	                    |          dt          j        	                    |          d           d S )Nc                P    i | ]#}|t           j                            |d           $S r&   )r   environget)r   r(   s     r   
<dictcomp>z5VirtualBuildEnvironment.__enter__.<locals>.<dictcomp>^   s:     
 
 
 "*..t,,
 
 
r   )PATHPYTHONNOUSERSITE
PYTHONPATHrM   1)
	_save_envr5   r;   splitr   pathsepr<   rJ   updater'   )rD   r   old_path
pythonpaths       r   	__enter__z!VirtualBuildEnvironment.__enter__]   s    
 
B
 
 

 ~aaa >&) 	4KKrz22333n%



--$' jooj99 	
 	
 	
 	
 	
r   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                    | j                                         D ]7\  }}|!t          j                            |d            (|t          j        |<   8d S r&   )rQ   itemsr   rJ   pop)rD   rX   rZ   r\   varname	old_values         r   __exit__z VirtualBuildEnvironment.__exit__r   s^     #'."6"6"8"8 	0 	0GY 
w----&/
7##		0 	0r   N)for_reqrequirementsIterable[str]prefix_as_stringstrr#   rd   InstallRequirement | Nonec                   | j         |         }|j        rJ d|_        |sd S | j                            ||||           d S )NT)r#   rd   )r4   setupr    install)rD   re   rg   r#   rd   rE   s         r   install_requirementsz,VirtualBuildEnvironment.install_requirements~   sX      01< 	F|V$PPPPPr   )r    r	   r   r!   )r   r!   )rX   rY   rZ   r[   r\   r]   r   r!   )
re   rf   rg   rh   r#   rh   rd   ri   r   r!   )__name__
__module____qualname____doc__rG   rW   rc   rm   r   r   r   r   r      s         6P 6P 6P 6Pp
 
 
 
*
0 
0 
0 
0$ .2Q Q Q Q Q Q Q Qr   r   )r   r   )
__future__r   r   r   r0   rA   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   r   r   r   <module>rz      sH   " " " " " " 				  



  # # # # # # $ $ $ $ $ $                           
 F E E E E E E E A@@@@@@= = = =nQ nQ nQ nQ nQ. nQ nQ nQ nQ nQr   