<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def __parse_options(config_file, section, options):
 """ Parse the section options :type config_file: ConfigParser object :param config_file: The config file object to use :type section: str :param section: Which section to read in the configuration file :type options: list of dicts :param options: A list of options to parse. Example list:: [{ 'key': 'aws_access_key_id', 'option': 'aws-access-key-id', 'required': False, 'type': str }] :returns: dict """

    configuration = {}
    for option in options:
        try:
            if option.get('type') == 'str':
                configuration[option.get('key')] = \
                    config_file.get(section, option.get('option'))
            elif option.get('type') == 'int':
                try:
                    configuration[option.get('key')] = \
                        config_file.getint(section, option.get('option'))
                except ValueError:
                    print('Error: Expected an integer value for {0}'.format(
                        option.get('option')))
                    sys.exit(1)
            elif option.get('type') == 'float':
                try:
                    configuration[option.get('key')] = \
                        config_file.getfloat(section, option.get('option'))
                except ValueError:
                    print('Error: Expected an float value for {0}'.format(
                        option.get('option')))
                    sys.exit(1)
            elif option.get('type') == 'bool':
                try:
                    configuration[option.get('key')] = \
                        config_file.getboolean(section, option.get('option'))
                except ValueError:
                    print('Error: Expected an boolean value for {0}'.format(
                        option.get('option')))
                    sys.exit(1)
            elif option.get('type') == 'dict':
                configuration[option.get('key')] = \
                    ast.literal_eval(
                        config_file.get(section, option.get('option')))
            else:
                configuration[option.get('key')] = \
                    config_file.get(section, option.get('option'))
        except ConfigParser.NoOptionError:
            if option.get('required'):
                print('Missing [{0}] option "{1}" in configuration'.format(
                    section, option.get('option')))
                sys.exit(1)

    return configuration