def update_defaults(self, defaults):
<EOL>config = {}<EOL>for section in ('<STR_LIT>', self.name):<EOL><INDENT>config.update(<EOL>self.normalize_keys(self.get_config_section(section))<EOL>)<EOL><DEDENT>if not self.isolated:<EOL><INDENT>config.update(self.normalize_keys(self.get_environ_vars()))<EOL><DEDENT>for key, val in config.items():<EOL><INDENT>option = self.get_option(key)<EOL>if option is not None:<EOL><INDENT>if not val:<EOL><INDENT>continue<EOL><DEDENT>if option.action in ('<STR_LIT:store_true>', '<STR_LIT>', '<STR_LIT:count>'):<EOL><INDENT>val = strtobool(val)<EOL><DEDENT>if option.action == '<STR_LIT>':<EOL><INDENT>val = val.split()<EOL>val = [self.check_default(option, key, v) for v in val]<EOL><DEDENT>else:<EOL><INDENT>val = self.check_default(option, key, val)<EOL><DEDENT>defaults[option.dest] = val<EOL><DEDENT><DEDENT>return defaults<EOL>
Updates the given defaults with values from the config files and
        the environ. Does a little special handling for certain types of
        options (lists).