
    y/YhV              
          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
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ ded	efd
Zedede
d	eeddf   fd       Z  edd      ej4                        Zded	efdZded	efdZdeded	ee   fdZded	eeef   fdZ ded	efdZ!ded	eeef   fdZ"ded	efdZ#y)    N)contextmanager)NamedTemporaryFile)AnyBinaryIO	GeneratorListUnioncast)get_path_uid)format_size)retrypathreturnc                    t         j                  dk(  st        t        d      syt        j                  j                  |       sJ d }| |k7  rt        j                  j                  |       rLt        j                         dk(  r	 t        |       }|dk(  S t        j                  | t        j                        S | t        j                  j                  |       } }| |k7  ry# t        $ r Y yw xY w)Nwin32geteuidTr   F)sysplatformhasattrosr   isabslexistsr   r   OSErroraccessW_OKdirname)r   previouspath_uids      _/var/www/html/profi_bot/bot/venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.pycheck_path_ownerr       s     ||wgb)&<77==H
(
77??4 zz|q !+D1H  1}$yyrww//!277??4#8dH (
   ! !s   C   	C,+C,kwargsc              +     K   t        ddt        j                  j                  |       t        j                  j	                  |       dd|5 }t        t        |      }	 | |j                          t        j                  |j                                	 ddd       y# |j                          t        j                  |j                                w xY w# 1 sw Y   yxY ww)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_filer.   *   s      
 
GGOOD!ww%	

 
 
h"	&LLLNHHV]]_%
 
 LLNHHV]]_%
 
s6   AC$CB #3C	C$ 5CCC!C$   g      ?)stop_after_delaywaitc                 R   t         j                  j                  |       sGt         j                  j                  |       }|| k(  rn"|} t         j                  j                  |       s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_dirr8   H   su     ggmmD!&T>	 ggmmD! 
ww'yyrww''!$''    c                    d}dt        d      D ]  }|dj                  fdt        d      D              z   }t        j                  j                  | |      }	 t        j                  |t        j
                  t        j                  z  t        j                  z        }t        j                  |       t        j                  |        y t        d	      # t        $ r Y t        $ r Y  yw xY w)
N(accesstest_deleteme_fishfingers_custard_$abcdefghijklmnopqrstuvwxyz0123456789
    c              3   H   K   | ]  }t        j                          y wN)randomchoice).0_alphabets     r   	<genexpr>z)_test_writable_dir_win.<locals>.<genexpr>`   s     !L8a&--"98s   "   TFz3Unexpected condition testing for writable directory)rangejoinr   r   openO_RDWRO_CREATO_EXCLcloseunlinkFileExistsErrorPermissionErrorr   )r   r(   rD   r5   filefdrE   s         @r   r6   r6   Z   s     :H5H2Y"''!L58!LLLww||D$'	ryy2::5		ABB HHRLIIdO# ( G
HH  	 	 	s   AC	C0$C0/C0patternc                     g }t        j                  |       D ]6  \  }}t        j                  ||      }|j	                  fd|D               8 |S )zReturns a list of absolute paths of files beneath path, recursively,
    with filenames which match the UNIX-style shell glob pattern.c              3   ^   K   | ]$  }t         j                  j                  |       & y wr@   )r   r   rI   )rC   r,   roots     r   rF   zfind_files.<locals>.<genexpr>|   s!     =Wbggll4+Ws   *-)r   walkfnmatchfilterextend)r   rT   r-   rD   filesmatchesrW   s         @r   
find_filesr^   v   sK     F''$-a..0=W== ( Mr9   c                     t         j                  j                  |       ryt         j                  j                  |       S )Nr   )r   r   islinkgetsizer   s    r   	file_sizerc      s(    	ww~~d77??4  r9   c                 *    t        t        |             S r@   )r   rc   rb   s    r   format_file_sizere      s    y''r9   c                     d}t        j                  |       D ];  \  }}}|D ]0  }t         j                  j                  ||      }|t	        |      z  }2 = |S )Ng        )r   rX   r   rI   rc   )r   sizerW   _dirsr\   filename	file_paths          r   directory_sizerk      sT    D ggdmeUHT84IIi((D  , Kr9   c                 *    t        t        |             S r@   )r   rk   rb   s    r   format_directory_sizerm      s    ~d+,,r9   )$rY   r   os.pathrA   r   
contextlibr   tempfiler   typingr   r   r   r   r	   r
   pip._internal.utils.compatr   pip._internal.utils.miscr   pip._internal.utils.retryr   strboolr    r.   replacer8   r6   r^   intfloatrc   re   rk   rm   r'   r9   r   <module>rz      s/    	   
 % ' > > 3 0 +3 4 6 &C &3 &9XtT=Q3R & &0 /%
.rzz
:
(C (D ($I I I8S 3 49 !C !E#u*- !(3 (3 ( sEz!2 - - -r9   