B
š•Re ã @ sR d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm Z d dl
mZ d dlm
Z
d dlmZ d dlmZ d dlmZ d dlmZmZ erÈd d lmZmZmZmZmZ G d
d„ deƒZdd
„ Zdd„ Zdd„ Z e dd„ ƒZ!e
ddd�Z"e�re"dd„ ƒZ#n
e"ej#ƒZ#dd„ Z$dd„ Z%dd„ Z&dd „ Z'd!d"„ Z(d#d$„ Z)d%d&„ Z*dS )'é N)Úcontextmanager)ÚNamedTemporaryFile)Úretry)ÚPY2)Úget_path_uid)Úformat_size)ÚMYPY_CHECK_RUNNINGÚcast)ÚAnyÚBinaryIOÚIteratorÚListÚUnionc @ s e Zd Zedd„ ƒZdS )ÚNamedTemporaryFileResultc C s d S )N© )Úselfr r ú�/builddir/build/BUILDROOT/alt-python37-pip-20.2.4-6.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/pip/_internal/utils/filesystem.pyÚfile s zNamedTemporaryFileResult.fileN)Ú__name__Ú
__module__Ú__qualname__Úpropertyr r r r r r s r c C s¢ t jdksttdƒsdS tj | ¡s(t‚d }xp| |krœtj | ¡rˆt ¡ dkrxyt | ƒ}W n t
k
rn dS X |dkS t | tj¡S q.| tj
| ¡ }} q.W dS )NÚwin32ÚgeteuidTr F)ÚsysÚplatformÚhasattrÚosÚpathÚisabsÚAssertionErrorÚlexistsr r ÚOSErrorÚaccessÚW_OKÚdirname)r ÚpreviousÚpath_uidr r r Úcheck_path_owner s
r( c C s| yt | |¡ W nf ttfk
rv xJ| |gD ]>}yt|ƒ}W n tk
rR Y q.X |r.t djf tƒ Ž¡‚q.W ‚ Y nX dS )z“Wrap shutil.copy2() but map errors copying socket files to
SpecialFileError as expected.
See also https://bugs.python.org/issue37700.
z`{f}` is a socketN)ÚshutilÚcopy2r" ÚIOErrorÚ is_socketÚSpecialFileErrorÚformatÚlocals)ÚsrcÚdestÚfÚis_socket_filer r r Úcopy2_fixed; s r4 c C s t t | ¡j¡S )N)ÚstatÚS_ISSOCKr ÚlstatÚst_mode)r r r r r, T s r, c k sj t f dtj | ¡tj | ¡ddœ|—Ž�8}td|ƒ}z
|V W d|j ¡ t |j ¡ ¡ X W dQ R X dS )a% Return a file-like object pointing to a tmp file next to path.
The file is created securely and is ensured to be written to disk
after the context reaches its end.
kwargs will be passed to tempfile.NamedTemporaryFile to control
the way the temporary file will be opened.
Fz.tmp)ÚdeleteÚdirÚprefixÚsuffixr N)
r r r r% Úbasenamer r ÚflushÚfsyncÚfileno)r Úkwargsr2 Úresultr r r Úadjacent_tmp_fileY s
rC iè éú )Ústop_max_delayÚ
wait_fixedc C s@ yt | |¡ W n* tk
r: t |¡ t | |¡ Y nX d S )N)r Úrenamer" Úremove)r0 r1 r r r Úreplacev s
rI c C sL x*t j | ¡s*t j | ¡}|| kr$P |} qW t jdkrDt | t j¡S t| ƒS )zgCheck if a directory is writable.
Uses os.access() on POSIX, tries creating files on Windows.
Úposix)r r Úisdirr% Únamer# r$ Ú_test_writable_dir_win)r Úparentr r r Útest_writable_dir… s
rO c sÚ d}d‰ xÄt dƒD ]¸}|d ‡ fdd„t dƒD ƒ¡ }tj | |¡}yt |tjtjB tjB ¡}W nN tk
r° } z0|j t j
kr‚w|j t jksš|j t jkrždS ‚ W d d }~X Y qX t
|¡ t |¡ d S qW td
ƒ‚d S )NÚ(accesstest_deleteme_fishfingers_custard_Ú$abcdefghijklmnopqrstuvwxyz0123456789é
Ú c 3 s | ]}t ˆ ¡V qd S )N)ÚrandomÚchoice)Ú.0Ú_)Úalphabetr r ú