B \] @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/local/lib/python3.7/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||PqW|dq Wd|S)z;Convert a file's mode to a string of the form '-rwxrwxrwx'.r%)_filemode_tableappendjoin)r ZpermZtableZbitZcharr r r filemodes   r5)*N)O__doc__ZST_MODEZST_INOZST_DEVZST_NLINKZST_UIDZST_GIDZST_SIZEZST_ATIMEZST_MTIMEZST_CTIMErrrrrrrrrrrrrrrrZS_ISUIDZS_ISGIDZS_ENFMTZS_ISVTXZS_IREADZS_IWRITEZS_IEXECZS_IRWXUZS_IRUSRZS_IWUSRZS_IXUSRZS_IRWXGZS_IRGRPZS_IWGRPZS_IXGRPZS_IRWXOZS_IROTHZS_IWOTHZS_IXOTHZ UF_NODUMPZ UF_IMMUTABLEZ UF_APPENDZ UF_OPAQUEZ UF_NOUNLINKZ UF_COMPRESSEDZ UF_HIDDENZ SF_ARCHIVEDZ SF_IMMUTABLEZ SF_APPENDZ SF_NOUNLINKZ SF_SNAPSHOTr2r5ZFILE_ATTRIBUTE_ARCHIVEZFILE_ATTRIBUTE_COMPRESSEDZFILE_ATTRIBUTE_DEVICEZFILE_ATTRIBUTE_DIRECTORYZFILE_ATTRIBUTE_ENCRYPTEDZFILE_ATTRIBUTE_HIDDENZFILE_ATTRIBUTE_INTEGRITY_STREAMZFILE_ATTRIBUTE_NORMALZ"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDZFILE_ATTRIBUTE_NO_SCRUB_DATAZFILE_ATTRIBUTE_OFFLINEZFILE_ATTRIBUTE_READONLYZFILE_ATTRIBUTE_REPARSE_POINTZFILE_ATTRIBUTE_SPARSE_FILEZFILE_ATTRIBUTE_SYSTEMZFILE_ATTRIBUTE_TEMPORARYZFILE_ATTRIBUTE_VIRTUALZ_stat ImportErrorr r r r s