This will decide what wrapped is and set .wrapped_func or .wrapped_class
        accordingly

        :param wrapped: either a function or class

def set_wrapped(self, wrapped):
        """This will decide what wrapped is and set .wrapped_func or .wrapped_class
        accordingly

        :param wrapped: either a function or class
        """
        self.wrapped = wrapped
        functools.update_wrapper(self, self.wrapped, updated=())
        self.wrapped_func = False
        self.wrapped_class = False

        if inspect.isroutine(wrapped):
            self.wrapped_func = True

        elif isinstance(wrapped, type):
            self.wrapped_class = True