def METHOD_NAME(self, reader):
    section = self.section or reader.section
    try:
        if self.type is bool:
            raw_value = reader._config.getboolean(section, self.key)
        else:
            raw_value = reader._config.get(section, self.key)
    except (NoOptionError, NoSectionError) as e:
        if not self.required:
            return self.default
        raise e
    if self.separator is not None:
        return map(self.type, raw_value.split(self.separator))
    elif self.type:
        return self.type(raw_value)
    else:
        return raw_value