§
    �’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     úMC:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\build_env\virtual.pyú	<setcomp>z*get_system_sitepackages.<locals>.<setcomp>   s(   € Ð<Ð<Ð< t�BŒG×Ò˜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ˆå$ð %
ð %
ð %
ð %
à-ð%
ñ %
ô %
ñ 
ô 
ˆŒð
 %'ˆŒØ#%ˆŒÝ�t D¤N×$9Ò$9Ñ$;Ô$;Ñ<Ô<Ñ=Ô=ð 	2ð 	2ˆFØŒN×!Ò! &¤.Ñ1Ô1Ð1ØŒM× Ò  ¤Ñ1Ô1Ð1Ð1õ
 /Ñ0Ô0ˆåœŸš h¤m°VÑ<Ô<ˆŒÝŒw�~Š~˜dœnÑ-Ô-ð 	%ÝŒH�T”^Ñ$Ô$Ð$ÝÝŒG�LŠL˜œÐ);Ñ<Ô<¸cÈGð
ñ 
ô 
ð 	PàØ�HŠH•X”_ð &ñ ô ÷6 ’V¨ÀÄ�VÑNÔNñ7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ð
ñ 
ô 
ˆŒð
 Œ~˜a˜a˜aÔ ˆØ”> &Ô)ˆØð 	4Ø�KŠK˜Ÿš¥r¤zÑ2Ô2Ñ3Ô3Ð3à”nÐ%ˆ
å
Œ
×Òåœ
Ÿš¨Ñ-Ô-Ø$'Ý œjŸošo¨jÑ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ÑˆG�YØÐ Ý”
—’˜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   