Ë
    äØjjà  ã                   ó&  — 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mZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ  ej&                  e«      Ze j,                  deded	   fd
„«       Ze j,                  ded   fd„«       Z G d„ de«      Z G d„ d«      Zy)é    N)ÚTracebackType)ÚDictÚ	GeneratorÚOptionalÚSetÚTypeÚUnion)ÚLink)ÚInstallRequirement)ÚTempDirectoryÚchangesÚreturn©NNNc               +   ó¨  K  — t         j                  }t        «       }i }| j                  «       D ]  \  }}	 ||   ||<   |||<   Œ 	 d –— |j                  «       D ]$  \  }}||u r||= Œt        |t        «      sJ ‚|||<   Œ& y # t        $ r |||<   Y ŒTw xY w# |j                  «       D ]$  \  }}||u r||= Œt        |t        «      sJ ‚|||<   Œ& w xY w­w©N)ÚosÚenvironÚobjectÚitemsÚKeyErrorÚ
isinstanceÚstr)r   ÚtargetÚnon_existent_markerÚsaved_valuesÚnameÚ	new_valueÚoriginal_values          ún/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.pyÚupdate_env_context_managerr       s  è ø€ ä�Z‰Z€Fô !›(ÐØ24€LØ"Ÿ=™=›?ò !‰ˆˆið	5Ø!'¨¡ˆL˜Ñð !ˆˆtŠð!ð	.Ûð %1×$6Ñ$6Ó$8ò 	.Ñ ˆD�.ØÐ!4Ñ4Ø˜4‘Lä! .´#Ô6Ð6Ð6Ø-��t’ñ	.øô ò 	5Ø!4ˆL˜Óð	5ûð %1×$6Ñ$6Ó$8ò 	.Ñ ˆD�.ØÐ!4Ñ4Ø˜4‘Lä! .´#Ô6Ð6Ð6Ø-��t’ñ	.üs?   ‚3C¶B¾CÁB Á
8CÂBÂCÂBÂCÂ9CÃC)ÚBuildTrackerNNc               #   ó”  K  — t         j                  j                  d«      } t        j                  «       5 }| €V|j                  t        d¬«      «      j                  } |j                  t        | ¬«      «       t        j                  d| «       t        | «      5 }|–— d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)NÚPIP_BUILD_TRACKERzbuild-tracker)Úkind)r#   z Initialized build tracking at %s)r   r   ÚgetÚ
contextlibÚ	ExitStackÚenter_contextr   Úpathr    ÚloggerÚdebugr!   )ÚrootÚctxÚtrackers      r   Úget_build_trackerr/   )   s§   è ø€ ä�:‰:�>‰>Ð-Ó.€DÜ	×	Ñ	Ó	ð  3Øˆ<Ø×$Ñ$¤]¸Ô%HÓI×NÑNˆDØ×ÑÔ8È4ÔPÔQÜ�L‰LÐ;¸TÔBä˜$Óð 	 7ØŠM÷	÷ð ÷	ð 	ú÷ð üs5   ‚4C¶A$B<ÂB0ÂB<Â'	CÂ0B9	Â5B<Â<CÃCc                   ó   — e Zd ZdZy)Ú	TrackerIdz:Uniquely identifying string provided to the build tracker.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    r   r1   r1   6   s   „ ÚDr7   r1   c                   óÐ   — e Zd ZdZdeddfd„Zdd„Zdeee	      dee	   d	ee
   ddfd
