protobuf-to-dict is a small Python library for creating dicts from protocol buffers. It is intended to be used as an intermediate step before serialization (e.g. to JSON).
Installation
Use pip install protobuf-to-dict or python setup.py install.
Example
Given the google.protobuf.message.Message subclass MyMessage:
>>> from protobuf_to_dict import protobuf_to_dict
>>> my_message = MyMessage()
>>> # pb_my_message is a protobuf string
>>> my_message.ParseFromString(pb_my_message)
>>> protobuf_to_dict(my_message)
{'message': 'Hello'}
Caveats
This library grew out of the desire to serialize a protobuf-encoded message to JSON. As JSON has no built-in binary type (all strings in JSON are Unicode strings), any field whose type is FieldDescriptor.TYPE_BYTES is, by default, converted to a base64-encoded string.
If you want to override this behaviour, you may do so by passing protobuf_to_dict a dictionary of protobuf types to callables via the type_callable_map kwarg:
>>> from copy import copy
>>> from google.protobuf.descriptor import FieldDescriptor
>>> from protobuf_to_dict import protobuf_to_dict, TYPE_CALLABLE_MAP
>>>
>>> type_callable_map = copy(TYPE_CALLABLE_MAP)
>>> # convert TYPE_BYTES to a Python bytestring
>>> type_callable_map[FieldDescriptor.TYPE_BYTES] = str
>>>
>>> # my_message is a google.protobuf.message.Message instance
>>> protobuf_to_dict(my_message, type_callable_map=type_callable_map)
Product's homepage
Requirements:
· Python