Module refinery.lib.magic
A cross-platform interface to libmagic.
Expand source code Browse git
"""
A cross-platform interface to libmagic.
"""
from __future__ import annotations
try:
from winmagic import magic
except ModuleNotFoundError:
import os
if os.name == 'nt':
# Attempting to import magic on Windows without winmagic being
# installed may result in an uncontrolled crash.
magic = None
else:
try:
import magic
except ImportError:
magic = None
def magicparse(data, *args, **kwargs) -> str:
if magic:
data = bytes(data) if not isinstance(data, bytes) else data
try:
return magic.Magic(*args, **kwargs).from_buffer(data)
except magic.MagicException:
pass
return 'application/octet-stream'
Functions
def magicparse(data, *args, **kwargs)
-
Expand source code Browse git
def magicparse(data, *args, **kwargs) -> str: if magic: data = bytes(data) if not isinstance(data, bytes) else data try: return magic.Magic(*args, **kwargs).from_buffer(data) except magic.MagicException: pass return 'application/octet-stream'