§
    �’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  ej        e¦  «        Zej        dd„¦   «         Zej        dd„¦   «         Z G d„ de¦  «        Z G d„ d¦  «        ZdS )é    )ÚannotationsN)Ú	Generator)ÚTracebackType)ÚInstallRequirement)ÚTempDirectoryÚchangesÚstrÚreturnúGenerator[None, None, None]c               +  óÐ  K  — t           j        }t          ¦   «         }i }|                      ¦   «         D ],\  }}	 ||         ||<   n# t          $ r |||<   Y nw xY w|||<   Œ-	 d V — |                     ¦   «         D ])\  }}||u r||= Œt          |t          ¦  «        sJ ‚|||<   Œ*d S # |                     ¦   «         D ])\  }}||u r||= Œt          |t          ¦  «        sJ ‚|||<   Œ*w xY w©N)ÚosÚenvironÚobjectÚitemsÚKeyErrorÚ
isinstancer	   )r   ÚtargetÚnon_existent_markerÚsaved_valuesÚnameÚ	new_valueÚoriginal_values          úZC:\Projects\DSCons\.venv\Lib\site-packages\pip\_internal\operations\build\build_tracker.pyÚupdate_env_context_managerr      sS  è è € åŒZ€Fõ !™(œ(ÐØ,.€LØ"Ÿ=š=™?œ?ð !ð !‰ˆˆið	5Ø!'¨¤ˆL˜ÑÐøÝð 	5ð 	5ð 	5Ø!4ˆL˜ÑÐÐð	5øøøà ˆˆt‰ˆð	.Øˆˆˆð %1×$6Ò$6Ñ$8Ô$8ð 	.ð 	.Ñ ˆD�.ØÐ!4Ð4Ð4Ø˜4�L�Lå! .µ#Ñ6Ô6Ð6Ð6Ð6Ø-��t‘�ð	.ð 	.ø L×$6Ò$6Ñ$8Ô$8ð 	.ð 	.Ñ ˆD�.ØÐ!4Ð4Ð4Ø˜4�L�Lå! .µ#Ñ6Ô6Ð6Ð6Ð6Ø-��t‘�ð	.øøøs   ¹AÁAÁAÁ!B% Â%A C%ú#Generator[BuildTracker, None, None]c               #  óÆ  K  — t           j                             d¦  «        } t          j        ¦   «         5 }| €f|                     t          d¬¦  «        ¦  «        j        } |                     t          | ¬¦  «        ¦  «         t           
                    d| ¦  «         t          | ¦  «        5 }|V — d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )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+   *   sN  è è € åŒ:�>Š>Ð-Ñ.Ô.€DÝ	Ô	Ñ	Ô	ð  3Øˆ<Ø×$Ò$¥]¸Ð%HÑ%HÔ%HÑIÔIÔNˆDØ×ÒÕ8È4ÐPÑPÔPÑQÔQÐQÝ�LŠLÐ;¸TÑBÔBÐBå˜$ÑÔð 	 7ØˆMˆMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   µA8CÂ-B>Â2CÂ>C	ÃCÃC	ÃCÃCÃCc                  ó   — e Zd ZdZdS )Ú	TrackerIdz:Uniquely identifying string provided to the build tracker.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    r   r-   r-   7   s   € € € € € ØDÐDÐDÐDr3   r-   c                  ól   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
ej        d d„¦   «         ZdS )!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	   r
   ÚNonec                ób   — || _         i | _        t                               d| j         ¦  «         d S )NzCreated build tracker: %s)Ú_rootÚ_entriesr%   r&   )Úselfr(   s     r   Ú__init__zBuildTracker.__init__D   s-   € ØˆŒ
Ø=?ˆŒÝ�ŠÐ0°$´*Ñ=Ô=Ð=Ð=Ð=r3   c                óF   — t                                d| j        ¦  «         | S )NzEntered build tracker: %s)r%   r&   r7   )r9   s    r   Ú	__enter__zBuildTracker.__enter__I   s   € Ý�ŠÐ0°$´*Ñ=Ô=Ð=Øˆr3   Úexc_typeútype[BaseException] | NoneÚexc_valúBaseException | NoneÚexc_tbúTracebackType | Nonec                ó.   — |                       ¦   «          d S r   )Úcleanup)r9   r=   r?   rA   s       r   Ú__exit__zBuildTracker.__exit__M   s   € ð 	�Š‰Œˆˆˆr3   Úkeyr-   c                ó¼   — t          j        |                     ¦   «         ¦  «                             ¦   «         }t          j                             | j        |¦  «        S r   )ÚhashlibÚsha224ÚencodeÚ	hexdigestr   r$   Újoinr7   )r9   rF   Úhasheds      r   Ú_entry_pathzBuildTracker._entry_pathU   s=   € Ý” §
¢
¡¤Ñ-Ô-×7Ò7Ñ9Ô9ˆÝŒw�|Š|˜DœJ¨Ñ/Ô/Ð/r3   Úreqr   c                ó  — |                       |¦  «        }	 t          |¦  «        5 }|                     ¦   «         }ddd¦  «         n# 1 swxY w Y   |j        › d|› �}t	          |¦  «        ‚# t
          $ r Y nw xY w|| j        vsJ ‚t          |dd¬¦  «        5 }|                     t          |¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   || j        |<   t           
                    d|| j        ¦  «         dS )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   rO   rF   Ú
