grpclib icon indicating copy to clipboard operation
grpclib copied to clipboard

Feature: "M" module mapping option

Open pcj opened this issue 1 year ago • 1 comments

The plugin maps proto filenames to python module names in a predicable manner according to _type_names and other functions. This results in import statements like:

from google.protobuf.descriptor_pb2 import FileDescriptorProto, DescriptorProto

In our case as an artifact of the build system (bazel), the well-known types (and some other types) have alternate desired module name mappings. The desired import would be something like:

from protobufapis.google.protobuf.descriptor_pb2 import FileDescriptorProto, DescriptorProto

I would suggest a "mapping" option that allows the end-user to do such a mapping. Other protoc plugins have the same requirement. For protoc-gen-go, for example, has the M option.

For example:

--grpclib_opt=M=google/protobuf/duration.proto=protobufapis.google.protobuf.duration

Would parse the option, do a lookup in the type map, and produce the output:

from protobufapis.google.protobuf.descriptor_pb2 import FileDescriptorProto, DescriptorProto

Happy to create a PR to implement it, and thanks for the great plugin!

pcj avatar Jul 20 '22 05:07 pcj

It would be great to have this option. Looking forward to review and merge your PR.

vmagamedov avatar Jul 21 '22 12:07 vmagamedov