ó
    T=Œj£  ã                  óþ   • S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  \R                  " \5      r\R"                  SS j5       r\R"                  SS j5       r " S	 S
\5      r " S S5      rg)é    )ÚannotationsN)Ú	Generator)ÚTracebackType)ÚInstallRequirement)ÚTempDirectoryc               +  ó¸  #   • [         R                  n[        5       n0 nU R                  5        H  u  pE X   X4'   XQU'   M      S v •  UR                  5        H(  u  pFXbL a  X	 M  [        U[        5      (       d   eXaU'   M*     g ! [         a    X#U'    NZf = f! UR                  5        H(  u  pFXbL a  X	 M  [        U[        5      (       d   eXaU'   M*     f = f7f©N)ÚosÚenvironÚobjectÚitemsÚKeyErrorÚ
isinstanceÚstr)ÚchangesÚtargetÚnon_existent_markerÚsaved_valuesÚnameÚ	new_valueÚoriginal_values          Úp/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/operations/build/build_tracker.pyÚupdate_env_context_managerr      sâ   é € ä�Z‰Z€Fô !›(ÐØ,.€LØ"Ÿ=™=ž?‰ˆð	5Ø!'¡ˆLÑð !ˆt‹ñ +ð	.Ûð %1×$6Ñ$6Ö$8Ñ ˆDØÒ4Ø’Lä! .´#×6Ñ6Ð6Ð6Ø-�t“ò %9øô ó 	5Ø!4˜Óð	5ûð %1×$6Ñ$6Ö$8Ñ ˆDØÒ4Ø’Lä! .´#×6Ñ6Ð6Ð6Ø-�t“ò %9üs?   ‚2CµB»CÁB Á=CÂBÂCÂBÂCÂ>CÃCc               #  ó   #   • [         R                  R                  S5      n [        R                  " 5        nU cP  UR                  [        SS95      R                  n UR                  [        U S95        [        R                  SU 5        [        U 5       nUv •  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)NÚPIP_BUILD_TRACKERzbuild-tracker)Úkind)r   z Initialized build tracking at %s)r
   r   ÚgetÚ
contextlibÚ	ExitStackÚenter_contextr   Úpathr   ÚloggerÚdebugÚBuildTracker)Ú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   ‚5C·AB=ÂB,ÂB=Â#	CÂ,
B:	Â6B=Â=
CÃCc                  ó   • \ rS rSrSrSrg)Ú	TrackerIdé7   z:Uniquely identifying string provided to the build tracker.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r,   ó    r   r*   r*   7   s   † ÜDr3   r*   c                  ó–   • \ rS rSrSrSS jrSS jr        SS jrSS jrSS jr	SS jr
SS	 jr\R                  SS
 j5       rSrg)r$   é;   a'  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.c                ó^   • Xl         0 U l        [        R                  SU R                   5        g )NzCreated build tracker: %s)Ú_rootÚ_entriesr"   r#   )Úselfr%   s     r   Ú__init__ÚBuildTracker.__init__D   s!   € ØŒ
Ø=?ˆŒÜ�‰Ð0°$·*±*Õ=r3   c                óF   • [         R                  SU R                  5        U $ )NzEntered build tracker: %s)r"   r#   r7   )r9   s    r   Ú	__enter__ÚBuildTracker.__enter__I   s   € Ü�‰Ð0°$·*±*Ô=Øˆr3   c                ó$   • U R                  5         g r	   )Úcleanup)r9   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__ÚBuildTracker.__exit__M   s   € ð 	�‰�r3   c                óº   • [         R                  " UR                  5       5      R                  5       n[        R
                  R                  U R                  U5      $ r	   )ÚhashlibÚsha224ÚencodeÚ	hexdigestr
   r!   Újoinr7   )r9   ÚkeyÚhasheds      r   Ú_entry_pathÚBuildTracker._entry_pathU   s8   € Ü—’ §
