<!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 Z d dlZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ er˜d d	lmZmZ G d
d„ deƒZdd„ Zdd„ Zdd„ Zedd„ ƒZe	dddZerÚedd„ ƒZn
ee jƒZdS )é    N)Úcontextmanager)ÚNamedTemporaryFile)Úretry)ÚPY2)Úget_path_uid)Úcast)ÚMYPY_CHECK_RUNNING)ÚBinaryIOÚIteratorc                   @   s   e Zd Zedd„ ƒZdS )ÚNamedTemporaryFileResultc                 C   s   d S ©N© )Úselfr   r   úB/usr/lib/python3.8/site-packages/pip/_internal/utils/filesystem.pyÚfile   s    zNamedTemporaryFileResult.fileN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr   r   r   r   r   r      s   r   c                 C   s†   t tdƒsdS d }| |kr‚tj | ¡rnt ¡ dkr^zt| ƒ}W n tk
rT   Y dS X |dkS t | tj¡S q| tj 	| ¡ }} qdS )NÚgeteuidTr   F)
ÚhasattrÚosÚpathÚlexistsr   r   ÚOSErrorÚaccessÚW_OKÚdirname)r   ZpreviousZpath_uidr   r   r   Úcheck_path_owner   s    
r   c                 C   sr   zt  | |¡ W n\ ttfk
rl   | |fD ]8}zt|ƒ}W n tk
rP   Y q,X |r,t  d| ¡‚q,‚ Y nX dS )z“Wrap shutil.copy2() but map errors copying socket files to
    SpecialFileError as expected.

    See also https://bugs.python.org/issue37700.
    z`%s` is a socketN)ÚshutilZcopy2r   ÚIOErrorÚ	is_socketZSpecialFileError)ÚsrcÚdestÚfZis_socket_filer   r   r   Úcopy2_fixed5   s    r%   c                 C   s   t  t | ¡j¡S r   )ÚstatÚS_ISSOCKr   ÚlstatÚst_mode)r   r   r   r   r!   M   s    r!   c                 c   sb   t dtj | ¡tj | ¡dd8}td|ƒ}z
|V  W 5 |j ¡  t |j 	¡ ¡ X W 5 Q R X dS )z‰Given a path to a file, open a temp file next to it securely and ensure
    it is written to disk after the context reaches its end.
    Fz.tmp)ÚdeleteÚdirÚprefixÚsuffixr   N)
r   r   r   r   Úbasenamer   r   ÚflushÚfsyncÚfileno)r   r$   Úresultr   r   r   Úadjacent_tmp_fileR   s    

ü


r3   iè  éú   )Zstop_max_delayZ
wait_fixedc                 C   s@   zt  | |¡ W n* tk
r:   t  |¡ t  | |¡ Y nX d S r   )r   Úrenamer   Úremove)r"   r#   r   r   r   Úreplacei   s
    
r7   )r   Zos.pathr   r&   Ú
contextlibr   Ztempfiler   Zpip._vendor.retryingr   Zpip._vendor.sixr   Zpip._internal.utils.compatr   Zpip._internal.utils.miscr   Zpip._internal.utils.typingr   Útypingr	   r
   r   r   r%   r!   r3   Z_replace_retryr7   r   r   r   r   Ú<module>   s.   
	