(callable_obj: UserListener)
return func
Get raw function information about a callable.
    :param callable_obj: any object that can be called
    :return: function corresponding to callable, and offset is 0 or 1 to
        indicate whether the function's first argument is 'self' (1) or not (0)
    :raise ValueError: if callable_obj is not of a recognized type (function, method or object with __call__ method).
Get raw function information about a callable.
    :param callable_obj: any object that can be called
    :return: function corresponding to callable, and offset is 0 or 1 to
        indicate whether the function's first argument is 'self' (1) or not (0)
    :raise ValueError: if callable_obj is not of a recognized type (function, method or object with __call__ method).
Get raw function information about a callable . : param callable_obj : any object that can be called : return : function corresponding to callable and offset is 0 or 1 to indicate whether the function s first argument is self ( 1 ) or not ( 0 ) : raise ValueError : if callable_obj is not of a recognized type ( function method or object with __call__ method ) .
def getRawFunction(callable_obj: UserListener) -> Tuple[Callable]:
    """
    Get raw function information about a callable.
    :param callable_obj: any object that can be called
    :return: function corresponding to callable, and offset is 0 or 1 to
        indicate whether the function's first argument is 'self' (1) or not (0)
    :raise ValueError: if callable_obj is not of a recognized type (function, method or object with __call__ method).
    """
    firstArg = 0
    if isfunction(callable_obj):
        # print 'Function', getID(callable_obj)
        func = callable_obj
    elif ismethod(callable_obj):
        # print 'Method', getID(callable_obj)
        func = callable_obj
    elif hasattr(callable_obj, '__call__'):
        # print 'Functor', getID(callable_obj)
        func = callable_obj.__call__
    else:
        msg = 'type "%s" not supported' % type(callable_obj).__name__
        raise ValueError(msg)

    return func
def getRawFunction ( callable_obj : UserListener ) -> Tuple [ Callable ] : firstArg = 0 if isfunction ( callable_obj ) : # print 'Function', getID(callable_obj) func = callable_obj elif ismethod ( callable_obj ) : # print 'Method', getID(callable_obj) func = callable_obj elif hasattr ( callable_obj , '__call__' ) : # print 'Functor', getID(callable_obj) func = callable_obj . __call__ else : msg = 'type "%s" not supported' % type ( callable_obj ) . __name__ raise ValueError ( msg ) return func