code: def _read_configuration_file(self, path):
          
          parser = RawConfigParser(inline_comment_prefixes=('#', ';'))
          options = None
          should_inherit = True
  
          if parser.read(path) and self._get_section_name(parser):
              all_options = self._parser.option_list[:]
              for group in self._parser.option_groups:
                  all_options.extend(group.option_list)
  
              option_list = {o.dest: o.type or o.action
                                  for o in all_options}
  
              # First, read the default values
              new_options, _ = self._parse_args([])
  
              # Second, parse the configuration
              section_name = self._get_section_name(parser)
              for opt in parser.options(section_name):
                  if opt == 'inherit':
                      should_inherit = parser.getboolean(section_name, opt)
                      continue
  
                  if opt.replace('_', '-') not in self.CONFIG_FILE_OPTIONS:
                      log.warning("Unknown option '{}' ignored".format(opt))
                      continue
  
                  normalized_opt = opt.replace('-', '_')
                  opt_type = option_list[normalized_opt]
                  if opt_type in ('int', 'count'):
                      value = parser.getint(section_name, opt)
                  elif opt_type == 'string':
                      value = parser.get(section_name, opt)
                  else:
                      assert opt_type in ('store_true', 'store_false')
                      value = parser.getboolean(section_name, opt)
                  setattr(new_options, normalized_opt, value)
  
              # Third, fix the set-options
              options = self._fix_set_options(new_options)
  
          if options is not None:
              if not self._validate_options(options):
                  raise IllegalConfiguration('in file: {}'.format(path))
  
          return options, should_inherit
docs: Try to read and parse `path` as a configuration file.
  
          If the configurations were illegal (checked with
          `self._validate_options`), raises `IllegalConfiguration`.
  
          Returns (options, should_inherit).