eaiovnaovbqoebvqoeavibavo 3 \f"@sdZddlZddlZddlmZddlTddlmZddZiZeed<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 d6Z9Gd$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`ejaZbd,d-Zcd.d/Zdd0d1Zed2d3Zfd4d5ZgdS)7z Python bindings for libmagic N) namedtuple)*) find_librarycCstjjtdS)zc Loads the shared library through ctypes and returns a library L{ctypes.CDLL} instance magic)ctypesZcdllZ LoadLibraryrrr/usr/lib/python3.6/magic.py_initsr r @iiiiii i@iiiiii i? FileMagic mime_typeencodingnamec@s eZdZdS) magic_setN)__name__ __module__ __qualname__rrrrr9src@seZdZddZddZeddZeddZd d Zd d Z d dZ ddZ ddZ dddZ ddZddZddZddZdS)MagiccCs ||_dS)N)_magic_t)selfZmsrrr__init__pszMagic.__init__cCst|jdS)zO Closes the magic database and deallocates any resources used. N)_closer)rrrrclosessz Magic.closec CsB|dkr dSt|tr|Sy t|dStk r<t|SXdS)Nzutf-8) isinstancestr TypeError)srrrZ__tostrys  z Magic.__tostrc CsB|dkr dSt|tr|Sy t|dStk r<t|SXdS)Nzutf-8)r!bytesr#)brrrZ __tobytess  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)rfilenamerrrfilesz 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)rfdrrr descriptorszMagic.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'_bufferrlen)rZbufrrrbuffersz Magic.buffercCstjt|jS)zh Returns a textual explanation of the last error or None if there was no error. )rr'_errorr)rrrrerrorsz 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)rflagsrrrsetflagss 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*rrrloadsz 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))rdbsrrrcompiles 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:rrrchecksz 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:rrrlistsz Magic.listcCs t|jS)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)rrrrerrnosz 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)r5rrropensrDc@seZdZddZddZdS) MagicDetectcCs4ttt|_|jjttt|_|jjdS)N)rrC MAGIC_MIME mime_magicr8 MAGIC_NONE none_magic)rrrrrs zMagicDetect.__init__cCs|jj|jjdS)N)rGr rI)rrrr__del__s zMagicDetect.__del__N)rrrrrJrrrrrEsrEcCs*ttdd}|dkr&t}ttd||S)NZmagic_instance)getattr threadlocalrEsetattr)vrrr _detect_makes   rOcCs$|jd\}}t|||jdddS)Nz; zcharset=)rrr)splitrreplace)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*xrrrdetect_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_descriptorrTrrrdetect_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_contentrTrrrdetect_from_content&s rX)rrr)h__doc__rZ threading collectionsrZ ctypes.utilrr Z _librariesrHZNONEZ MAGIC_DEBUGDEBUGZ 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@objectrrDrEZlocalrLrOrSrUrWrXrrrrs                        }