def InterpolateValue(self,
                       value,
                       type_info_obj=type_info.String(),
                       default_section=None,
                       context=None):
    """Interpolate the value and parse it with the appropriate type."""
    # 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
def InterpolateValue ( self , value , type_info_obj = type_info . String ( ) , default_section = None , context = None ) : 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 : message = "{cause}: {detail}" . format ( cause = e , detail = value ) raise type ( e ) ( message ) value = type_info_obj . FromString ( value ) if isinstance ( value , list ) : value = [ self . InterpolateValue ( v , default_section = default_section , context = context ) for v in value ] return value
Interpolate the value and parse it with the appropriate type.