Ë
    ‡™h.-  ã                  ó´  — d Z ddlmZ ddlZddl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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 ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z( erddl)m*Z* ddl+m,Z,  ejZ                  e.«      Z/d d„Z0 G d„ d«      Z1d!d„Z2d"d„Z3 G d„ de«      Z4 G d„ d«      Z5 G d„ d«      Z6 G d„ de6«      Z7y)#z:Build Environment used for isolation during sdist buildingé    )ÚannotationsN)ÚOrderedDict)ÚIterable)ÚTracebackType)ÚTYPE_CHECKINGÚProtocol)ÚVersion)Ú__file__)Úopen_spinner)Úget_platlibÚget_purelibÚ
get_scheme)Úget_default_environmentÚget_environment)ÚVERBOSE)Úget_requirement)Úcall_subprocess)ÚTempDirectoryÚtempdir_kinds)ÚPackageFinder)ÚInstallRequirementc                ó   — | |k7  r| |fS | fS ©N© )ÚaÚbs     úX/home/bbl/html/w1hd-tracker/venv/lib/python3.12/site-packages/pip/_internal/build_env.pyÚ_dedupr   "   s   € Ø˜!’VˆAˆqˆ6Ð% ! Ð%ó    c                  ó   — e Zd Zdd„Zy)Ú_Prefixc                ó¦   — || _         d| _        t        d|¬«      }|j                  | _        t        |j                  |j                  «      | _        y )NFÚ )Úprefix)	ÚpathÚsetupr   ÚscriptsÚbin_dirr   ÚpurelibÚplatlibÚlib_dirs)Úselfr%   Úschemes      r   Ú__init__z_Prefix.__init__'   s=   € ØˆŒ	ØˆŒ
Ü˜B tÔ,ˆØ—~‘~ˆŒÜ˜vŸ~™~¨v¯~©~Ó>ˆ�r   N)r%   ÚstrÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__r.   r   r   r   r!   r!   &   s   „ ô?r   r!   c                 óÊ   — t        j                  t        «      j                  «       j                  } | j                  «       st        | «      S t        j                  | dz  «      S )z¸Get a file to pass to a Python executable, to run the currently-running pip.

    This is used to run a pip subprocess, for installing requirements into the build
    environment.
    z__pip-runner__.py)	ÚpathlibÚPathÚpip_locationÚresolveÚparentÚis_dirr/   ÚosÚfsdecode)Úsources    r   Úget_runnable_pipr?   /   sK   € ô �\‰\œ,Ó'×/Ñ/Ó1×8Ñ8€Fà�=‰=Œ?ô �6‹{Ðä�;‰;�vÐ 3Ñ3Ó4Ð4r   c                 óØ   — t        t        d«      rt        j                  «       } nt        «       t	        «       g} | D �ch c]!  }t
        j                  j                  |«      ’Œ# c}S c c}w )zâGet system site packages

    Usually from site.getsitepackages,
    but fallback on `get_purelib()/get_platlib()` if unavailable
    (e.g. in a virtualenv created by virtualenv<20)

    Returns normalized set of strings.
    Úgetsitepackages)ÚhasattrÚsiterA   r   r   r<   r%   Únormcase)Úsystem_sitesr%   s     r   Ú_get_system_sitepackagesrF   ?   sP   € ô ŒtÐ&Ô'Ü×+Ñ+Ó-‰ô $›¤{£}Ð5ˆØ/;Ö< tŒB�G‰G×Ñ˜TÕ"Ò<Ð<ùÒ<s   ¾&A'c                  ó,   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 dd„Zy)ÚBuildEnvironmentInstallerz]
    Interface for installing build dependencies into an isolated build
    environment.
    c                ó   — y r   r   )r,   Úrequirementsr$   ÚkindÚfor_reqs        r   Úinstallz!BuildEnvironmentInstaller.installY   s   € ð r   N©
rJ   úIterable[str]r$   r!   rK   r/   rL   úInstallRequirement | Noner0   r1   )r2   r3   r4   Ú__doc__rM   r   r   r   rH   rH   S   s<   „ ñð
à#ðð ðð
 ðð +ðð 
