code: def InterpolateValue(self,
                         value,
                         type_info_obj=type_info.String(),
                         default_section=None,
                         context=None):
      
      # It is only possible to interpolate strings...
      if isinstance(value, Text):
        try:
          value = StringInterpolator(
              value,
              self,
              default_section=default_section,
              parameter=type_info_obj.name,
              context=context).Parse()
        except InterpolationError as e:
          # TODO(hanuszczak): This is a quick hack to not refactor too much while
          # working on Python 3 compatibility. But this is bad and exceptions
          # should not be used like this.
          message = "{cause}: {detail}".format(cause=e, detail=value)
          raise type(e)(message)
  
        # Parse the data from the string.
        value = type_info_obj.FromString(value)
  
      # ... and lists of strings.
      if isinstance(value, list):
        value = [
            self.InterpolateValue(
                v, default_section=default_section, context=context)
            for v in value
        ]
  
      return value
docs: Interpolate the value and parse it with the appropriate type.