dbfdg 3 Ý\f¡"ã@sÀdZddlZddlZddlmZddlTddlmZdd„ZiZeƒed<dZ Z d Z Z d Z Zd ZZd ZZd ZZdZZdZZdZZdZZdZZdZZ dZ!Z"dZ#Z$dZ%Z&dZ'Z(dZ)Z*dZ+Z,dZ-Z.dZ/Z0dZ1Z2dZ3Z4dZ5Z6dZ7Z8ed d6ƒZ9Gd$d%„d%e:ƒZ;ge;_edj?Z@e>e@_AeBge@_CedjDZEdeE_Ae>geE_CedjFZGeHeG_Ae>eHgeG_CedjIZJeHeJ_Ae>eBgeJ_CedjKZLeHeL_Ae>eMeNgeL_CedjOZPeHeP_Ae>geP_CedjQZReBeR_Ae>eBgeR_CedjSZTeBeT_Ae>eHgeT_CedjUZVeBeV_Ae>eHgeV_CedjWZXeBeX_Ae>eHgeX_CedjYZZeBeZ_Ae>eHgeZ_Cedj[Z\eBe\_Ae>ge\_CGd&d'„d'e]ƒZ^d(d)„Z_Gd*d+„d+e]ƒZ`ejaƒZbd,d-„Zcd.d/„Zdd0d1„Zed2d3„Zfd4d5„ZgdS)7z Python bindings for libmagic éN)Ú namedtuple)Ú*)Ú find_librarycCstjjtdƒƒS)zc Loads the shared library through ctypes and returns a library L{ctypes.CDLL} instance Úmagic)ÚctypesZcdllZ LoadLibraryr©rrú/usr/lib/python3.6/magic.pyÚ_initsr réééééé é@é€éiiiiii i@i€iiiii i°?Ú FileMagicÚ mime_typeÚencodingÚnamec@s eZdZdS)Ú magic_setN)Ú__name__Ú __module__Ú __qualname__rrrrr9src@s†eZdZdd„Zdd„Zedd„ƒZedd„ƒZd d „Zd d „Z d d„Z dd„Z dd„Z ddd„Z dd„Zdd„Zdd„Zdd„ZdS)ÚMagiccCs ||_dS)N)Ú_magic_t)ÚselfZmsrrrÚ__init__pszMagic.__init__cCst|jƒdS)zO Closes the magic database and deallocates any resources used. N)Ú_closer)rrrrÚclosessz Magic.closec CsB|dkr dSt|tƒr|Sy t|dƒStk r<t|ƒSXdS)Nzutf-8)Ú isinstanceÚstrÚ TypeError)ÚsrrrZ__tostrys  z Magic.__tostrc CsB|dkr dSt|tƒr|Sy t|dƒStk r<t|ƒSXdS)Nzutf-8)r!Úbytesr#)ÚbrrrZ __tobytes„s  zMagic.__tobytescCstjt|jtj|ƒƒƒS)zè Returns a textual description of the contents of the argument passed as a filename or None if an error occurred and the MAGIC_ERROR flag is set. A call to errno() will return the numeric error code. )rÚ _Magic__tostrÚ_filerÚ_Magic__tobytes)rÚfilenamerrrÚfilesz Magic.filecCstjt|j|ƒƒS)zï Returns a textual description of the contents of the argument passed as a file descriptor or None if an error occurred and the MAGIC_ERROR flag is set. A call to errno() will return the numeric error code. )rr'Ú _descriptorr)rÚfdrrrÚ descriptor—szMagic.descriptorcCstjt|j|t|ƒƒƒS)zæ Returns a textual description of the contents of the argument passed as a buffer or None if an error occurred and the MAGIC_ERROR flag is set. A call to errno() will return the numeric error code. )rr'Ú_bufferrÚlen)rZbufrrrÚbufferŸsz Magic.buffercCstjt|jƒƒS)zh Returns a textual explanation of the last error or None if there was no error. )rr'Ú_errorr)rrrrÚerror§sz Magic.errorcCs t|j|ƒS)a* Set flags on the magic object which determine how magic checking behaves; a bitwise OR of the flags described in libmagic(3), but without the MAGIC_ prefix. Returns -1 on systems that don't support utime(2) or utimes(2) when PRESERVE_ATIME is set. )Ú _setflagsr)rÚflagsrrrÚsetflags®s zMagic.setflagsNcCst|jtj|ƒƒS)a  Must be called to load entries in the colon separated list of database files passed as argument or the default database file if no argument before any magic queries can be performed. Returns 0 on success and -1 on failure. )Ú_loadrrr))rr*rrrÚload¹sz Magic.loadcCst|jtj|ƒƒS)aD Compile entries in the colon separated list of database files passed as argument or the default database file if no argument. The compiled files created are named from the basename(1) of each file argument with ".mgc" appended to it. Returns 0 on success and -1 on failure. )Ú_compilerrr))rÚdbsrrrÚcompileÃs z Magic.compilecCst|jtj|ƒƒS)zÞ Check the validity of entries in the colon separated list of database files passed as argument or the default database file if no argument. Returns 0 on success and -1 on failure. )Ú_checkrrr))rr:rrrÚcheckÎsz Magic.checkcCst|jtj|ƒƒS)zÞ Check the validity of entries in the colon separated list of database files passed as argument or the default database file if no argument. Returns 0 on success and -1 on failure. )Ú_listrrr))rr:rrrÚlistØsz Magic.listcCs t|jƒS)a Returns a numeric error code. If return value is 0, an internal magic error occurred. If return value is non-zero, the value is an OS error code. Use the errno module or os.strerror() can be used to provide detailed error information. )Ú_errnor)rrrrÚerrnoâsz Magic.errno)N)rrrrr Ú staticmethodr'r)r+r.r1r3r6r8r;r=r?rArrrrros     rcCs tt|ƒƒS)zd Returns a magic object on success and None on failure. Flags argument as for setflags. )rÚ_open)r5rrrÚopenìsrDc@seZdZdd„Zdd„ZdS)Ú MagicDetectcCs4tttƒƒ|_|jjƒtttƒƒ|_|jjƒdS)N)rrCÚ MAGIC_MIMEÚ mime_magicr8Ú MAGIC_NONEÚ none_magic)rrrrrös zMagicDetect.__init__cCs|jjƒ|jjƒdS)N)rGr rI)rrrrÚ__del__üs zMagicDetect.__del__N)rrrrrJrrrrrEõsrEcCs*ttddƒ}|dkr&tƒ}ttd|ƒ|S)NZmagic_instance)ÚgetattrÚ threadlocalrEÚsetattr)ÚvrrrÚ _detect_makes   rOcCs$|jdƒ\}}t|||jddƒdS)Nz; zcharset=Ú)rrr)ÚsplitrÚreplace)Z mime_detectedZ type_detectedrZ mime_encodingrrrÚ_create_filemagic srScCs tƒ}t|jj|ƒ|jj|ƒƒS)zdDetect mime type, encoding and file type from a filename Returns a `FileMagic` namedtuple. )rOrSrGr+rI)r*ÚxrrrÚdetect_from_filenames rUcCs(|jƒ}tƒ}t|jj|ƒ|jj|ƒƒS)zjDetect mime type, encoding and file type from file-like object Returns a `FileMagic` namedtuple. )ÚfilenorOrSrGr.rI)ZfobjZfile_descriptorrTrrrÚdetect_from_fobjs rWcCs tƒ}t|jj|ƒ|jj|ƒƒS)z_Detect mime type, encoding and file type from bytes Returns a `FileMagic` namedtuple. )rOrSrGr1rI)Z byte_contentrTrrrÚdetect_from_content&s rX)rrr)hÚ__doc__rZ threadingÚ collectionsrZ ctypes.utilrr Z _librariesrHZNONEZ MAGIC_DEBUGÚDEBUGZ MAGIC_SYMLINKZSYMLINKZMAGIC_COMPRESSZCOMPRESSZ MAGIC_DEVICESZDEVICESZMAGIC_MIME_TYPEZ MIME_TYPEZMAGIC_CONTINUEZCONTINUEZ MAGIC_CHECKZCHECKZMAGIC_PRESERVE_ATIMEZPRESERVE_ATIMEZ MAGIC_RAWZRAWZ MAGIC_ERRORZERRORZMAGIC_MIME_ENCODINGZ MIME_ENCODINGrFZMIMEZ MAGIC_APPLEZAPPLEZMAGIC_NO_CHECK_COMPRESSZNO_CHECK_COMPRESSZMAGIC_NO_CHECK_TARZ NO_CHECK_TARZMAGIC_NO_CHECK_SOFTZ NO_CHECK_SOFTZMAGIC_NO_CHECK_APPTYPEZNO_CHECK_APPTYPEZMAGIC_NO_CHECK_ELFZ NO_CHECK_ELFZMAGIC_NO_CHECK_TEXTZ NO_CHECK_TEXTZMAGIC_NO_CHECK_CDFZ NO_CHECK_CDFZMAGIC_NO_CHECK_TOKENSZNO_CHECK_TOKENSZMAGIC_NO_CHECK_ENCODINGZNO_CHECK_ENCODINGZMAGIC_NO_CHECK_BUILTINZNO_CHECK_BUILTINrZ StructurerZ_fields_ZPOINTERZmagic_tZ magic_openrCZrestypeZc_intZargtypesZ magic_closerZ magic_filer(Zc_char_pZmagic_descriptorr,Z magic_bufferr/Zc_void_pZc_size_tZ magic_errorr2Zmagic_setflagsr4Z magic_loadr7Z magic_compiler9Z magic_checkr<Z magic_listr>Z magic_errnor@ÚobjectrrDrEZlocalrLrOrSrUrWrXrrrrÚs¢                        }