ôr   rH   c                  ó4   — e Zd ZdZdd„Z	 	 	 	 	 	 	 	 	 	 dd„Zy)Ú#SubprocessBuildEnvironmentInstallerzD
    Install build dependencies by calling pip in a subprocess.
    c                ó   — || _         y r   )Úfinder)r,   rU   s     r   r.   z,SubprocessBuildEnvironmentInstaller.__init__h   s	   € Øˆ�r   c               óJ  — | j                   }t        j                  t        «       dddd|j                  ddddd	g}t
        j                  «       t        j                  k  r|j                  d
«       n,t
        j                  «       t        k  r|j                  d«       dD ][  }t        |j                  |«      }|j                  d|j                  dd«      z   dj                  t!        |xs dh«      «      f«       Œ] |j"                  }	|	r4|j                  d|	d   g«       |	dd  D ]  }
|j                  d|
g«       Œ n|j                  d«       |j$                  D ]  }|j                  d|g«       Œ |j&                  r|j                  d|j&                  g«       |j(                  D ]  }|j                  d|g«       Œ |j*                  r|j                  d|j*                  g«       |j,                  r|j                  d|j,                  g«       |j.                  r|j                  d«       |j0                  r|j                  d«       |j                  d«       |j                  |«       t3        d|› �«      5 }t5        |d|› �|¬ «       d d d «       y # 1 sw Y   y xY w)!NrM   z--ignore-installedz	--no-userz--prefixz--no-warn-script-locationz--disable-pip-version-checkz--no-compilez--targetr#   z-vvz-v)Ú	no_binaryÚonly_binaryz--Ú_ú-ú,z:none:z-ir   é   z--extra-index-urlz
--no-indexz--find-linksz--proxyz--trusted-hostz--certz--client-certz--prez--prefer-binaryzInstalling zpip subprocess to install )Úcommand_descÚspinner)rU   ÚsysÚ
executabler?   r%   ÚloggerÚgetEffectiveLevelÚloggingÚDEBUGÚappendr   ÚgetattrÚformat_controlÚextendÚreplaceÚjoinÚsortedÚ
index_urlsÚ
find_linksÚproxyÚtrusted_hostsÚcustom_certÚclient_certÚallow_all_prereleasesÚprefer_binaryr   r   )r,   rJ   r$   rK   rL   rU   Úargsrg   Úformatsrl   Úextra_indexÚlinkÚhostr^   s                 r   rM   z+SubprocessBuildEnvironmentInstaller.installk   sn  € ð —‘ˆä�N‰NÜÓØØ ØØØ�K‰KØ'Ø)ð ð Øð#
ˆô& ×#Ñ#Ó%¬¯©Ò6Ø�K‰K˜ÕÜ×%Ñ%Ó'¬7Ò2Ø�K‰K˜ÔØ:ò 	ˆNÜ˜f×3Ñ3°^ÓDˆGØ�K‰Kà˜>×1Ñ1°#°sÓ;Ñ;Ø—H‘HœV GÒ$9°¨zÓ:Ó;ðõð	ð ×&Ñ&ˆ
ÙØ�K‰K˜˜z¨!™}Ð-Ô.Ø)¨!¨"˜~ò @�Ø—‘Ð0°+Ð>Õ?ñ@ð �K‰K˜Ô%Ø×%Ñ%ò 	0ˆDØ�K‰K˜¨Ð.Õ/ð	0ð �<Š<Ø�K‰K˜ F§L¡LÐ1Ô2Ø×(Ñ(ò 	2ˆDØ�K‰KÐ)¨4Ð0Õ1ð	2à×ÒØ�K‰K˜ 6×#5Ñ#5Ð6Ô7Ø×ÒØ�K‰K˜¨&×*<Ñ*<Ð=Ô>Ø×'Ò'Ø�K‰K˜Ô Ø×ÒØ�K‰KÐ)Ô*Ø�‰�DÔØ�‰�LÔ!Ü˜K¨ vÐ.Ó/ð 	°7ÜØØ9¸$¸Ð@Øõ÷	÷ 	ñ 	ús   É>JÊJ"N)rU   r   r0   r1   rN   )r2   r3   r4   rQ   r.   rM   r   r   r   rS   rS   c   sG   „ ñóðFà#ðFð ðFð
 ðFð +ðFð 
