# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= python-puremagic VERSION= 2.2.0 KEYWORDS= python VARIANTS= v13 v14 SDESC[v13]= Magic file detection (3.13) SDESC[v14]= Magic file detection (3.14) HOMEPAGE= https://github.com/cdgriffith/puremagic CONTACT= Python_Automaton[python@ironwolf.systems] DOWNLOAD_GROUPS= main SITES[main]= PYPIWHL/95/81/314320aeffd88dadeac553ff9eb10f54507ab41deccd0c69f6221d254a0a DISTFILE[1]= puremagic-2.2.0-py3-none-any.whl:main DIST_SUBDIR= python-src DF_INDEX= 1 SPKGS[v13]= single SPKGS[v14]= single OPTIONS_AVAILABLE= PY313 PY314 OPTIONS_STANDARD= none VOPTS[v13]= PY313=ON PY314=OFF VOPTS[v14]= PY313=OFF PY314=ON DISTNAME= puremagic-2.2.0.dist-info GENERATED= yes [PY313].USES_ON= python:v13,wheel [PY314].USES_ON= python:v14,wheel [FILE:2747:descriptions/desc.single] ========= puremagic ========= puremagic is a pure python module that will identify a file based off its magic numbers. It has zero runtime dependencies and serves as a lightweight, cross-platform alternative to python-magic/libmagic. It is designed to be minimalistic and inherently cross platform compatible. It is also designed to be a stand in for python-magic. It implements the functions :code:`from_file(filename[, mime])` and :code:`from_string(string[, mime])` however the :code:`magic_file()` and :code:`magic_string()` are more powerful and will also display confidence and duplicate matches. Starting with version 2.0, puremagic includes a **deep scan** system that performs content-aware analysis beyond simple magic number matching. This improves accuracy for formats like Office documents, text files, CSV, MP3, Python source, JSON, HDF5, email, and many scientific formats. Deep scan is enabled by default and can be disabled by setting the environment variable :code:`PUREMAGIC_DEEPSCAN=0`. Advantages over using a wrapper for 'file' or 'libmagic': - Faster - Lightweight - Cross platform compatible - No dependencies Disadvantages: - Does not have as many file types - No multilingual comments - Duplications due to small or reused magic numbers (Help fix the first two disadvantages by contributing!) Compatibility ~~~~~~~~~~~~~ - Python 3.12+ For use with Python 3.7–3.11, use the 1.x release chain. Using github ci to run continuous integration tests on listed platforms. Install from PyPI ----------------- .. code:: bash $ pip install puremagic On linux environments, you may want to be clear you are using python3 .. code:: bash $ python3 -m pip install puremagic Usage ----- "from_file" will return the most likely file extension. "magic_file" will give you every possible result it finds, as well as the confidence. .. code:: python import puremagic filename = "test/resources/images/test.gif" ext = puremagic.from_file(filename) # '.gif' puremagic.magic_file(filename) # [['.gif', 'image/gif', 'Graphics interchange format file (GIF87a)', 0.7], # ['.gif', '', 'GIF file', 0.5]] With "magic_file" it gives each match, highest confidence first: - possible extension(s) - mime type - description - confidence (All headers have to perfectly match to make the list, however this orders it by longest header, therefore most precise, first) If you already have a file open, or raw byte string, you could also use: * from_string * from_stream * magic_string * magic_stream .. code:: python with open(r"test\resources\video\test.mp4", "rb") as file: print(puremagic.magic_stream(file)) [FILE:122:distinfo] c4f7ed7307f056c787199acfda839555921be1df13abba61e8e6db0c787ae1d0 71971 python-src/puremagic-2.2.0-py3-none-any.whl