docs: def Validate(self, value, **_):
      """Check that value is a valid enum."""
      # None is a valid value - it means the field is not set.
      if value is None:
        return
  
      # If the value is a string we need to try to convert it to an integer.
      checked_value = value
      if isinstance(value, string_types):
        # NOTE: that when initializing from string, enum values are
        # case-insensitive.
        checked_value = self.enum.get(value.upper())
        if checked_value is None and value.isdigit():
          checked_value = int(value)
        if checked_value is None:
          raise type_info.TypeValueError(
              "Value %s is not a valid enum value for field %s" %
              (value, self.name))
  
      return EnumNamedValue(checked_value, name=self.reverse_enum.get(value))