Ë
    Êmxiy  ã                  ó"  — 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j2                  «      Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z dd„Z!y)é    )ÚannotationsN)Ú	Generator)Úcontextmanager)ÚNamedTemporaryFile)ÚAnyÚBinaryIOÚcast)Úget_path_uid)Úformat_size)Úretryc                óÞ  — t         j                  dk(  st        t        d«      syt        j                  j                  | «      sJ ‚d }| |k7  r’t        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ÚosÚpathÚisabsÚlexistsr   r
   ÚOSErrorÚaccessÚW_OKÚdirname)r   ÚpreviousÚpath_uids      úU/home/htdocs/ttos/venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.pyÚcheck_path_ownerr      sÆ   € ô ‡|�|�wÒ¤g¬b°)Ô&<Øä�7‰7�=‰=˜ÔÐÐà€HØ
�(Ò
Ü�7‰7�?‰?˜4Ô ä�z‰z‹|˜qÒ ð!Ü+¨DÓ1�Hð   1‘}Ð$ä—y‘y ¤r§w¡wÓ/Ð/à!¤2§7¡7§?¡?°4Ó#8�dˆHð �(Ó
ð øô ò !Ù ð!ús   ÂC  Ã 	C,Ã+C,c              +  óÌ  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   ÚkwargsÚfÚresults       r   Úadjacent_tmp_filer,   -   sµ   è ø€ ô 
ð 
ØÜ�G‰G�O‰O˜DÓ!Ü�w‰w×Ñ Ó%Øñ	
ð
 ñ
ð &ð 
Ü”h Ó"ˆð	&ØŠLà�L‰LŒNÜ�H‰H�V—]‘]“_Õ%÷&ð &øð �L‰LŒNÜ�H‰H�V—]‘]“_Õ%ú÷&ð &ü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_dirr6   K   su   € ô �g‰g�m‰m˜DÔ!Ü—‘—‘ Ó&ˆØ�TŠ>ØØˆô	 �g‰g�m‰m˜DÕ!ô 
‡w�w�'ÒÜ�y‰y˜œrŸw™wÓ'Ð'ä! $Ó'Ð'ó    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>c   s   øè ø€ Ò!L¸a¤&§-¡-°×"9Ñ!Lùs   ƒ"é   TFz3Unexpected condition testing for writable directory)ÚrangeÚjoinr   r   ÚopenÚO_RDWRÚO_CREATÚO_EXCLÚcloseÚunlinkÚFileExistsErrorÚPermissionErrorr   )r   r%   rB   r3   ÚfileÚfdrC   s         @r   r4   r4   ]   sÈ   ø€ ð :€HØ5€HÜ�2‹Yò ˆØ˜"Ÿ'™'Ó!LÄ5ÈÃ8Ô!LÓLÑLˆÜ�w‰w�|‰|˜D $Ó'ˆð	Ü—‘˜œrŸy™y¬2¯:©:Ñ5¼¿	¹	ÑAÓBˆBô �H‰H�RŒLÜ�I‰I�dŒOÙð#ô( ÐGÓ
HÐHøô ò 	ÙÜò 	ò ð	ús   ÁACÃ	C0Ã$C0Ã/C0c                ó¨   ‡— g }t        j                  | «      D ]6  \  Š}}t        j                  ||«      }|j	                  ˆfd„|D «       «       Œ8 |S )z†Returns 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   rG   )rA   r*   Úroots     €r   rD   zfind_files.<locals>.<genexpr>   s    øè ø€ Ò=°”b—g‘g—l‘l 4¨×+Ñ=ùs   ƒ*-)r   ÚwalkÚfnmatchÚfilterÚextend)r   Úpatternr+   rB   ÚfilesÚmatchesrT   s         @r   Ú
find_filesr\   y   sP   ø€ ð €FÜŸ'™' $›-ò >‰ˆˆa�Ü—.‘. ¨Ó0ˆØ�‰Ó=°WÔ=Õ=ð>ð €Mr7   c                ó€   — t         j                  j                  | «      ryt         j                  j                  | «      S )Nr   )r   r   ÚislinkÚgetsize©r   s    r   Ú	file_sizera   ƒ   s(   € ä	‡w�w‡~�~�dÔØÜ�7‰7�?‰?˜4Ó Ð r7   c                ó*   — t        t        | «      «      S r>   )r   ra   r`   s    r   Úformat_file_sizerc   Š   s   € Ü”y “Ó'Ð'r7   c                ó°   — d}t        j                  | «      D ];  \  }}}|D ]0  }t         j                  j                  ||«      }|t	        |«      z  }Œ2 Œ= |S )Ng        )r   rU   r   rG   ra   )r   ÚsizerT   Ú_dirsrZ   ÚfilenameÚ	file_paths          r   Údirectory_sizeri   Ž   s^   € Ø€DÜ Ÿg™g d›mò )Ñˆˆe�UØò 	)ˆHÜŸ™Ÿ™ T¨8Ó4ˆIØ”I˜iÓ(Ñ(‰Dñ	)ð)ð €Kr7   c                ó*   — t        t        | «      «      S r>   )r   ri   r`   s    r   Úformat_directory_sizerk   —   s   € Ü”~ dÓ+Ó,Ð,r7   c                ó^  — t        j                  | «      j                  dz  dz  }t         j                  t         j                  v r%t        j                  |j                  «       |«       y t         j                  t         j                  v r#t        j                  |j                  |d¬«       y y )Ni¶  i€  F)Úfollow_symlinks)r   ÚstatÚst_modeÚchmodÚsupports_fdr(   Úsupports_follow_symlinksr3   )Ú	directoryÚtarget_fileÚmodes      r   Úcopy_directory_permissionsrv   ›   s|   € ä
�‰�	Ó×"Ñ" UÑ*Ø
ñ	ð 	ô
 
‡x�x”2—>‘>Ñ!Ü
�‰�×#Ñ#Ó% tÕ,Ü	�‰”R×0Ñ0Ñ	0Ü
�‰�×!Ñ! 4¸Ö?ð 
1r7   )r   ÚstrÚreturnÚbool)r   rw   r)   r   rx   zGenerator[BinaryIO, None, None])r   rw   rY   rw   rx   z	list[str])r   rw   rx   zint | float)r   rw   rx   rw   )rs   rw   rt   r   rx   ÚNone)"Ú
__future__r   rV   r   Úos.pathr?   r   Úcollections.abcr   Ú
contextlibr   Útempfiler   Útypingr   r   r	   Úpip._internal.utils.compatr
   Úpip._internal.utils.miscr   Úpip._internal.utils.retryr   r   r,   Úreplacer6   r4   r\   ra   rc   ri   rk   rv   r$   r7   r   ú<module>r…      s‹   ðÝ "ã Û 	Û Û Û 
Ý %Ý %Ý 'ß &Ñ &å 3Ý 0Ý +óð6 ò&ó ð&ð0 /‰% ¨Ô
.¨r¯z©zÓ
:€ó
(ó$Ió8ó!ó(óó-ô	@r7   