£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
U
    .e{                     @   s   d dl mZ d dl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
 e
rd dlmZ d dlmZmZmZmZ d dlmZ d dlmZ eeZG d	d
 d
eZdS )    )absolute_importN)TempDirectory)MYPY_CHECK_RUNNING)TracebackType)IteratorOptionalSetType)InstallRequirement)Linkc                   @   sR   e 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 )RequirementTrackerc                 C   sj   t jd| _| jd krJtddd| _| jj | _t jd< td| j nd | _td| j t	 | _
d S )NZPIP_REQ_TRACKERFzreq-tracker)deleteZkindzCreated requirements tracker %rz Re-using requirements tracker %r)osenvironget_rootr   	_temp_dirpathloggerdebugset_entriesself r   A/usr/lib/python3.8/site-packages/pip/_internal/req/req_tracker.py__init__   s    
zRequirementTracker.__init__c                 C   s   | S Nr   r   r   r   r   	__enter__&   s    zRequirementTracker.__enter__c                 C   s   |    d S r   )cleanup)r   exc_typeZexc_valZexc_tbr   r   r   __exit__*   s    zRequirementTracker.__exit__c                 C   s$   t |j  }tj| j|S r   )	hashlibZsha224Zurl_without_fragmentencodeZ	hexdigestr   r   joinr   )r   linkZhashedr   r   r   _entry_path3   s    zRequirementTracker._entry_pathc                 C   s   |j }t|}| |}z,t|}td|| f W 5 Q R X W nl tk
r } zN|jtjkrd t|d}|	| W 5 Q R X | j
| td|| j W 5 d }~X Y nX d S )Nz%s is already being built: %swzAdded %s to build tracker %r)r%   strr&   openLookupErrorreadIOErrorerrnoZENOENTwriter   addr   r   r   )r   reqr%   infoZ
entry_pathfper   r   r   r/   8   s    


zRequirementTracker.addc                 C   s6   |j }| j| t| | td|| j d S )Nz Removed %s from build tracker %r)	r%   r   remover   unlinkr&   r   r   r   )r   r0   r%   r   r   r   r4   K   s    zRequirementTracker.removec                 C   sN   t | jD ]}| | q
| jd k	}|r2| j  td|r@dnd| j d S )Nz%s build tracker %rZRemovedZCleaned)r   r   r4   r   r   r   r   r   )r   r0   r4   r   r   r   r   R   s    


zRequirementTracker.cleanupc                 c   s   |  | d V  | | d S r   )r/   r4   )r   r0   r   r   r   track]   s    
zRequirementTracker.trackN)__name__
__module____qualname__r   r   r!   r&   r/   r4   r   
contextlibcontextmanagerr6   r   r   r   r   r      s   	r   )Z
__future__r   r:   r-   r"   Zloggingr   Zpip._internal.utils.temp_dirr   Zpip._internal.utils.typingr   typesr   typingr   r   r   r	   Zpip._internal.req.req_installr
   Zpip._internal.models.linkr   Z	getLoggerr7   r   objectr   r   r   r   r   <module>   s   
