Merge pull request #7498 from psobot/add-python-descriptor-debug-string

Add GetDebugString to Python FileDescriptor interface.
pull/9113/head
deannagarcia 4 years ago committed by GitHub
commit df5b7fabb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 29
      python/google/protobuf/internal/descriptor_test.py
  2. 5
      python/google/protobuf/pyext/descriptor.cc

@ -51,6 +51,28 @@ TEST_EMPTY_MESSAGE_DESCRIPTOR_ASCII = """
name: 'TestEmptyMessage'
"""
TEST_FILE_DESCRIPTOR_DEBUG = """syntax = "proto2";
package protobuf_unittest;
message NestedMessage {
enum ForeignEnum {
FOREIGN_FOO = 4;
FOREIGN_BAR = 5;
FOREIGN_BAZ = 6;
}
optional int32 bb = 1;
}
message ResponseMessage {
}
service Service {
rpc CallMethod(.protobuf_unittest.NestedMessage) returns (.protobuf_unittest.ResponseMessage);
}
"""
warnings.simplefilter('error', DeprecationWarning)
@ -121,6 +143,13 @@ class DescriptorTest(unittest.TestCase):
def testContainingServiceFixups(self):
self.assertEqual(self.my_service, self.my_method.containing_service)
@unittest.skipIf(
api_implementation.Type() != 'cpp',
'GetDebugString is only available with the cpp implementation',
)
def testGetDebugString(self):
self.assertEqual(self.my_file.GetDebugString(), TEST_FILE_DESCRIPTOR_DEBUG)
def testGetOptions(self):
self.assertEqual(self.my_enum.GetOptions(),
descriptor_pb2.EnumOptions())

@ -1393,6 +1393,10 @@ static int SetHasOptions(PyFileDescriptor *self, PyObject *value,
return CheckCalledFromGeneratedFile("has_options");
}
static PyObject* GetDebugString(PyFileDescriptor *self) {
return PyString_FromCppString(_GetDescriptor(self)->DebugString());
}
static PyObject* GetOptions(PyFileDescriptor *self) {
return GetOrBuildOptions(_GetDescriptor(self));
}
@ -1439,6 +1443,7 @@ static PyGetSetDef Getters[] = {
};
static PyMethodDef Methods[] = {
{ "GetDebugString", (PyCFunction)GetDebugString, METH_NOARGS, },
{ "GetOptions", (PyCFunction)GetOptions, METH_NOARGS, },
{ "CopyToProto", (PyCFunction)CopyToProto, METH_O, },
{NULL}

Loading…
Cancel
Save