Hello,

We would like to use Custom options for message fields in Python.

According to https://developers.google.com/protocol-buffers/docs/proto?hl=cs
 :
"As of this writing (version 2.0.3), custom options are not accessible in 
Python."

I would like to ask if there was any progress since then or can it be 
expected in near future ?

I have actually tried to use the custom options, and I could only get it 
working after hacking the generated Python file by moving the line with 
call to "RegisterExtension" right after  definition of the Extension field. 
So maybe we just need to tweak protoc a bit.

My test proto:
import "google/protobuf/descriptor.proto";

extend google.protobuf.FieldOptions {
  optional string comment = 50002;
}

message MyMessage {
  optional string foo = 1 [(comment) = "Not particularly useful field"];
}

Python console:
In [1]: import test_pb2

In [2]: 
test_pb2.MyMessage.DESCRIPTOR.fields[0].GetOptions().Extensions[test_pb2.comment]
Out[2]: u''

Hacked test_pb2.py:
...
COMMENT_FIELD_NUMBER = 50002
comment = descriptor.FieldDescriptor(
  name='comment', full_name='comment', index=0,
  number=50002, type=9, cpp_type=9, label=1,
  has_default_value=False, default_value=unicode("", "utf-8"),
  message_type=None, enum_type=None, containing_type=None,
  is_extension=True, extension_scope=None,
  options=None)

# MOVED FROM THE END OF FILE
google.protobuf.descriptor_pb2.FieldOptions.RegisterExtension(comment)
...

Python console:

In [1]: import test_pb2

In [2]: 
test_pb2.MyMessage.DESCRIPTOR.fields[0].GetOptions().Extensions[test_pb2.comment]
Out[2]: u'Not particularly useful field'

Best regards,
Jan Koriťák

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/protobuf/-/b4pQsNMoEzYJ.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to