3 \ @s"dZdZdZdZdZdZdZdZdZd Z d Z d d Z d dZ dZ dZdZdZdZdZdZddZddZddZddZddZd d!Zd"d#Zd$Zd%ZeZd&Zd'Zd(Z d)Z!d*Z"d'Z#d(Z$d)Z%d+Z&d,Z'd-Z(d Z)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d-Z2d,Z3dZ4d.Z5d/Z6d0Z7d1Z8d2Z9ed3fed4fed5fe d6fed7fed8ffe#d9ffe$d:ffe%eBd;fedfed?fe-d=fff Z:d@dAZ;d,Zd-Z?dZ@dZAdZBd(ZCdZDd/ZEdZFdZGd%ZHd&ZIdZJd'ZKd.ZLy ddBlMTWneNk rYnXdCS)DzoConstants/functions for interpreting results of os.stat() and os.lstat(). Suggested usage: from stat import *  cCs|d@S)zMReturn the portion of the file's mode that can be set by os.chmod(). i)moder r /usr/lib64/python3.6/stat.pyS_IMODEsrcCs|d@S)zLReturn the portion of the file's mode that describes the file type. ir )r r r r S_IFMTsri@i i`iiiicCs t|tkS)z(Return True if mode is from a directory.)rS_IFDIR)r r r r S_ISDIR.srcCs t|tkS)zsrcCs t|tkS)z,Return True if mode is from a symbolic link.)rS_IFLNK)r r r r S_ISLNKBsrcCs t|tkS)z%Return True if mode is from a socket.)rS_IFSOCK)r r r r S_ISSOCKFsriii@i8 iiiii l-bdcprwsSxtTcCsPg}x@tD]8}x2|D] \}}||@|kr|j|PqW|jdq Wdj|S)z;Convert a file's mode to a string of the form '-rwxrwxrwx'.r%)_filemode_tableappendjoin)r Zpermtablebitcharr r r filemodes   r8)*N)O__doc__ST_MODEST_INOST_DEVST_NLINKST_UIDST_GIDST_SIZEST_ATIMEST_MTIMEST_CTIMErrrrrrrrrrrrrrrrS_ISUIDS_ISGIDS_ENFMTS_ISVTXS_IREADS_IWRITES_IEXECS_IRWXUS_IRUSRS_IWUSRS_IXUSRS_IRWXGS_IRGRPS_IWGRPS_IXGRPS_IRWXOS_IROTHS_IWOTHS_IXOTH UF_NODUMP UF_IMMUTABLE UF_APPEND UF_OPAQUE UF_NOUNLINK UF_COMPRESSED UF_HIDDEN SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK SF_SNAPSHOTr2r8FILE_ATTRIBUTE_ARCHIVEFILE_ATTRIBUTE_COMPRESSEDFILE_ATTRIBUTE_DEVICEFILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_ENCRYPTEDFILE_ATTRIBUTE_HIDDENFILE_ATTRIBUTE_INTEGRITY_STREAMFILE_ATTRIBUTE_NORMAL"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDFILE_ATTRIBUTE_NO_SCRUB_DATAFILE_ATTRIBUTE_OFFLINEFILE_ATTRIBUTE_READONLYFILE_ATTRIBUTE_REPARSE_POINTFILE_ATTRIBUTE_SPARSE_FILEFILE_ATTRIBUTE_SYSTEMFILE_ATTRIBUTE_TEMPORARYFILE_ATTRIBUTE_VIRTUAL_stat ImportErrorr r r r s