import inspect


def signature(obj):
    """
    Safely return function Signature object (PEP 362).

    inspect.signature was introduced in 3.3, however backports are available.
    In Python 3.3, it does not support all types of callables, and should
    not be relied upon. Python 3.4 works correctly.

    Any exception calling inspect.signature is ignored and None is returned.

    @param obj: Function to inspect
    @type obj: callable
    @rtype: inpect.Signature or None
    """
    try:
        return inspect.signature(obj)
    except (AttributeError, ValueError):
        return None