def setup(self):
   self.my_file = descriptor.filedescriptor(
       name='some/filename/some.proto',
       package='protobuf_unittest'
       )
   self.my_enum = descriptor.enumdescriptor(
       name='foreignenum',
       full_name='protobuf_unittest.foreignenum',
       filename=none,
       file=self.my_file,
       values=[
         descriptor.enumvaluedescriptor(name='foreign_foo', index=0, number=4),
         descriptor.enumvaluedescriptor(name='foreign_bar', index=1, number=5),
         descriptor.enumvaluedescriptor(name='foreign_baz', index=2, number=6),
       ])
   self.my_message = descriptor.descriptor(
       name='nestedmessage',
       full_name='protobuf_unittest.testalltypes.nestedmessage',
       filename=none,
       file=self.my_file,
       containing_type=none,
       fields=[
         descriptor.fielddescriptor(
           name='bb',
           full_name='protobuf_unittest.testalltypes.nestedmessage.bb',
           index=0, number=1,
           type=5, cpp_type=1, label=1,
           has_default_value=false, default_value=0,
           message_type=none, enum_type=none, containing_type=none,
           is_extension=false, extension_scope=none),
       ],
       nested_types=[],
       enum_types=[
         self.my_enum,
       ],
       extensions=[])
   self.my_method = descriptor.methoddescriptor(
       name='bar',
       full_name='protobuf_unittest.testservice.bar',
       index=0,
       containing_service=none,
       input_type=none,
       output_type=none)
   self.my_service = descriptor.servicedescriptor(
       name='testservicewithoptions',
       full_name='protobuf_unittest.testservicewithoptions',
       file=self.my_file,
       index=0,
       methods=[
           self.my_method
       ])
  def _convertenumdescriptor(self, enum_proto, package=none, file_desc=none,
                             containing_type=none, scope=none):
    """make a protobuf enumdescriptor given an enumdescriptorproto protobuf.

    args:
      enum_proto: the descriptor_pb2.enumdescriptorproto protobuf message.
      package: optional package name for the new message enumdescriptor.
      file_desc: the file containing the enum descriptor.
      containing_type: the type containing this enum.
      scope: scope containing available types.

    returns:
      the added descriptor
    """

    if package:
      enum_name = '.'.join((package, enum_proto.name))
    else:
      enum_name = enum_proto.name

    if file_desc is none:
      file_name = none
    else:
      file_name = file_desc.name

    values = [self._makeenumvaluedescriptor(value, index)
              for index, value in enumerate(enum_proto.value)]
    desc = descriptor.enumdescriptor(name=enum_proto.name,
                                     full_name=enum_name,
                                     filename=file_name,
                                     file=file_desc,
                                     values=values,
                                     containing_type=containing_type,
                                     options=enum_proto.options)
    scope[enum_proto.name] = desc
    scope['.%s' % enum_name] = desc
    self._enum_descriptors[enum_name] = desc
    return desc