Ë
    ¨Õ°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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     úU/var/www/mission/venv/lib/python3.12/site-packages/pip/_internal/build_env/virtual.pyÚget_system_sitepackagesr      s3   € ä×'Ñ'Ó)€LØ/;Ö< tŒB�G‰G×Ñ˜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ˆä$ó %
à-ô%
ó 
ˆŒð
 %'ˆŒØ#%ˆŒÜœt D§N¡N×$9Ñ$9Ó$;Ó<Ó=ò 	2ˆFØ�N‰N×!Ñ! &§.¡.Ô1Ø�M‰M× Ñ  §¡Õ1ð	2ô /Ó0ˆäŸ™Ÿ™ h§m¡m°VÓ<ˆŒÜ�w‰w�~‰~˜dŸn™nÔ-Ü�H‰H�T—^‘^Ô$ÜÜ�G‰G�L‰L˜Ÿ™Ð);Ó<¸cÈGô
ð 	PàØ�H‰H”X—_‘_ð &ó ÷6 ‘V¨ÀÇÁ�VÓNô7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Ð ˆØ—>‘> &Ñ)ˆÙØ�K‰K˜Ÿ™¤r§z¡zÓ2Ô3à—n‘nÐ%ˆ
ä
�
‰
×ÑäŸ
™
Ÿ™¨Ó-Ø$'Ü Ÿj™jŸo™o¨jÓ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ÑˆG�YØÐ Ü—
‘
—‘˜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   