Top

filetype.filetype module

# -*- coding: utf-8 -*-

from __future__ import absolute_import

from .match import match
from .types import TYPES, Type

# Expose supported matchers types
types = TYPES


def guess(obj):
    """
    Infers the type of the given input.

    Function is overloaded to accept multiple types in input
    and peform the needed type inference based on it.

    Args:
        obj: path to file, bytes or bytearray.

    Returns:
        The matched type instance. Otherwise None.

    Raises:
        TypeError: if obj is not a supported type.
    """
    return match(obj) if obj else None


def guess_mime(obj):
    """
    Infers the file type of the given input
    and returns its MIME type.

    Args:
        obj: path to file, bytes or bytearray.

    Returns:
        The matched MIME type as string. Otherwise None.

    Raises:
        TypeError: if obj is not a supported type.
    """
    kind = guess(obj)
    return kind.mime if kind else kind


def guess_extension(obj):
    """
    Infers the file type of the given input
    and returns its RFC file extension.

    Args:
        obj: path to file, bytes or bytearray.

    Returns:
        The matched file extension as string. Otherwise None.

    Raises:
        TypeError: if obj is not a supported type.
    """
    kind = guess(obj)
    return kind.extension if kind else kind


def get_type(mime=None, ext=None):
    """
    Returns the file type instance searching by
    MIME type or file extension.

    Args:
        ext: file extension string. E.g: jpg, png, mp4, mp3
        mime: MIME string. E.g: image/jpeg, video/mpeg

    Returns:
        The matched file type instance. Otherwise None.
    """
    for kind in types:
        if kind.extension is ext or kind.mime is mime:
            return kind
    return None


def add_type(instance):
    """
    Adds a new type matcher instance to the supported types.

    Args:
        instance: Type inherited instance.

    Returns:
        None
    """
    if not isinstance(instance, Type):
        raise TypeError('instance must inherit from filetype.types.Type')

    types.insert(0, instance)

Module variables

var TYPES

var types

Functions

def add_type(

instance)

Adds a new type matcher instance to the supported types.

Args: instance: Type inherited instance.

Returns: None

def add_type(instance):
    """
    Adds a new type matcher instance to the supported types.

    Args:
        instance: Type inherited instance.

    Returns:
        None
    """
    if not isinstance(instance, Type):
        raise TypeError('instance must inherit from filetype.types.Type')

    types.insert(0, instance)

def get_type(

mime=None, ext=None)

Returns the file type instance searching by MIME type or file extension.

Args: ext: file extension string. E.g: jpg, png, mp4, mp3 mime: MIME string. E.g: image/jpeg, video/mpeg

Returns: The matched file type instance. Otherwise None.

def get_type(mime=None, ext=None):
    """
    Returns the file type instance searching by
    MIME type or file extension.

    Args:
        ext: file extension string. E.g: jpg, png, mp4, mp3
        mime: MIME string. E.g: image/jpeg, video/mpeg

    Returns:
        The matched file type instance. Otherwise None.
    """
    for kind in types:
        if kind.extension is ext or kind.mime is mime:
            return kind
    return None

def guess(

obj)

Infers the type of the given input.

Function is overloaded to accept multiple types in input and peform the needed type inference based on it.

Args: obj: path to file, bytes or bytearray.

Returns: The matched type instance. Otherwise None.

Raises: TypeError: if obj is not a supported type.

def guess(obj):
    """
    Infers the type of the given input.

    Function is overloaded to accept multiple types in input
    and peform the needed type inference based on it.

    Args:
        obj: path to file, bytes or bytearray.

    Returns:
        The matched type instance. Otherwise None.

    Raises:
        TypeError: if obj is not a supported type.
    """
    return match(obj) if obj else None

def guess_extension(

obj)

Infers the file type of the given input and returns its RFC file extension.

Args: obj: path to file, bytes or bytearray.

Returns: The matched file extension as string. Otherwise None.

Raises: TypeError: if obj is not a supported type.

def guess_extension(obj):
    """
    Infers the file type of the given input
    and returns its RFC file extension.

    Args:
        obj: path to file, bytes or bytearray.

    Returns:
        The matched file extension as string. Otherwise None.

    Raises:
        TypeError: if obj is not a supported type.
    """
    kind = guess(obj)
    return kind.extension if kind else kind

def guess_mime(

obj)

Infers the file type of the given input and returns its MIME type.

Args: obj: path to file, bytes or bytearray.

Returns: The matched MIME type as string. Otherwise None.

Raises: TypeError: if obj is not a supported type.

def guess_mime(obj):
    """
    Infers the file type of the given input
    and returns its MIME type.

    Args:
        obj: path to file, bytes or bytearray.

    Returns:
        The matched MIME type as string. Otherwise None.

    Raises:
        TypeError: if obj is not a supported type.
    """
    kind = guess(obj)
    return kind.mime if kind else kind