¡
£Ó-×7Ñ7Ó9ˆÜ�w‰w�|‰|˜DŸJ™J¨Ó/Ð/r3   c                óè  • U R                  U5      n [        U5       nUR                  5       nSSS5        UR                   SW 3n[	        U5      e! , (       d  f       N*= f! [
         a     Of = fX R                  ;  d   e[        USSS9 nUR                  [        U5      5        SSS5        O! , (       d  f       O= fXR                  U'   [        R                  SXR                  5        g)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ÚlinkÚLookupErrorÚFileNotFoundErrorr8   Úwriter   r"   r#   r7   )r9   ÚreqrL   Ú
entry_pathÚfpÚcontentsÚmessages          r   ÚaddÚBuildTracker.addY   sÌ   € ð ×%Ñ% cÓ*ˆ
ð	'Ü�jÔ! RØŸ7™7›9�÷ "ð
 Ÿ™˜
Ð";¸H¸:ÐFˆGÜ˜gÓ&Ð&÷ "Õ!ûä ó 	Ùð	úð Ÿ-™-Ó'Ð'Ð'ô �*˜c¨GÒ4¸Ø�H‰H”S˜“XÔ÷ 5×4Ö4úà �‰�cÑä�‰Ð3°S¿*¹*ÕEs3   “A$ žA¯A$ Á
A!ÁA$ Á$
A1Á0A1ÂB4Â4
Cc                ó¨   • [         R                  " U R                  U5      5        U R                  U	 [        R                  SXR                  5        g)z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN)r
   ÚunlinkrN   r8   r"   r#   r7   )r9   rY   rL   s      r   ÚremoveÚBuildTracker.removet   s:   € ô 	�	Š	�$×"Ñ" 3Ó'Ô(Ø�M‰M˜#Ðä�‰Ð7¸¿j¹jÕIr3   c                ó¾   • [        U R                  R                  5       5       H  u  pU R                  X!5        M     [        R                  SU R                  5        g )NzRemoved build tracker: %r)Úlistr8   r   rb   r"   r#   r7   )r9   rL   rY   s      r   r@   ÚBuildTracker.cleanup}   sA   € Ü˜TŸ]™]×0Ñ0Ó2Ö3‰HˆCØ�K‰K˜Ö!ñ 4ô 	�‰Ð0°$·*±*Õ=r3   c              #  ón   #   • [        U5      nU R                  X5        Sv •  U R                  X5        g7f)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)r*   r^   rb   )r9   rY   rL   Ú
tracker_ids       r   ÚtrackÚBuildTracker.trackƒ   s+   é € ô ˜s“^ˆ
Ø�‰�Ô!ÛØ�‰�CÕ$ùs   ‚35)r8   r7   N)r%   r   ÚreturnÚNone)rk   r$   )rA   ztype[BaseException] | NonerB   zBaseException | NonerC   zTracebackType | Nonerk   rl   )rL   r*   rk   r   )rY   r   rL   r*   rk   rl   )rk   rl   )rY   r   rL   r   rk   úGenerator[None, None, None])r-   r.   r/   r0   r1   r:   r=   rD   rN   r^   rb   r@   r   Úcontextmanagerri   r2   r,   r3   r   r$   r$   ;   sl   † ñ=ô>ô
ðà,ðð &ðð %ð	ð
 
ôô0ôFô6Jô>ð ×Ñó%ó ó%r3   r$   )r   r   rk   rm   )rk   z#Generator[BuildTracker, None, None])Ú
__future__r   r   rG   Úloggingr
   Úcollections.abcr   Útypesr   Úpip._internal.req.req_installr   Úpip._internal.utils.temp_dirr   Ú	getLoggerr-   r"   rn   r   r(   r   r*   r$   r,   r3   r   Ú<module>rv      s~   ðÝ "ã Û Û Û 	Ý %Ý å <Ý 6à	×	Ò	˜8Ó	$€ð ×Ñó.ó ð.ð2 ×Ñó	ó ð	ôE�ô E÷Q%ò Q%r3   