Skip to content

Commit

Permalink
Merge pull request #8327 from alkasm/alkasm/method-desc-copy-to-proto
Browse files Browse the repository at this point in the history
[python-runtime] Add MethodDescriptor.CopyToProto()
  • Loading branch information
fowles committed Apr 7, 2021
2 parents 9d17549 + 3c782fc commit c214856
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
18 changes: 18 additions & 0 deletions python/google/protobuf/descriptor.py
Expand Up @@ -912,6 +912,24 @@ def __init__(self, name, full_name, index, containing_service,
self.containing_service = containing_service
self.input_type = input_type
self.output_type = output_type

def CopyToProto(self, proto):
"""Copies this to a descriptor_pb2.MethodDescriptorProto.
Args:
proto (descriptor_pb2.MethodDescriptorProto): An empty descriptor proto.
Raises:
Error: If self couldn't be serialized, due to too few constructor
arguments.
"""
if self.containing_service is not None:
from google.protobuf import descriptor_pb2
service_proto = descriptor_pb2.ServiceDescriptorProto()
self.containing_service.CopyToProto(service_proto)
proto.CopyFrom(service_proto.method[self.index])
else:
raise Error('Descriptor does not contain a service.')


class FileDescriptor(DescriptorBase):
Expand Down
4 changes: 0 additions & 4 deletions python/google/protobuf/internal/descriptor_test.py
Expand Up @@ -907,10 +907,6 @@ def testCopyToProto_ServiceDescriptor(self):
descriptor_pb2.ServiceDescriptorProto,
TEST_SERVICE_ASCII)

@unittest.skipIf(
api_implementation.Type() == 'python',
'It is not implemented in python.')
# TODO(jieluo): Add support for pure python or remove in c extension.
def testCopyToProto_MethodDescriptor(self):
expected_ascii = """
name: 'Foo'
Expand Down

0 comments on commit c214856

Please sign in to comment.