o
    
j6h                     @   s   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eZe jdeded fd	d
Ze jded fddZG dd dZdS )    N)TracebackType)DictIteratorOptionalSetTypeUnion)Link)InstallRequirement)TempDirectorychangesreturnc               
   k   s    t j}t }i }|  D ]\}}z|| ||< W n ty&   |||< Y nw |||< qz"d V  W | D ]\}}||u rA||= q5t|tsHJ |||< q5d S | D ]\}}||u r_||= qSt|tsfJ |||< qSw N)osenvironobjectitemsKeyError
isinstancestr)r   targetnon_existent_markersaved_valuesname	new_valueoriginal_value r   l/var/www/html/chefvision.cloud.itp360.com/venv/lib/python3.10/site-packages/pip/_internal/req/req_tracker.pyupdate_env_context_manager   s0   


r   RequirementTrackerc               	   c   s    t jd} t C}| d u r'|tddj} |t| d t	
d|  t| }|V  W d    n1 s9w   Y  W d    d S W d    d S 1 sQw   Y  d S )NPIP_REQ_TRACKERzreq-tracker)kind)r    z Initialized build tracking at %s)r   r   get
contextlib	ExitStackenter_contextr   pathr   loggerdebugr   )rootctxtrackerr   r   r   get_requirement_tracker)   s   

"r,   c                   @   s   e Zd ZdeddfddZdddZdeee  d	ee d
ee	 ddfddZ
dedefddZdeddfddZdeddfddZdddZejdeded fddZdS )r   r)   r   Nc                 C   s    || _ t | _td| j  d S )NzCreated build tracker: %s)_rootset_entriesr'   r(   )selfr)   r   r   r   __init__7   s   zRequirementTracker.__init__c                 C   s   t d| j | S )NzEntered build tracker: %s)r'   r(   r-   )r0   r   r   r   	__enter__<   s   zRequirementTracker.__enter__exc_typeexc_valexc_tbc                 C   s   |    d S r   )cleanup)r0   r3   r4   r5   r   r   r   __exit__@   s   zRequirementTracker.__exit__linkc                 C   s$   t |j  }tj| j|S r   )	hashlibsha224url_without_fragmentencode	hexdigestr   r&   joinr-   )r0   r8   hashedr   r   r   _entry_pathH   s   zRequirementTracker._entry_pathreqc                 C   s   |j sJ | |j }zt|}| }W d   n1 sw   Y  W n	 ty.   Y nw d|j |}t||| jvsAJ t|ddd}|t	| W d   n1 sZw   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)r8   r@   openreadFileNotFoundErrorformatLookupErrorr/   writer   addr'   r(   r-   )r0   rA   
entry_pathfpcontentsmessager   r   r   rJ   L   s$   


zRequirementTracker.addc                 C   s<   |j sJ t| |j  | j| td|| j dS )z1Remove an InstallRequirement from build tracking.z Removed %s from build tracker %rN)	r8   r   unlinkr@   r/   remover'   r(   r-   r0   rA   r   r   r   rP   h   s   
zRequirementTracker.removec                 C   s,   t | jD ]}| | qtd| j d S )NzRemoved build tracker: %r)r.   r/   rP   r'   r(   r-   rQ   r   r   r   r6   r   s   zRequirementTracker.cleanupc                 c   s     |  | d V  | | d S r   )rJ   rP   rQ   r   r   r   trackx   s   
zRequirementTracker.track)r   r   )r   N)__name__
__module____qualname__r   r1   r2   r   r   BaseExceptionr   r7   r	   r@   r
   rJ   rP   r6   r#   contextmanagerr   rR   r   r   r   r   r   6   s$    




)r#   r9   loggingr   typesr   typingr   r   r   r   r   r   pip._internal.models.linkr	   pip._internal.req.req_installr
   pip._internal.utils.temp_dirr   	getLoggerrS   r'   rW   r   r   r,   r   r   r   r   r   <module>   s     
