class_docstr: Descriptor for a protocol message type.
  
  Attributes:
      name (str): Name of this protocol message type.
      full_name (str): Fully-qualified name of this protocol message type,
          which will include protocol "package" name and the name of any
          enclosing types.
      containing_type (Descriptor): Reference to the descriptor of the type
          containing us, or None if this is top-level.
      fields (list[FieldDescriptor]): Field descriptors for all fields in
          this type.
      fields_by_number (dict(int, FieldDescriptor)): Same
          :class:`FieldDescriptor` objects as in :attr:`fields`, but indexed
          by "number" attribute in each FieldDescriptor.
      fields_by_name (dict(str, FieldDescriptor)): Same
          :class:`FieldDescriptor` objects as in :attr:`fields`, but indexed by
          "name" attribute in each :class:`FieldDescriptor`.
      nested_types (list[Descriptor]): Descriptor references
          for all protocol message types nested within this one.
      nested_types_by_name (dict(str, Descriptor)): Same Descriptor
          objects as in :attr:`nested_types`, but indexed by "name" attribute
          in each Descriptor.
      enum_types (list[EnumDescriptor]): :class:`EnumDescriptor` references
          for all enums contained within this type.
      enum_types_by_name (dict(str, EnumDescriptor)): Same
          :class:`EnumDescriptor` objects as in :attr:`enum_types`, but
          indexed by "name" attribute in each EnumDescriptor.
      enum_values_by_name (dict(str, EnumValueDescriptor)): Dict mapping
          from enum value name to :class:`EnumValueDescriptor` for that value.
      extensions (list[FieldDescriptor]): All extensions defined directly
          within this message type (NOT within a nested type).
      extensions_by_name (dict(str, FieldDescriptor)): Same FieldDescriptor
          objects as :attr:`extensions`, but indexed by "name" attribute of each
          FieldDescriptor.
      is_extendable (bool):  Does this type define any extension ranges?
      oneofs (list[OneofDescriptor]): The list of descriptors for oneof fields
          in this message.
      oneofs_by_name (dict(str, OneofDescriptor)): Same objects as in
          :attr:`oneofs`, but indexed by "name" attribute.
      file (FileDescriptor): Reference to file descriptor.
docstr: Returns the string name of an enum value.
  
  This is just a small helper method to simplify a common operation.
  
  Args:
    enum: string name of the Enum.
    value: int, value of the enum.
  
  Returns:
    string name of the enum value.
  
  Raises:
    KeyError if either the Enum doesn't exist or the value is not a valid
      value for the enum.
docstr_tok: ["Returns","the","string","name","of","an","enum","value",".","This","is","just","a","small","helper","method","to","simplify","a","common","operation",".","Args",":","enum",":","string","name","of","the","Enum",".","value",":","int",",","value","of","the","enum",".","Returns",":","string","name","of","the","enum","value",".","Raises",":","KeyError","if","either","the","Enum","does","n't","exist","or","the","value","is","not","a","valid","value","for","the","enum","."]
code: def EnumValueName(self, enum, value):
      """Returns the string name of an enum value.
  
      This is just a small helper method to simplify a common operation.
  
      Args:
        enum: string name of the Enum.
        value: int, value of the enum.
  
      Returns:
        string name of the enum value.
  
      Raises:
        KeyError if either the Enum doesn't exist or the value is not a valid
          value for the enum.
      """
      return self.enum_types_by_name[enum].values_by_number[value].name
  
imports: import threading
  import warnings
  from google.protobuf.internal import api_implementation
label_desc: Use image node_id 3 for calling the Descriptor obj's underlying member method code with example usage: obj.EnumValueName(enum, value) and returns: self