
    Jxh%                        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          ZdS )    N)TracebackType)Dict	GeneratorOptionalSetTypeUnion)Link)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          _/var/www/html/what/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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dfdZdeddfdZddZej        deded         fd            ZdS )r!   r,   r   Nc                 z    || _         t                      | _        t                              d| j                    d S )NzCreated build tracker: %s)_rootset_entriesr*   r+   )selfr,   s     r   __init__zBuildTracker.__init__7   s1    
140$*=====    c                 F    t                               d| j                   | S )NzEntered build tracker: %s)r*   r+   r2   )r5   s    r   	__enter__zBuildTracker.__enter__<   s    0$*===r7   exc_typeexc_valexc_tbc                 .    |                                   d S r   )cleanup)r5   r:   r;   r<   s       r   __exit__zBuildTracker.__exit__@   s     	r7   linkc                     t          j        |j                                                                                  }t
          j                            | j        |          S r   )	hashlibsha224url_without_fragmentencode	hexdigestr   r)   joinr2   )r5   r@   hasheds      r   _entry_pathzBuildTracker._entry_pathH   sD     9 @ @ B BCCMMOOw||DJ///r7   reqc                 \   |j         sJ |                     |j                   }	 t          |          5 }|                                }ddd           n# 1 swxY w Y   d                    |j         |          }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)r@   rI   openreadformatLookupErrorFileNotFoundErrorr4   writer   addr*   r+   r2   )r5   rJ   
entry_pathfpcontentsmessages         r   rT   zBuildTracker.addL   s    x%%ch//
	'j!! %R7799% % % % % % % % % % % % % % %
 6<<SXxPPGg&&&	 ! 	 	 	D	 $-'''' *cG444 	HHSXX	 	 	 	 	 	 	 	 	 	 	 	 	 	 	#3S$*EEEEEsF   B
 A	B
 AB
 AB
 

BB7#C&&C*-C*c                     |j         sJ t          j        |                     |j                              | j                            |           t                              d|| j                   dS )z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN)	r@   r   unlinkrI   r4   remover*   r+   r2   r5   rJ   s     r   r[   zBuildTracker.removeh   sd     x
	$""38,,---S!!!7djIIIIIr7   c                     t          | j                  D ]}|                     |           t                              d| j                   d S )NzRemoved build tracker: %r)r3   r4   r[   r*   r+   r2   r\   s     r   r>   zBuildTracker.cleanupr   sM    t}%% 	 	CKK0$*=====r7   r   c              #   f   K   |                      |           d V  |                     |           d S r   )rT   r[   r\   s     r   trackzBuildTracker.trackx   s6      Cr7   )r   r!   )r   N)__name__
__module____qualname__r   r6   r9   r   r   BaseExceptionr   r?   r
   rI   r   rT   r[   r>   r&   contextmanagerr   r_    r7   r   r!   r!   6   sY       >S >T > > > >
   4./ -( '	
 
   0 0 0 0 0 0F) Fd F F F F8J, J J J J J> > > > + 	:J0K      r7   r!   )r&   rB   loggingr   typesr   typingr   r   r   r   r   r	   pip._internal.models.linkr
   pip._internal.req.req_installr   pip._internal.utils.temp_dirr   	getLoggerr`   r*   rd   r   r    r/   r!   re   r7   r   <module>rm      s[         				       > > > > > > > > > > > > > > > > * * * * * * < < < < < < 6 6 6 6 6 6		8	$	$ .# .)<L2M . . . .2 	9%?@ 	 	 	 	F F F F F F F F F Fr7   