Комментарии в текстурном протобуфе? - PullRequest
7 голосов
/ 06 сентября 2011

Я использую текстовые файлы protobuf для конфигурации системы.
Одна проблема, с которой я сталкиваюсь, заключается в том, что сериализованный формат protobuf не поддерживает комментарии.
Есть ли способ обойти это?
Яречь идет о текстовом сериализованном формате данных, а не об определении схемы.
Была ли эта проблема кем-то решена?

Ответы [ 2 ]

9 голосов
/ 20 января 2015

РЕДАКТИРОВАНИЕ ОТВЕТА НА ФОРМАТ ТЕКСТУАЛЬНОГО ПРОТОБУФА

Текстовый формат Protobuf поддерживает комментарии с использованием синтаксиса #. Я не смог найти ссылку на то же самое ни в одной онлайн-документации, но использовал ее в проектах в прошлом, поэтому я собрал небольшой пример, с которым можно протестировать:

Пример описания сообщения - [SampleProtoSchema.proto]

message SampleProtoSchema {
  optional int32 first_val = 1; // This supports C/C++ style comments
  optional int32 second_val = 2;
}

Пример текстового сообщения - [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

Компиляция и тестирование -

> 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

СТАРЫЙ ОТВЕТ

Формат сообщения Protobuf поддерживает комментарии в стиле C / C ++ с использованием синтаксиса //.

Проверьте раздел добавления комментариев здесь: https://developers.google.com/protocol-buffers/docs/proto

Это может быть более новое дополнение, так как, когда вопрос был задан, но это была одна из первых ссылок, которая появляется в поиске Google, и ответ не помогает.

0 голосов
/ 06 сентября 2011

Возможно, вы захотите взглянуть на проект Piqi . Эта проблема решается путем введения нового удобочитаемого формата данных «Piq» и инструмента командной строки для преобразования данных между форматами Protobuf, Piq, JSON и XML.

Формат данных Piq был специально разработан для взаимодействия с человеком. Он поддерживает комментарии, двоичные литералы и буквальные текстовые литералы.

...