def configure_data(self, data, key_string = '<STR_LIT>'):
<EOL>if len(list(data.keys())) == <NUM_LIT:0>:<EOL><INDENT>return<EOL><DEDENT>key_parts = key_string.rsplit('<STR_LIT:.>')<EOL>prefix = '<STR_LIT:U+0020>' * (len(key_parts) - <NUM_LIT:1>)<EOL>label = self.data.get_label(key_string)<EOL>if label:<EOL><INDENT>p = prefix<EOL>if len(p) > <NUM_LIT:0>:<EOL><INDENT>p += '<STR_LIT:U+0020>'<EOL><DEDENT>self.prompt.header(p + '<STR_LIT:[>' + label + '<STR_LIT:]>')<EOL><DEDENT>prefix = prefix + '<STR_LIT:U+0020>'<EOL>if '<STR_LIT>' in list(data.keys()):<EOL><INDENT>s = self.data.get_key_string(key_string, '<STR_LIT>')<EOL>data['<STR_LIT>'] = self.prompt.bool(prefix + self.data.get_label(s), None, data['<STR_LIT>'])<EOL>if data['<STR_LIT>'] is False:<EOL><INDENT>return<EOL><DEDENT><DEDENT>for k, v in data.items():<EOL><INDENT>if k == '<STR_LIT>':<EOL><INDENT>continue<EOL><DEDENT>t = type(v)<EOL>s = self.data.get_key_string(key_string, k)<EOL>if t is dict:<EOL><INDENT>self.configure_data(v, s)<EOL><DEDENT>else:<EOL><INDENT>label = prefix + self.data.get_label(s)<EOL>self.parse_value(data, label, s, None, v)<EOL><DEDENT><DEDENT>
Goes through all the options in `data`, and prompts new values.
            This function calls itself recursively if it finds an inner dictionary.

            Arguments:
            data -- The dictionary to loop through. 
            key_string -- The dot-notated key of the dictionary being checked through.