ó
    T=Œjœ  ã                  ój  • S SK Jr  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J	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJr  S SKJr  S S	KJr  S S
KJr  SS jr\SS j5       r\" SSS9" \R8                  5      rSS jrSS jrSS jrSS jr SS jr!SS jr"SS jr#S S jr$      S!S jr%S"S jr&S"S jr'g)#é    )ÚannotationsN)ÚCallableÚ	Generator)Úcontextmanager)ÚPath)ÚNamedTemporaryFile)ÚAnyÚBinaryIOÚcast)Úget_path_uid)Úformat_size)Úretryc                ó  • [         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ÚosÚpathÚisabsÚlexistsr   r   ÚOSErrorÚaccessÚW_OKÚdirname)r   ÚpreviousÚpath_uids      Úb/Users/stevendouglas/BidBrain/.venv/lib/python3.13/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ð Õ
ð øô ó !Ù ð!ús   ÂC3 Ã3
D Ã?D c              +  óÚ  #   • [        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   Ú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!Á#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   L   sy   € ô �g‰g�m‰m˜D×!Ñ!Ü—‘—‘ Ó&ˆØ‹>ØØˆô	 �g‰g�m‰m˜D×!Ó!ô 
‡w�w�'ÓÜ�yŠy˜œrŸw™wÓ'Ð'ä! $Ó'Ð'ó    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>d   s   øé € Ð!LÂ8¸a¤&§-¢-°×"9Ð"9Â8ùs   ƒ#&é   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   ^   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Ã
C7Ã*	C7Ã6C7c                ó®   ^• / n[         R                  " U 5       H7  u  mp4[        R                  " XA5      nUR	                  U4S jU 5       5        M9     U$ )z‚Returns 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°”b—g‘g—l‘l 4¨×+Ð+²Wùs   ƒ-0)r   ÚwalkÚfnmatchÚfilterÚextend)r   Úpatternr-   rD   ÚfilesÚmatchesrW   s         @r   Ú
find_filesr`   z   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_sizerf   „   s+   € ä	‡w�w‡~�~�d×ÑØÜ�7‰7�?‰?˜4Ó Ð r9   c                ó*   • [        [        U 5      5      $ r@   )r   rf   re   s    r   Úformat_file_sizerh   ‹   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   rY   r   rJ   rf   )r   ÚsizerW   Ú_dirsr^   ÚfilenameÚ	file_paths          r   Údirectory_sizern   �   sP   € Ø€DÜ Ÿgšg džmÑˆ�UÛˆHÜŸ™Ÿ™ TÓ4ˆIØ”I˜iÓ(Ñ(ŠDó ñ ,ð €Kr9   c                ó*   • [        [        U 5      5      $ r@   )r   rn   re   s    r   Úformat_directory_sizerp   ˜   s   € Ü”~ dÓ+Ó,Ð,r9   c                óf  • [         R                  " U 5      R                  S-  S-  n[         R                  [         R                  ;   a&  [         R                  " UR                  5       U5        g [         R                  [         R                  ;   a!  [         R                  " UR                  USS9  g g )Ni¶  i€  F)Úfollow_symlinks)r   ÚstatÚst_modeÚchmodÚsupports_fdr*   Úsupports_follow_symlinksr5   )Ú	directoryÚtarget_fileÚmodes      r   Úcopy_directory_permissionsr{   œ   s|   € ä
�Š�	Ó×"Ñ" UÑ*Ø
ñ	ð 	ô
 
‡x�x”2—>‘>Ó!Ü
�Š�×#Ñ#Ó% tÕ,Ü	�‰”R×0Ñ0Ó	0Ü
�Š�×!Ñ! 4¸Ó?ð 
1r9   c              #  óz  #   • / n[        5       n[        R                  " [        U 5      R	                  5       5       H^  u  pEn[        U5      nU" XF5      (       a/  UR                  UR                  SS 5        UR                  U5        UR                  U5        M`     [        USS9 H  nXƒ;  d  M
  Uv •  M     g7f)zVYields every subdirectory of +path+ that has no files matching the
predicate under it.NéÿÿÿÿT)Úreverse)
Úsetr   rY   r   ÚresolveÚupdateÚparentsÚaddÚappendÚsorted)	r   Ú	predicateÚdirectoriesÚexcludedÚroot_strrD   Ú	filenamesrW   Úds	            r   Ú_subdirs_without_genericrŒ   ¨   sž   é € ð €KÜ›%€Hä"$§'¢'¬$¨t«*×*<Ñ*<Ó*>Ö"?Ñˆ�YÜ�H‹~ˆÙ�X×)Ñ)ð �O‰O˜DŸL™L¨¨"Ð-Ô.Ø�L‰L˜ÔØ×Ñ˜4Ö ñ #@ô �K¨Ô.ˆØÕØŒGò /ùs   ‚B,B;Â2	B;c                ó   • [        U S 5      $ )z?Yields every subdirectory of +path+ that has no files under it.c                ó   • [        U5      S:„  $ rb   )Úlen©rW   rŠ   s     r   Ú<lambda>Ú'subdirs_without_files.<locals>.<lambda>Â   s   € Ä#ÀiÃ.ÐSTÒBTr9   ©rŒ   re   s    r   Úsubdirs_without_filesr”   À   s   € ä# DÑ*TÓUÐUr9   c                ó   • [        U S 5      $ )zDYields every subdirectory of +path+ that has no .whl files under it.c                ó&   • [        S U 5       5      $ )Nc              3  óB   #   • U  H  oR                  S 5      v •  M     g7f)z.whlN)Úendswith)rC   Úxs     r   rF   Ú;subdirs_without_wheels.<locals>.<lambda>.<locals>.<genexpr>È   s   é € Ð)PÂiÀ¯*©*°V×*<Ð*<Âiùs   ‚)Úanyr�   s     r   r‘   Ú(subdirs_without_wheels.<locals>.<lambda>È   s   € ¤cÑ)PÁiÓ)PÔ&Pr9   r“   re   s    r   Úsubdirs_without_wheelsr�   Å   s   € ä#ØÑPóð r9   )r   ÚstrÚreturnÚbool)r   rž   r+   r	   rŸ   zGenerator[BinaryIO, None, None])r   rž   r]   rž   rŸ   z	list[str])r   rž   rŸ   zint | float)r   rž   rŸ   rž   )rx   rž   ry   r
   rŸ   ÚNone)r   rž   r†   z Callable[[str, list[str]], bool]rŸ   úGenerator[Path])r   rž   rŸ   r¢   )(Ú
__future__r   rZ   r   Úos.pathrA   r   Úcollections.abcr   r   Ú
contextlibr   Úpathlibr   Útempfiler   Útypingr	   r
   r   Úpip._internal.utils.compatr   Úpip._internal.utils.miscr   Úpip._internal.utils.retryr   r    r.   Úreplacer8   r6   r`   rf   rh   rn   rp   r{   rŒ   r”   r�   r&   r9   r   Ú<module>r®      s´   ðÝ "ã Û 	Û Û Û 
ß /Ý %Ý Ý 'ß &Ñ &å 3Ý 0Ý +ôð6 ó&ó ð&ñ0  ¨Ò
.¨r¯z©zÓ
:€ô
(ô$Iô8ô!ô(ôô-ô	@ðØ
ðØ:ðàôô0Võ
r9   