3 ±\dh¤ã @s¬ddlZddlZdddddddd d d d d g Zdd„Zdd „Zdd„Zdd„Zdd„Zdd„Zdd„Z dd„Z dd „Z dd „Z dd „Z dd„Zdd„ZejGdd „d ƒƒZdS)éNÚ commonprefixÚexistsÚgetatimeÚgetctimeÚgetmtimeÚgetsizeÚisdirÚisfileÚsamefileÚ sameopenfileÚsamestatÚ ALLOW_MISSINGc Cs(ytj|ƒWntk r"dSXdS)NFT)ÚosÚstatÚOSError)Úpath©rú#/usr/lib64/python3.6/genericpath.pyrs c Cs0ytj|ƒ}Wntk r"dSXtj|jƒS)NF)rrrÚS_ISREGÚst_mode)rÚstrrrr s c Cs0ytj|ƒ}Wntk r"dSXtj|jƒS)NF)rrrÚS_ISDIRr)Úsrrrrr's cCs tj|ƒjS)N)rrÚst_size)Úfilenamerrrr0scCs tj|ƒjS)N)rrÚst_mtime)rrrrr5scCs tj|ƒjS)N)rrÚst_atime)rrrrr:scCs tj|ƒjS)N)rrÚst_ctime)rrrrr?scCsl|sdSt|dttfƒs*tttj|ƒƒ}t|ƒ}t|ƒ}x,t|ƒD] \}}|||krD|d|…SqDW|S)NÚr) Ú isinstanceÚlistÚtupleÚmaprÚfspathÚminÚmaxÚ enumerate)ÚmÚs1Ús2ÚiÚcrrrrEs cCs|j|jko|j|jkS)N)Úst_inoÚst_dev)r(r)rrrr Ws cCstj|ƒ}tj|ƒ}t||ƒS)N)rrr )Úf1Úf2r(r)rrrr ^s  cCstj|ƒ}tj|ƒ}t||ƒS)N)rÚfstatr )Úfp1Úfp2r(r)rrrr gs  cCsŽ|j|ƒ}|r"|j|ƒ}t||ƒ}|j|ƒ}||kr~|d}x@||kr||||d…|krr|d|…||d…fS|d7}q>W||dd…fS)Nér)Úrfindr%)ÚpÚsepÚaltsepÚextsepÚsepIndexÚ altsepIndexÚdotIndexÚ filenameIndexrrrÚ _splitextus      r=cGsbd}}xB|D]:}t|tƒr"d}qt|tƒr2d}qtd||jjfƒd‚qW|r^|r^tdƒd‚dS)NFTz*%s() argument must be str or bytes, not %rz.Can't mix strings and bytes in path components)rÚstrÚbytesÚ TypeErrorÚ __class__Ú__name__)ÚfuncnameÚargsÚhasstrÚhasbytesrrrrÚ_check_arg_typesŒs   rGc@seZdZdd„Zdd„ZdS)r cCsdS)Nzos.path.ALLOW_MISSINGr)ÚselfrrrÚ__repr__žszALLOW_MISSING.__repr__cCs|jjS)N)rArB)rHrrrÚ __reduce__ szALLOW_MISSING.__reduce__N)rBÚ __module__Ú __qualname__rIrJrrrrr ›s)rrÚ__all__rr rrrrrrr r r r=rGÚobjectÚ__new__r rrrrÚs$