def decorate_func(self, func, *decorator_args, **decorator_kwargs):
        """override this in a child class with your own logic, it must return a
        function that calls self.func

        :param func: callback -- the function being decorated
        :param decorator_args: tuple -- the arguments passed into the decorator (eg, @dec(1, 2))
        :param decorator_kwargs: dict -- the named args passed into the decorator (eg, @dec(foo=1))
        :returns: the wrapped func with our decorator func
        """
        raise RuntimeError("decorator {} does not support function decoration".format(self.__class__.__name__))
        def wrapper(*args, **kwargs):
            return func(*args, **kwargs)
        return wrapper
def decorate_func ( self , func , * decorator_args , ** decorator_kwargs ) : raise RuntimeError ( "decorator {} does not support function decoration" . format ( self . __class__ . __name__ ) ) def wrapper ( * args , ** kwargs ) : return func ( * args , ** kwargs ) return wrapper
override this in a child class with your own logic, it must return a
        function that calls self.func

        :param func: callback -- the function being decorated
        :param decorator_args: tuple -- the arguments passed into the decorator (eg, @dec(1, 2))
        :param decorator_kwargs: dict -- the named args passed into the decorator (eg, @dec(foo=1))
        :returns: the wrapped func with our decorator func