
    жvg                     $   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 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dS )    N)TracebackType)Dict	GeneratorOptionalTypeUnion)InstallRequirement)TempDirectorychangesreturnNNNc               +     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
isinstancestr)r   targetnon_existent_markersaved_valuesname	new_valueoriginal_values          i/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/pip/_internal/operations/build/build_tracker.pyupdate_env_context_managerr      sS     ZF !((24L"==?? ! !i	5!'L 	5 	5 	5!4L	5 t	. %1$6$6$8$8 	. 	. D.!4444LL!.#66666-t	. 	.L$6$6$8$8 	. 	. D.!4444LL!.#66666-t	.s   AAA!B% %A C%)BuildTrackerNNc               #     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debugr   )rootctxtrackers      r   get_build_trackerr-   (   sN     :>>-..D				 3<$$]%H%H%HIIND84PPPQQQLL;TBBB$ 	7MMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 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/   5   s        DDDDr5   r/   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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   Nc                 b    || _         i | _        t                              d| j                    d S )NzCreated build tracker: %s)_root_entriesr(   r)   )selfr*   s     r   __init__zBuildTracker.__init__B   s-    
=?0$*=====r5   c                 F    t                               d| j                   | S )NzEntered build tracker: %s)r(   r)   r8   )r:   s    r   	__enter__zBuildTracker.__enter__G   s    0$*===r5   exc_typeexc_valexc_tbc                 .    |                                   d S r   )cleanup)r:   r>   r?   r@   s       r   __exit__zBuildTracker.__exit__K   s     	r5   keyc                     t          j        |                                                                          }t          j                            | j        |          S r   )hashlibsha224encode	hexdigestr   r'   joinr8   )r:   rD   hasheds      r   _entry_pathzBuildTracker._entry_pathS   s=    

--7799w||DJ///r5   reqc                    |                      |          }	 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)rL   openreadlinkLookupErrorFileNotFoundErrorr9   writer   r(   r)   r8   )r:   rM   rD   
entry_pathfpcontentsmessages          r   addzBuildTracker.addW   s    %%c**
	'j!! %R7799% % % % % % % % % % % % % % %
 FFHFFGg&&&	 ! 	 	 	D	 $-'''' *cG444 	HHSXX	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 c3S$*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   unlinkrL   r9   r(   r)   r8   )r:   rM   rD   s      r   removezBuildTracker.remover   sK     		$""3''(((M#7djIIIIIr5   c                     t          | j                                                  D ]\  }}|                     ||           t                              d| j                   d S )NzRemoved build tracker: %r)listr9   r   r^   r(   r)   r8   )r:   rD   rM   s      r   rB   zBuildTracker.cleanup{   s_    T]002233 	" 	"HCKKS!!!!0$*=====r5   r   c              #      K   t          |          }|                     ||           dV  |                     ||           dS )zEnsure 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^   )r:   rM   rD   
tracker_ids       r   trackzBuildTracker.track   sJ       s^^
j!!!C$$$$$r5   )r   r   )r   N)r0   r1   r2   r3   r   r;   r=   r   r   BaseExceptionr   rC   r/   rL   r	   r[   r^   rB   r$   contextmanagerr   rc   r4   r5   r   r   r   9   sz       = =>S >T > > > >
   4./ -( '	
 
   0y 0S 0 0 0 0F) F	 Fd F F F F6J, J9 J J J J J> > > > %+ %# %)DT:U % % % % % %r5   r   )r$   rF   loggingr   typesr   typingr   r   r   r   r   pip._internal.req.req_installr	   pip._internal.utils.temp_dirr
   	getLoggerr0   r(   re   r   r   r-   r/   r   r4   r5   r   <module>rl      su         				       9 9 9 9 9 9 9 9 9 9 9 9 9 9 < < < < < < 6 6 6 6 6 6		8	$	$ .# .)<L2M . . . .2 	9%?@ 	 	 	 	E E E E E E E EQ% Q% Q% Q% Q% Q% Q% Q% Q% Q%r5   