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 _convertmessagedescriptor(self, desc_proto, package=none, file_desc=none, scope=none): """adds the proto to the pool in the specified package. args: desc_proto: the descriptor_pb2.descriptorproto protobuf message. package: the package the proto should be located in. file_desc: the file containing this message. scope: dict mapping short and full symbols to message and enum types. returns: the added descriptor. """ if package: desc_name = '.'.join((package, desc_proto.name)) else: desc_name = desc_proto.name if file_desc is none: file_name = none else: file_name = file_desc.name if scope is none: scope = {} nested = [ self._convertmessagedescriptor(nested, desc_name, file_desc, scope) for nested in desc_proto.nested_type] enums = [ self._convertenumdescriptor(enum, desc_name, file_desc, none, scope) for enum in desc_proto.enum_type] fields = [self._makefielddescriptor(field, desc_name, index) for index, field in enumerate(desc_proto.field)] extensions = [self._makefielddescriptor(extension, desc_name, true) for index, extension in enumerate(desc_proto.extension)] extension_ranges = [(r.start, r.end) for r in desc_proto.extension_range] if extension_ranges: is_extendable = true else: is_extendable = false desc = descriptor.descriptor( name=desc_proto.name, full_name=desc_name, filename=file_name, containing_type=none, fields=fields, nested_types=nested, enum_types=enums, extensions=extensions, options=desc_proto.options, is_extendable=is_extendable, extension_ranges=extension_ranges, file=file_desc, serialized_start=none, serialized_end=none) for nested in desc.nested_types: nested.containing_type = desc for enum in desc.enum_types: enum.containing_type = desc scope[desc_proto.name] = desc scope['.' + desc_name] = desc self._descriptors[desc_name] = desc return desc