ó
    �Rj¦  ã                   ó  • 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JrJ	r	J
r
Jr  S SKJr  S SKJr  \R                   " \5      r\ R&                  S\S\S   4S	 j5       r\ R&                  S\S
   4S j5       r " S S\5      r " S S5      rg)é    N)ÚTracebackType)ÚDictÚ	GeneratorÚOptionalÚTypeÚUnion)ÚInstallRequirement)ÚTempDirectoryÚchangesÚreturn©NNNc               +   ó¸  #   • [         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)r   ÚtargetÚnon_existent_markerÚsaved_valuesÚnameÚ	new_valueÚoriginal_values          ÚXD:\diplom_project\venv\Lib\site-packages\pip/_internal/operations/build/build_tracker.pyÚupdate_env_context_managerr      sâ   é € ä�Z‰Z€Fô !›(ÐØ24€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)ÚBuildTrackerNNc               #   ó   #   • [         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Ú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   ‚5C·AB=ÂB,ÂB=Â#	CÂ,
B:	Â6B=Â=
CÃCc                   ó   • \ rS rSrSrSrg)Ú	TrackerIdé5   z:Uniquely identifying string provided to the build tracker.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r1   ó    r   r/   r/   5   s   † ÜDr8   r/   c                   óè   • \ rS rSrSrS\SS4S jrSS jrS\\	\
      S	\\
   S
\\   SS4S jrS\S\4S jrS\S\SS4S jrS\S\SS4S jrSS jr\R(                  S\S\S\S   4S j5       rSrg)r   é9   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.r*   r   Nc                 ó^   • 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__B   s!   € ØŒ
Ø=?ˆŒÜ�‰Ð0°$·*±*Õ=r8   c                 óF   • [         R                  SU R                  5        U $ )NzEntered build tracker: %s)r(   r)   r<   )r>   s    r   Ú	__enter__ÚBuildTracker.__enter__G   s   € Ü�‰Ð0°$·*±*Ô=Øˆr8   Úexc_typeÚexc_valÚexc_tbc                 ó$   • U R                  5         g r   )Úcleanup)r>   rD   rE   rF   s       r   Ú__exit__ÚBuildTracker.__exit__K   s   € ð 	�‰�r8   Úkeyc                 óº   • [         R                  " UR                  5       5      R                  5       n[        R
                  R                  U R                  U5      $ r   )ÚhashlibÚsha224ÚencodeÚ	hexdigestr   r'   Újoinr<   )r>   rK   Úhasheds      r   Ú_entry_pathÚBuildTracker._entry_pathS   s8   € Ü—’ §
¡
£Ó-×7Ñ7Ó9ˆÜ�w‰w�|‰|˜DŸJ™J¨Ó/Ð/r8   Úreqc                 óè  • 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)rS   ÚopenÚreadÚlinkÚLookupErrorÚFileNotFoundErrorr=   Úwriter   r(   r)   r<   )r>   rU   rK   Ú
entry_pathÚfpÚcontentsÚmessages          r   ÚaddÚBuildTracker.addW   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   ÚunlinkrS   r=   r(   r)   r<   )r>   rU   rK   s      r   ÚremoveÚBuildTracker.remover   s:   € ô 	�	Š	�$×"Ñ" 3Ó'Ô(Ø�M‰M˜#Ðä�‰Ð7¸¿j¹jÕIr8   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)Úlistr=   r   rg   r(   r)   r<   )r>   rK   rU   s      r   rH   ÚBuildTracker.cleanup{   sA   € Ü˜TŸ]™]×0Ñ0Ó2Ö3‰HˆCØ�K‰K˜Ö!ñ 4ô 	�‰Ð0°$·*±*Õ=r8   r   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/   rc   rg   )r>   rU   rK   Ú
tracker_ids       r   ÚtrackÚBuildTracker.track�   s+   é € ô ˜s“^ˆ
Ø�‰�Ô!ÛØ�‰�CÕ$ùs   ‚35)r=   r<   )r   r   )r   N)r2   r3   r4   r5   r6   r   r?   rB   r   r   ÚBaseExceptionr   rI   r/   rS   r	   rc   rg   rH   r$   Úcontextmanagerr   rn   r7   r1   r8   r   r   r   9   sê   † ñ=ð>˜Sð > Tô >ô
ðà˜4 Ñ.Ñ/ðð ˜-Ñ(ðð ˜Ñ'ð	ð
 
ôð0˜yð 0¨Sô 0ðFÐ)ð F°	ð F¸dô Fð6JÐ,ð J°9ð JÀô Jô>ð ×Ñð%Ð+ð %°#ð %¸)ÐDTÑ:Uó %ó ó%r8   r   )r$   rM   Úloggingr   Útypesr   Útypingr   r   r   r   r   Úpip._internal.req.req_installr	   Úpip._internal.utils.temp_dirr
   Ú	getLoggerr2   r(   rq   r   r   r-   r/   r   r1   r8   r   Ú<module>rx      sŸ   ðÛ Û Û Û 	Ý ß 9Õ 9å <Ý 6à	×	Ò	˜8Ó	$€ð ×Ñð.¨#ð .°)Ð<LÑ2Mó .ó ð.ð2 ×Ñð	˜9Ð%?Ñ@ó 	ó ð	ôE�ô E÷Q%ò Q%r8   