„Zdedefd„Zdededdfd„Zdededdfd„Zdd„Zej&                  dededed   fd„«       Zy)r!   a7  Ensure that an sdist cannot request itself as a setup requirement.

    When an sdist is prepared, it identifies its setup requirements in the
    context of ``BuildTracker.track()``. If a requirement shows up recursively, this
    raises an exception.

    This stops fork bombs embedded in malicious packages.r,   r   Nc                 ó`   — || _         i | _        t        j                  d| j                   «       y )NzCreated build tracker: %s)Ú_rootÚ_entriesr*   r+   )Úselfr,   s     r   Ú__init__zBuildTracker.__init__C   s#   € ØˆŒ
Ø=?ˆŒÜ�‰Ð0°$·*±*Õ=r7   c                 óF   — t         j                  d| j                  «       | S )NzEntered build tracker: %s)r*   r+   r:   )r<   s    r   Ú	__enter__zBuildTracker.__enter__H   s   € Ü�‰Ð0°$·*±*Ô=Øˆr7   Úexc_typeÚexc_valÚexc_tbc                 ó$   — | j                  «        y r   )Úcleanup)r<   r@   rA   rB   s       r   Ú__exit__zBuildTracker.__exit__L   s   € ð 	�‰�r7   Úkeyc                 ó¸   — t        j                  |j                  «       «      j                  «       }t        j
                  j                  | j                  |«      S r   )ÚhashlibÚsha224ÚencodeÚ	hexdigestr   r)   Újoinr:   )r<   rF   Úhasheds      r   Ú_entry_pathzBuildTracker._entry_pathT   s8   € Ü—‘ §
¡
£Ó-×7Ñ7Ó9ˆÜ�w‰w�|‰|˜DŸJ™J¨Ó/Ð/r7   Úreqc                 óð  — | j                  |«      }	 t        |«      5 }|j                  «       }ddd«       dj                  |j                  «      }t        |«      ‚# 1 sw Y   Œ0xY w# t        $ r Y nw xY w|| j                  vsJ ‚t        |dd¬«      5 }|j                  t        |«      «       ddd«       n# 1 sw Y   nxY w|| j                  |<   t        j                  d|| j                  «       y)z,Add an InstallRequirement to build tracking.Nz{} is already being built: {}Úwzutf-8)ÚencodingzAdded %s to build tracker %r)rN   ÚopenÚreadÚformatÚlinkÚLookupErrorÚFileNotFoundErrorr;   Úwriter   r*   r+   r:   )r<   rO   rF   Ú
entry_pathÚfpÚcontentsÚmessages          r   ÚaddzBuildTracker.addX   sã   € ð ×%Ñ% cÓ*ˆ
ð	'Ü�jÓ!ð % RØŸ7™7›9�÷%ð
 6×<Ñ<¸S¿X¹XÀxÓPˆGÜ˜gÓ&Ð&÷%ð %ûä ò 	Ùð	úð ˜$Ÿ-™-Ñ'Ð'Ð'ô �*˜c¨GÔ4ð 	¸Ø�H‰H”S˜“XÔ÷	÷ 	ñ 	úà ˆ�‰�cÑä�‰Ð3°S¸$¿*¹*ÕEs3   “A* žA¯A* ÁA'Á#A* Á*	A6Á5A6ÂB;Â;Cc                 ó¨   — t        j                  | j                  |«      «       | j                  |= t        j                  d|| j                  «       y)z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN)r   ÚunlinkrN   r;   r*   r+   r:   )r<   rO   rF   s      r   ÚremovezBuildTracker.removes   s<   € ô 	�	‰	�$×"Ñ" 3Ó'Ô(Ø�M‰M˜#Ðä�‰Ð7¸¸d¿j¹jÕIr7   c                 ó¾   — t        | j                  j                  «       «      D ]  \  }}| j                  ||«       Œ t        j                  d| j                  «       y )NzRemoved build tracker: %r)Úlistr;   r   ra   r*   r+   r:   )r<   rF   rO   s      r   rD   zBuildTracker.cleanup|   sJ   € Ü˜TŸ]™]×0Ñ0Ó2Ó3ò 	"‰HˆC�Ø�K‰K˜˜SÕ!ð	"ô 	�‰Ð0°$·*±*Õ=r7   r   c              #   ór   K  — t        |«      }| j                  ||«       d–— | j                  ||«       y­w)zÙEnsure that `key` cannot install itself as a setup requirement.

        :raises LookupError: If `key` was already provided in a parent invocation of
                             the context introduced by this method.N)r1   r^   ra   )r<   rO   rF   Ú
tracker_ids       r   ÚtrackzBuildTracker.track‚   s0   è ø€ ô ˜s“^ˆ
Ø�‰��jÔ!ÛØ�‰�C˜Õ$ùs   ‚57)r   r!   )r   N)r2   r3   r4   r5   r   r=   r?   r   r   ÚBaseExceptionr   rE   r1   rN   r   r^   ra   rD   r&   Úcontextmanagerr   rf   r6   r7   r   r!   r!   :   sê   „ ñ=ð>˜Sð > Tó >ó
ðà˜4 Ñ.Ñ/ðð ˜-Ñ(ðð ˜Ñ'ð	ð
 
óð0˜yð 0¨Só 0ðFÐ)ð F°	ð F¸dó Fð6JÐ,ð J°9ð JÀó Jó>ð ×Ñð%Ð+ð %°#ð %¸)ÐDTÑ:Uò %ó ñ%r7   r!   )r&   rH   Úloggingr   Útypesr   Útypingr   r   r   r   r   r	   Úpip._internal.models.linkr
   Úpip._internal.req.req_installr   Úpip._internal.utils.temp_dirr   Ú	getLoggerr2   r*   rh   r   r    r/   r1   r!   r6   r7   r   ú<module>rp      s¤   ðÛ Û Û Û 	Ý ß >× >å *Ý <Ý 6à	ˆ×	Ñ	˜8Ó	$€ð ×Ñð.¨#ð .°)Ð<LÑ2Mò .ó ð.ð2 ×Ñð	˜9Ð%?Ñ@ò 	ó ð	ôE�ô E÷Q%ò Q%r7   