def _attr_is_callable(obj, attr_name: str) ->bool:
    """
    Checks if the attribute named is callable.

    This means that non-function objects can be used.

    :param obj: any object
    :param attr_name: the name of the attribute to check.
    :return: true if the named attribute is callable
    """
    return hasattr(obj, attr_name) and hasattr(getattr(obj, attr_name),
        '__call__')
