
    Wh|                    $   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
 d dlmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZ d dZe
d!d            Z  edd          ej                  Zd dZd dZd"dZd#dZd$dZd#dZd$dZ dS )%    )annotationsN)	Generator)contextmanager)NamedTemporaryFile)AnyBinaryIOcast)get_path_uid)format_size)retrypathstrreturnboolc                   t           j        dk    st          t          d          sdS t          j                            |           sJ d }| |k    rt          j                            |           r^t          j                    dk    r(	 t          |           }n# t          $ r Y dS w xY w|dk    S t          j
        | t          j                  S | t          j                            |           } }| |k    dS )Nwin32geteuidTr   F)sysplatformhasattrosr   isabslexistsr   r
   OSErroraccessW_OKdirname)r   previouspath_uids      p/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/pip/_internal/utils/filesystem.pycheck_path_ownerr!      s     |wgb)&<&<t7==H
(

7??4   	9z||q  !+D11HH ! ! ! 55!1}$yrw///!27??4#8#8dH (

 5s   B 
B&%B&kwargsr   Generator[BinaryIO, None, None]c              +    K   t          ddt          j                            |           t          j                            |           dd|5 }t          t          |          }	 |V  |                                 t          j        |	                                           n?# |                                 t          j        |	                                           w xY w	 ddd           dS # 1 swxY w Y   dS )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suffixN )
r   r   r   r   basenamer	   r   flushfsyncfileno)r   r"   fresults       r    adjacent_tmp_filer0   -   s0      
 
GOOD!!w%%	
 

 
 
 & 
h""	&LLLLLNNNHV]]__%%%% LLNNNHV]]__%%%%%& & & & & & & & & & & & & & & & & &s*   C1%B$);C1$<C  C11C58C5   g      ?)stop_after_delaywaitc                J   t           j                            |           sGt           j                            |           }|| k    rn!|} t           j                            |           Gt           j        dk    rt          j        | 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   parents     r    test_writable_dirr:   K   s     gmmD!! &&T>>	 gmmD!!  
w'yrw'''!$'''    c                   d}dt          d          D ]}|d                    fdt          d          D                       z   }t          j                            | |          }	 t          j        |t          j        t          j        z  t          j        z            }t          j        |           t          j	        |            dS # t          $ r Y t          $ r Y  dS w xY wt          d	          )
N(accesstest_deleteme_fishfingers_custard_$abcdefghijklmnopqrstuvwxyz0123456789
    c              3  @   K   | ]}t          j                  V  d S N)randomchoice).0_alphabets     r    	<genexpr>z)_test_writable_dir_win.<locals>.<genexpr>c   s-      !L!La&-"9"9!L!L!L!L!L!Lr;      TFz3Unexpected condition testing for writable directory)rangejoinr   r   openO_RDWRO_CREATO_EXCLcloseunlinkFileExistsErrorPermissionErrorr   )r   r*   rF   r7   filefdrG   s         @r    r8   r8   ]   s    :H5H2YY  "''!L!L!L!L588!L!L!LLLLw||D$''	ry2:5	ABBB HRLLLIdOOO44  	 	 	D 	 	 	 555	 G
H
HHs   )9C
C'	C'&C'pattern	list[str]c                    g }t          j        |           D ]<\  }}t          j        ||          }|                    fd|D                        =|S )zReturns a list of absolute paths of files beneath path, recursively,
    with filenames which match the UNIX-style shell glob pattern.c              3  X   K   | ]$}t           j                            |          V  %d S rB   )r   r   rK   )rE   r.   roots     r    rH   zfind_files.<locals>.<genexpr>   s3      ==bgll4++======r;   )r   walkfnmatchfilterextend)r   rV   r/   rF   filesmatchesrZ   s         @r    
find_filesra   y   sg     F'$-- > >a.00====W=======Mr;   int | floatc                    t           j                            |           rdS t           j                            |           S )Nr   )r   r   islinkgetsizer   s    r    	file_sizerg      s1    	w~~d q7??4   r;   c                :    t          t          |                     S rB   )r   rg   rf   s    r    format_file_sizeri      s    y'''r;   c                    d}t          j        |           D ]=\  }}}|D ]4}t           j                            ||          }|t	          |          z  }5>|S )Ng        )r   r[   r   rK   rg   )r   sizerZ   _dirsr_   filename	file_paths          r    directory_sizero      si    D gdmm ) )eU 	) 	)HT844IIi(((DD	) Kr;   c                :    t          t          |                     S rB   )r   ro   rf   s    r    format_directory_sizerq      s    ~d++,,,r;   )r   r   r   r   )r   r   r"   r   r   r#   )r   r   rV   r   r   rW   )r   r   r   rb   )r   r   r   r   )!
__future__r   r\   r   os.pathrC   r   collections.abcr   
contextlibr   tempfiler   typingr   r   r	   pip._internal.utils.compatr
   pip._internal.utils.miscr   pip._internal.utils.retryr   r!   r0   replacer:   r8   ra   rg   ri   ro   rq   r)   r;   r    <module>r|      s   " " " " " "  				   



 % % % % % % % % % % % % ' ' ' ' ' ' & & & & & & & & & & 3 3 3 3 3 3 0 0 0 0 0 0 + + + + + +   6 & & & &0 /%%
.
.
.rz
:
:
( ( ( ($I I I I8   ! ! ! !( ( ( (   - - - - - -r;   