
    q"hV              
          S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
JrJrJrJrJr  S SKJr  S SKJr  S SKJr  S\S	\4S
 jr\S\S\
S	\\SS4   4S j5       r\" SSS9" \R4                  5      rS\S	\4S jrS\S	\4S jrS\S\S	\\   4S jrS\S	\\\4   4S jr S\S	\4S jr!S\S	\\\4   4S jr"S\S	\4S jr#g)    N)contextmanager)NamedTemporaryFile)AnyBinaryIO	GeneratorListUnioncast)get_path_uid)format_size)retrypathreturnc                    [         R                  S:X  d  [        [        S5      (       d  g[        R                  R                  U 5      (       d   eS nX:w  a  [        R                  R                  U 5      (       aO  [        R                  " 5       S:X  a   [        U 5      nUS:H  $ [        R                  " U [        R                  5      $ U [        R                  R                  U 5      pX:w  a  M  g! [         a     gf = f)Nwin32geteuidTr   F)sysplatformhasattrosr   isabslexistsr   r   OSErroraccessW_OKdirname)r   previouspath_uids      P/var/www/html/env/lib/python3.13/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#8d 
   ! !s   C3 3
D ?D kwargsc              +     #    [        SS[        R                  R                  U 5      [        R                  R	                  U 5      SS.UD6 n[        [        U5      n Uv   UR                  5         [        R                  " UR                  5       5         SSS5        g! UR                  5         [        R                  " UR                  5       5        f = f! , (       d  f       g= f7f)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!#4C	C+!6CC
C($C+   g      ?)stop_after_delaywaitc                 l   [         R                  R                  U 5      (       dM  [         R                  R                  U 5      nX:X  a  O(Un [         R                  R                  U 5      (       d  MM  [         R                  S:X  a%  [         R
                  " U [         R                  5      $ [        U 5      $ )z_Check 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   sy     ggmmD!!&>	 ggmmD!! 
ww'yyrww''!$''    c                   ^ SnSm[        S5       H  nUSR                  U4S j[        S5       5       5      -   n[        R                  R                  X5      n [        R                  " U[        R
                  [        R                  -  [        R                  -  5      n[        R                  " U5        [        R                  " U5          g   [        S	5      e! [         a     M  [         a       gf = f)
N(accesstest_deleteme_fishfingers_custard_$abcdefghijklmnopqrstuvwxyz0123456789
    c              3   P   >#    U  H  n[         R                  " T5      v   M     g 7fN)randomchoice).0_alphabets     r   	<genexpr>)_test_writable_dir_win.<locals>.<genexpr>`   s     !L8a&--"9"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
C7*	C76C7patternc                    ^ / n[         R                  " U 5       H7  u  mp4[        R                  " XA5      nUR	                  U4S jU 5       5        M9     U$ )zReturns a list of absolute paths of files beneath path, recursively,
with filenames which match the UNIX-style shell glob pattern.c              3   d   >#    U  H%  n[         R                  R                  TU5      v   M'     g 7fr@   )r   r   rJ   )rC   r,   roots     r   rF   find_files.<locals>.<genexpr>|   s#     =Wbggll4++Ws   -0)r   walkfnmatchfilterextend)r   rU   r-   rD   filesmatchesrX   s         @r   
find_filesr`   v   sG     F''$-a..0=W== ( Mr9   c                     [         R                  R                  U 5      (       a  g[         R                  R                  U 5      $ )Nr   )r   r   islinkgetsizer   s    r   	file_sizere      s+    	ww~~d77??4  r9   c                 *    [        [        U 5      5      $ r@   )r   re   rd   s    r   format_file_sizerg      s    y''r9   c                     Sn[         R                  " U 5       H<  u  p#nU H0  n[         R                  R                  X%5      nU[	        U5      -  nM2     M>     U$ )Ng        )r   rZ   r   rJ   re   )r   sizerX   _dirsr^   filename	file_paths          r   directory_sizerm      sP    D ggdmUHT4IIi((D  , Kr9   c                 *    [        [        U 5      5      $ r@   )r   rm   rd   s    r   format_directory_sizero      s    ~d+,,r9   )$r[   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floatre   rg   rm   ro   r'   r9   r   <module>r|      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   