'Force the execution of the function with the given arguments and
persist the output values.'

def call(self, *args, **kwargs):

    start_time = time.time()
    (output_dir, _) = self._get_output_dir(*args, **kwargs)
    if (self._verbose > 0):
        print format_call(self.func, args, kwargs)
    output = self.func(*args, **kwargs)
    self._persist_output(output, output_dir)
    duration = (time.time() - start_time)
    metadata = self._persist_input(output_dir, duration, args, kwargs)
    if (self._verbose > 0):
        (_, name) = get_func_name(self.func)
        msg = ('%s    -    %s' % (name, format_time(duration)))
        print ((max(0, (80 - len(msg))) * '_') + msg)
    return (output, metadata)
