Get expression resolver name.

    Expression resolver name is given by the attribute __resolver__.
    If not exist, then the it is given by the attribute __name__.
    Otherwise, given by the __class__.__name__ attribute.

    :raises: TypeError if exprresolver is not callable.

def getname(exprresolver):
    """Get expression resolver name.

    Expression resolver name is given by the attribute __resolver__.
    If not exist, then the it is given by the attribute __name__.
    Otherwise, given by the __class__.__name__ attribute.

    :raises: TypeError if exprresolver is not callable."""

    result = None

    if not callable(exprresolver):
        raise TypeError('Expression resolver must be a callable object.')

    result = getattr(
        exprresolver, __RESOLVER__, getattr(
            exprresolver, '__name__', getattr(
                exprresolver.__class__, '__name__'
            )
        )
    )

    return result