<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_cli_options(config, arguments=None):
 """Set any configuration options which have a CLI value set. Args: config (confpy.core.config.Configuration):
 A configuration object which has been initialized with options. arguments (iter of str):
 An iterable of strings which contains the CLI arguments passed. If nothing is give then sys.argv is used. Returns: confpy.core.config.Configuration: A configuration object with CLI values set. The pattern to follow when setting CLI values is: <section>_<option> Each value should be lower case and separated by underscores. """

    arguments = arguments or sys.argv[1:]
    parser = argparse.ArgumentParser()
    for section_name, section in config:

        for option_name, _ in section:

            var_name = '{0}_{1}'.format(
                section_name.lower(),
                option_name.lower(),
            )
            parser.add_argument('--{0}'.format(var_name))

    args, _ = parser.parse_known_args(arguments)
    args = vars(args)
    for section_name, section in config:

        for option_name, _ in section:

            var_name = '{0}_{1}'.format(
                section_name.lower(),
                option_name.lower(),
            )
            value = args.get(var_name)
            if value:

                setattr(section, option_name, value)

    return config