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

Add GetDebugString to Python FileDescriptor interface.
This commit is contained in:
deannagarcia 2021-10-15 15:03:02 -07:00 committed by GitHub
commit df5b7fabb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 0 deletions

View File

@ -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())

View File

@ -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}