human
Complete the below
@debtcollector.removals.remove(message='use    testtools.skipUnless    instead', removal_version='Queens')
def skip_unless_config(*args):

    ''''Decorator to raise a skip if a config opt doesn\'t exist or is False
    :param str group: The first arg, the option group to check
    :param str name: The second arg, the option name to check
    :param str msg: Optional third arg, the skip msg to use if a skip is raised
    :raises testtools.TestCaseskipException: If the specified config option
    doesn\'t exist or it exists and evaluates to False'
    '''
 Can you provide a the Python program you requested?
assistant
#Here is the Python program you requested.
    def decorator(f):
        group = args[0]
        name = args[1]
        @functools.wraps(f)
        def wrapper(self, *func_args, **func_kwargs):
            if (not hasattr(CONF, group)):
                msg = ("Config    group    %s    doesn't    exist" % group)
                raise testtools.TestCase.skipException(msg)
            conf_group = getattr(CONF, group)
            if (not hasattr(conf_group, name)):
                msg = ("Config    option    %s.%s    doesn't    exist" % (group, name))
                raise testtools.TestCase.skipException(msg)
            value = getattr(conf_group, name)
            if (not value):
                if (len(args) == 3):
                    msg = args[2]
                else:
                    msg = ('Config    option    %s.%s    is    false' % (group, name))
                raise testtools.TestCase.skipException(msg)
            return f(self, *func_args, **func_kwargs)
        return wrapper
    return decorator