ôFr   rS   c                  óh   — e Zd ZdZd	d„Zd
d„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Zddœ	 	 	 	 	 	 	 	 	 dd„Zy)ÚBuildEnvironmentzACreates and manages an isolated environment to install build depsc                ó¤  ‡— || _         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&                  «       t-        t         j"                  j%                  | j&                  d«      dd¬	«      5 }|j/                  t1        j2                  d
«      j5                  || j                  ¬«      «       d d d «       y # 1 sw Y   y xY w)NT)rK   Úglobally_managedc              3  óˆ   •K  — | ]9  }|t        t        j                  j                  ‰j                  |«      «      f–— Œ; y ­wr   )r!   r<   r%   rj   )Ú.0ÚnameÚtemp_dirs     €r   ú	<genexpr>z,BuildEnvironment.__init__.<locals>.<genexpr>»   s6   øè ø€ ò %
àð ”7œ2Ÿ7™7Ÿ<™<¨¯©°tÓ<Ó=Ô>ñ%
ùs   ƒ?A)ÚnormalÚoverlayrC   zsitecustomize.pyÚwzutf-8)ÚencodingaŸ  
                import os, site, sys

                # First, drop system-sites related paths.
                original_sys_path = 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[len(original_sys_path):]
                )
                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)
                )rE   r+   )Ú	installerr   r   Ú	BUILD_ENVr   Ú	_prefixesÚ	_bin_dirsÚ	_lib_dirsÚreversedÚlistÚvaluesre   r(   rh   r+   rF   r<   r%   rj   Ú	_site_dirÚexistsÚmkdirÚopenÚwriteÚtextwrapÚdedentÚformat)r,   r†   r$   rE   Úfpr€   s        @r   r.   zBuildEnvironment.__init__·   sL  ø€ Ø"ˆŒÜ ¤m×&=Ñ&=ÐPTÔUˆä$ó %
à-ô%
ó 
ˆŒð
 %'ˆŒØ$&ˆŒÜœt D§N¡N×$9Ñ$9Ó$;Ó<Ó=ò 	3ˆFØ�N‰N×!Ñ! &§.¡.Ô1Ø�N‰N×!Ñ! &§/¡/Õ2ð	3ô 0Ó1ˆäŸ™Ÿ™ h§m¡m°VÓ<ˆŒÜ�w‰w�~‰~˜dŸn™nÔ-Ü�H‰H�T—^‘^Ô$ÜÜ�G‰G�L‰L˜Ÿ™Ð);Ó<¸cÈGô
ð 	àØ�H‰HÜ—‘ðó÷2 ‘& l¸T¿^¹^�&ÓLô5÷	÷ 	ñ 	ú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Ú
PYTHONPATHr˜   Ú1)r<   ÚenvironÚgetÚ	_save_envr‰   rh   ÚsplitÚpathseprŽ   Úupdaterj   )r,   r   r%   Úold_pathÚ
pythonpaths        r   Ú	__enter__zBuildEnvironment.__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   )rž   Úitemsr<   rœ   Úpop)r,   Úexc_typeÚexc_valÚexc_tbÚvarnameÚ	old_values         r   Ú__exit__zBuildEnvironment.__exit__  sK   € ð #'§.¡.×"6Ñ"6Ó"8ò 	0ÑˆG�YØÐ Ü—
‘
—‘˜w¨Õ-à&/”—
‘
˜7Ò#ñ		0r   c                ó|  — t        «       }t        «       }|�r"t        | d«      rt        | j                  «      n	t	        «       }|D ]ò  }t        |«      }|j                  �|j                  j                  ddi«      sŒ8|j                  |j                  «      }|s|j                  |«       Œgt        |j                  t        «      r|j                  › d|j                  › �}n|j                  › d|j                  › �}|j                  j                  |j                  d¬«      rŒà|j                  ||f«       Œô ||fS )zŽReturn 2 sets:
        - conflicting requirements: set of (installed, wanted) reqs tuples
        - missing requirements: set of reqs
        rŠ   Úextrar#   z==z===T)Úprereleases)ÚsetrB   r   rŠ   r   r   ÚmarkerÚevaluateÚget_distributionr   ÚaddÚ
