I'm using textual protobuf files for system configuration.
One problem I have with this is that the serialized protobuf format does not support comments.
Is there any way around this?
I'm talking about the textual serialized data format, not the scheme definition.
Was this problem solved somewhere by someone?
Adding Comments To add comments to your .proto files, use C/C++-style // and /* ... */ syntax.
A protobuf message format is defined in the .proto file. Protobuf is recommended over other data formats when you need language interoperability, faster serialization and deserialization, type safety, schema adherence between data producer and consumer applications, and reduced coding effort.
Protocol buffers are a combination of the definition language (created in . proto files), the code that the proto compiler generates to interface with data, language-specific runtime libraries, and the serialization format for data that is written to a file (or sent across a network connection).
Protobuf specification now supports dictionaries (maps) natively.
Textual Protobuf format (serialized protobuf messages in text formal) supports comments using the #
syntax. I could not find a reference for the same in any online documentation but have used the same in projects in the past so I put together a small example that one can test with:
Sample message description - [SampleProtoSchema.proto]
message SampleProtoSchema {
optional int32 first_val = 1; // Note: This supports C/C++ style comments
optional int32 second_val = 2;
}
Sample text message - [SampleTextualProto.prototxt]
# This is how textual protobuf format supports comments
first_val: 12 # can also be inline comments
# This is another comment
second_val: 23
Note though that these comments cannot be generated automatically at time of serialization. They can only be added manually afterwards.
Compile and test:
> protoc --python_out=. SampleProtoSchema.proto
>
> ipython
[1]: import SampleProtoSchema_pb2
[2]: sps = SampleProtoSchema_pb2.SampleProtoSchema()
[3]: from google.protobuf import text_format
[4]: with open('SampleTextualProto.prototxt', 'r') as f:
text_format.Merge(f.read(), sps)
[5]: sps.first_val
[5]> 12
[6]: sps.second_val
[6]> 23
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With