U e5do @sddlZddlZdddddddd d d d g Zd dZdd ZddZddZddZddZddZ ddZ dd Z dd Z dd Z ddZddZdS)N commonprefixexistsgetatimegetctimegetmtimegetsizeisdirisfilesamefile sameopenfilesamestatc Cs.zt|Wnttfk r(YdSXdS)NFT)osstatOSError ValueError)pathr#/usr/lib64/python3.8/genericpath.pyrs c Cs6zt|}Wnttfk r(YdSXt|jSNF)r rrrS_ISREGst_mode)rstrrrr s c Cs6zt|}Wnttfk r(YdSXt|jSr)r rrrS_ISDIRr)srrrrr's cCs t|jSN)r rst_sizefilenamerrrr0scCs t|jSr)r rst_mtimerrrrr5scCs t|jSr)r rst_atimerrrrr:scCs t|jSr)r rst_ctimerrrrr?scCsl|sdSt|dttfs*tttj|}t|}t|}t|D]$\}}|||krB|d|SqB|S)Nr) isinstancelisttuplemapr fspathminmax enumerate)ms1s2icrrrrEs cCs|j|jko|j|jkSr)st_inost_dev)r+r,rrrr Ws  cCst|}t|}t||Sr)r rr )f1f2r+r,rrrr ^s  cCst|}t|}t||Sr)r fstatr )fp1fp2r+r,rrrr ks  cCs||}|r"||}t||}||}||krz|d}||krz|||d|krp|d|||dfS|d7}q<||ddfS)Nr)rfindr()psepaltsepextsepsepIndex altsepIndexdotIndex filenameIndexrrr _splitextys     r@cGs`d}}|D]<}t|tr d}q t|tr0d}q t|d|jjdq |r\|r\tdddS)NFTz;() argument must be str, bytes, or os.PathLike object, not z.Can't mix strings and bytes in path components)r"strbytes TypeError __class____name__)funcnameargshasstrhasbytesrrrr_check_arg_typess  rJ)r r__all__rr rrrrrrr r r r@rJrrrrs,