ggmmD!  ww'yyrww'' !$ ''cd}dtdD]}|djfdtdDz}tjj||} tj|tj tj ztjz}tj|tj|ytd #t$rYt$rYywxYw) N(accesstest_deleteme_fishfingers_custard_$abcdefghijklmnopqrstuvwxyz0123456789 c3HK|]}tjywN)randomchoice).0_alphabets r z)_test_writable_dir_win..cs!La&--"9!Ls"TFz3Unexpected condition testing for writable directory) rangejoinrropenO_RDWRO_CREATO_EXCLcloseunlinkFileExistsErrorPermissionErrorr)rr%rBr3filefdrCs @rr4r4]s:H5H 2Y"''!L58!LLLww||D$' ryy2::5 ABB HHRL IIdO#( G HH      sAC C0$C0/C0cg}tj|D]6\}}tj||}|j fd|D8|S)zReturns a list of absolute paths of files beneath path, recursively, with filenames which match the UNIX-style shell glob pattern.c3^K|]$}tjj|&ywr>)rrrG)rAr*roots rrDzfind_files..s =bggll4+=s*-)rwalkfnmatchfilterextend)rpatternr+rBfilesmatchesrTs @r find_filesr\ysPF''$->a..0 =W==> Mr7ctjj|rytjj|S)Nr)rrislinkgetsizers r file_sizeras( ww~~d 77??4  r7c*tt|Sr>)r rar`s rformat_file_sizercs y ''r7cd}tj|D];\}}}|D]0}tjj||}|t |z }2=|S)Ng)rrUrrGra)rsizerT_dirsrZfilename file_paths rdirectory_sizeris^ D ggdm)eU )H T84I Ii( (D )) Kr7c*tt|Sr>)r rir`s rformat_directory_sizerks ~d+ ,,r7c^tj|jdzdz}tjtjvr%tj|j |ytjtj vr#tj|j|dyy)NiiF)follow_symlinks)rstatst_modechmod supports_fdr(supports_follow_symlinksr3) directory target_filemodes rcopy_directory_permissionsrvs|  ""U*    xx2>>! ##%t, R00 0 !!4? 1r7)rstrreturnbool)rrwr)rrxzGenerator[BinaryIO, None, None])rrwrYrwrxz list[str])rrwrxz int | float)rrwrxrw)rsrwrtrrxNone)" __future__rrVros.pathr?rcollections.abcr contextlibrtempfilertypingrrr pip._internal.utils.compatr pip._internal.utils.miscr pip._internal.utils.retryr rr,replacer6r4r\rarcrirkrvr$r7rrs"  %%'&&30+6&&0 /% .rzz : ($I8!(- @r7