code: def interpret(self, config_dict):
          
          value = config_dict.get(self.name)
          if value is None:
              if self.default is None:
                  raise RuntimeError('Missing configuration item: ' + self.name)
              else:
                  warnings.warn("Using default {!r} for '{!s}'".format(self.default, self.name),
                                DeprecationWarning)
                  if (str != self.value_type) and isinstance(self.default, self.value_type):
                      return self.default
                  else:
                      value = self.default
  
          try:
              if str == self.value_type:
                  return str(value)
              if int == self.value_type:
                  return int(value)
              if bool == self.value_type:
                  if value.lower() == "true":
                      return True
                  elif value.lower() == "false":
                      return False
                  else:
                      raise RuntimeError(self.name + " must be True or False")
              if float == self.value_type:
                  return float(value)
              if list == self.value_type:
                  return value.split(" ")
          except Exception:
              raise RuntimeError("Error interpreting config item '{}' with value {!r} and type {}".format(
                  self.name, value, self.value_type))
  
          raise RuntimeError("Unexpected configuration type: " + repr(self.value_type))
docs: Converts the config_parser output into the proper type,
          supplies defaults if available and needed, and checks for some errors.