I iy"ddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZmZmZddlmZddlmZdd lmZdd Ze dd Zed d ej2ZddZddZddZddZddZddZddZ ddZ!y)) annotationsN) Generator)contextmanager)NamedTemporaryFile)AnyBinaryIOcast) get_path_uid) format_size)retryctjdk(sttdsytjj |sJd}||k7rtjj |rLtjdk(r t|}|dk(Stj|tjS|tjj|}}||k7ry#t$rYywxYw)Nwin32geteuidTrF) sysplatformhasattrospathisabslexistsrr OSErroraccessW_OKdirname)rpreviouspath_uids d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.pycheck_path_ownerrs ||wgb)&< 77==  H (  77??4 zz|q !+D1H 1}$yyrww//!277??4#8dH (  ! !s C C,+C,c+Ktddtjj|tjj |dd|5}t t |} ||jtj|j dddy#|jtj|jwxYw#1swYyxYww)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)deletedirprefixsuffixN) rrrrbasenamer rflushfsyncfileno)rkwargsfresults radjacent_tmp_filer,-s   GGOOD !ww%      & h" &L LLN HHV]]_ % & & LLN HHV]]_ % & &s6A C$ CB #3C C$ 5CCC!C$g?)stop_after_delaywaitcRtjj|sGtjj|}||k(rn"|}tjj|sGtjdk(r$tj |tj St|S)zgCheck if a directory is writable. Uses os.access() on POSIX, tries creating files on Windows. posix)rrisdirrnamerr_test_writable_dir_win)rparents rtest_writable_dirr6Ksu ggmmD!& T>  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