<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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
rŒd 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 nz tk
r¾ } z\|jtjkrd‚ || j	ksrt
‚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ENOENTr   ÚAssertionErrorÚwriteÚaddr   r   r   )r   Úreqr%   ÚinfoZ
entry_pathÚfpÚer   r   r   r0   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   r1   r%   r   r   r   r5   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   r5   r   r   r   r   r   )r   r1   r5   r   r   r   r   R   s    


þzRequirementTracker.cleanupc                 c   s   |   |¡ d V  |  |¡ d S r   )r0   r5   )r   r1   r   r   r   Útrack]   s    
zRequirementTracker.trackN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r&   r0   r5   r   Ú
contextlibÚcontextmanagerr7   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	getLoggerr8   r   Úobjectr   r   r   r   r   Ú<module>   s   