isinstanceÚversionr	   Ú	specifierÚcontains)	r,   ÚreqsÚmissingÚconflictingÚenvÚreq_strÚreqÚdistÚinstalled_req_strs	            r   Úcheck_requirementsz#BuildEnvironment.check_requirements  s  € ô “%ˆÜ“eˆÚô ˜4 Ô-ô   §¡Ô/ä,Ó.ð ð
  ò B�Ü% gÓ.�ð —:‘:Ð)°#·*±*×2EÑ2EÀwÐPRÀmÔ2TØØ×+Ñ+¨C¯H©HÓ5�ÙØ—K‘K Ô(ØÜ˜dŸl™l¬GÔ4Ø+.¯8©8¨*°B°t·|±|°nÐ(EÑ%à+.¯8©8¨*°C¸¿¹°~Ð(FÐ%Ø—}‘}×-Ñ-¨d¯l©lÈÐ-ÕMØ—O‘OÐ%6¸Ð$@ÕAðBð" ˜GÐ#Ð#r   N©rL   c               ó�   — | j                   |   }|j                  rJ ‚d|_        |sy | j                  j                  ||||¬«       y )NT)rK   rL   )rˆ   r&   r†   rM   )r,   rJ   Úprefix_as_stringrK   rL   r$   s         r   Úinstall_requirementsz%BuildEnvironment.install_requirements1  sH   € ð —‘Ð 0Ñ1ˆØ—<’<ÐÐØˆŒÙØØ�‰×Ñ˜|¨V¸$ÈÐÕPr   )r†   rH   r0   r1   ©r0   r1   ©r¨   ztype[BaseException] | Noner©   zBaseException | Nonerª   zTracebackType | Noner0   r1   )rº   rO   r0   z%tuple[set[tuple[str, str]], set[str]]©
rJ   rO   rÅ   r/   rK   r/   rL   rP   r0   r1   )	r2   r3   r4   rQ   r.   r¤   r­   rÂ   rÆ   r   r   r   rz   rz   ´   s‘   „ ÙKó5ón
ð*
0à,ð
0ð &ð
0ð %ð	
0ð
 
ó
0ð $Ø!ð $à	.ó $ðP .2ñQà#ðQð ðQð
 ðQð +ðQð 
ôQr   rz   c                  ó`   — e Zd ZdZd	d„Zd	d„Z	 	 	 	 	 	 	 	 d
d„Zd	d„Zddœ	 	 	 	 	 	 	 	 	 dd„Zy)ÚNoOpBuildEnvironmentz0A no-op drop-in replacement for BuildEnvironmentc                 ó   — y r   r   ©r,   s    r   r.   zNoOpBuildEnvironment.__init__D  ó   € Ør   c                 ó   — y r   r   rÍ   s    r   r¤   zNoOpBuildEnvironment.__enter__G  rÎ   r   c                 ó   — y r   r   )r,   r¨   r©   rª   s       r   r­   zNoOpBuildEnvironment.__exit__J  s   € ð 	r   c                 ó   — y r   r   rÍ   s    r   ÚcleanupzNoOpBuildEnvironment.cleanupR  rÎ   r   NrÃ   c               ó   — t        «       ‚r   )ÚNotImplementedError)r,   rJ   rÅ   rK   rL   s        r   rÆ   z)NoOpBuildEnvironment.install_requirementsU  s   € ô "Ó#Ð#r   rÇ   rÈ   rÉ   )	r2   r3   r4   rQ   r.   r¤   r­   rÒ   rÆ   r   r   r   rË   rË   A  sy   „ Ù:óóðà,ðð &ðð %ð	ð
 
óóð .2ñ$à#ð$ð ð$ð
 ð$ð +ð$ð 
ô$r   rË   )r   r/   r   r/   r0   ztuple[str] | tuple[str, str])r0   r/   )r0   zset[str])8rQ   Ú
__future__r   rc   r<   r6   rC   r_   r“   Úcollectionsr   Úcollections.abcr   Útypesr   Útypingr   r   Úpip._vendor.packaging.versionr	   Úpipr
   r8   Úpip._internal.cli.spinnersr   Úpip._internal.locationsr   r   r   Úpip._internal.metadatar   r   Úpip._internal.utils.loggingr   Úpip._internal.utils.packagingr   Úpip._internal.utils.subprocessr   Úpip._internal.utils.temp_dirr   r   Ú"pip._internal.index.package_finderr   Úpip._internal.req.req_installr   Ú	getLoggerr2   ra   r   r!   r?   rF   rH   rS   rz   rË   r   r   r   ú<module>ræ      s°   ðÙ @å "ã Û 	Û Û Û 
Û Ý #Ý $Ý ß *å 1å (Ý 3ß HÑ Hß KÝ /Ý 9Ý :ß EáÝ@Ý@à	ˆ×	Ñ	˜8Ó	$€ó&÷?ñ ?ó5ó =ô( ô ÷ Nñ N÷bJQñ JQôZ$Ð+õ $r   