entry_pathÚfpÚcontentsÚmessages          r   ÚaddzBuildTracker.addY   s‘  € ð ×%Ò% cÑ*Ô*ˆ
ð	'Ý�jÑ!Ô!ð % RØŸ7š7™9œ9�ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð
 œÐFÐF¸HÐFÐFˆGÝ˜gÑ&Ô&Ð&øõ	 !ð 	ð 	ð 	ØˆDð	øøøð ˜$œ-Ð'Ð'Ð'Ð'õ �*˜c¨GÐ4Ñ4Ô4ð 	¸Ø�HŠH•S˜‘X”XÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à ˆŒ�cÑå�ŠÐ3°S¸$¼*ÑEÔEÐEÐEÐEsE   —A- ¦A»A- ÁAÁA- ÁAÁA- Á-
A:Á9A:Â#C	Ã	CÃCc                ó¦   — t          j        |                      |¦  «        ¦  «         | j        |= t                               d|| j        ¦  «         dS )z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN)r   ÚunlinkrN   r8   r%   r&   r7   )r9   rO   rF   s      r   ÚremovezBuildTracker.removet   sK   € õ 	Œ	�$×"Ò" 3Ñ'Ô'Ñ(Ô(Ð(ØŒM˜#Ðå�ŠÐ7¸¸d¼jÑIÔIÐIÐIÐIr3   c                óÊ   — t          | j                             ¦   «         ¦  «        D ]\  }}|                      ||¦  «         Œt                               d| j        ¦  «         d S )NzRemoved build tracker: %r)Úlistr8   r   r`   r%   r&   r7   )r9   rF   rO   s      r   rD   zBuildTracker.cleanup}   s_   € Ý˜Tœ]×0Ò0Ñ2Ô2Ñ3Ô3ð 	"ð 	"‰HˆC�Ø�KŠK˜˜SÑ!Ô!Ð!Ð!å�ŠÐ0°$´*Ñ=Ô=Ð=Ð=Ð=r3   r   c              #  óˆ   K  — t          |¦  «        }|                      ||¦  «         dV — |                      ||¦  «         dS )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]   r`   )r9   rO   rF   Ú
tracker_ids       r   ÚtrackzBuildTracker.trackƒ   sJ   è è € õ ˜s‘^”^ˆ
Ø�Š��jÑ!Ô!Ð!ØˆˆˆØ�Š�C˜Ñ$Ô$Ð$Ð$Ð$r3   N)r(   r	   r
   r5   )r
   r'   )r=   r>   r?   r@   rA   rB   r
   r5   )rF   r-   r
   r	   )rO   r   rF   r-   r
   r5   )r
   r5   )rO   r   rF   r	   r
   r   )r.   r/   r0   r1   r:   r<   rE   rN   r]   r`   rD   r!   Úcontextmanagerre   r2   r3   r   r'   r'   ;   sÖ   € € € € € ð=ð =ð>ð >ð >ð >ð
ð ð ð ðð ð ð ð0ð 0ð 0ð 0ðFð Fð Fð Fð6Jð Jð Jð Jð>ð >ð >ð >ð Ôð%ð %ð %ñ Ôð%ð %ð %r3   r'   )r   r	   r
   r   )r
   r   )Ú
__future__r   r!   rH   Úloggingr   Úcollections.abcr   Útypesr   Úpip._internal.req.req_installr   Úpip._internal.utils.temp_dirr   Ú	getLoggerr.   r%   rf   r   r+   r	   r-   r'   r2   r3   r   ú<module>rn      sN  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à <Ð <Ð <Ð <Ð <Ð <Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6à	ˆÔ	˜8Ñ	$Ô	$€ð Ôð.ð .ð .ñ Ôð.ð2 Ôð	ð 	ð 	ñ Ôð	ðEð Eð Eð Eð E�ñ Eô Eð EðQ%ð Q%ð Q%ð Q%ð Q%ñ Q%ô Q%ð Q%ð Q%ð Q%r3   