<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_file(self, file_name, section=None):
 """Read settings from specified ``section`` of config file."""

        file_name, section = self.parse_file_name_and_section(file_name, section)
        if not os.path.isfile(file_name):
            raise SettingsFileNotFoundError(file_name)
        parser = self.make_parser()
        with open(file_name) as fp:
            parser.read_file(fp)

        settings = OrderedDict()

        if parser.has_section(section):
            section_dict = parser[section]
            self.section_found_while_reading = True
        else:
            section_dict = parser.defaults().copy()

        extends = section_dict.get('extends')

        if extends:
            extends = self.decode_value(extends)
            extends, extends_section = self.parse_file_name_and_section(
                extends, extender=file_name, extender_section=section)
            settings.update(self.read_file(extends, extends_section))

        settings.update(section_dict)

        if not self.section_found_while_reading:
            raise SettingsFileSectionNotFoundError(section)

        return settings