python-betterproto
python-betterproto copied to clipboard
ProtoContentBase.proto_file is always the first file of a package
I have a large protobuf package whose messages, etc. are defined over multiple files. However, ProtoContentBase.proto_file always refers to the first file of the package passed to protoc. As a result, when I run protoc the comments attached to each class and field are from the first file.
I hacked a solution to this by adding proto_input_file to ProtoContentBase and passing this as an argument all the way from generate_code through read_protobuf_type/read_protobuf_service, then adding:
- To
OutputTempate:
@property
def input_files_dict(self) -> Dict[str, FileDescriptorProto]:
"""Dictionary mapping filenames to their FileDescriptorProto objects
Returns
-------
Dict[str, FileDescriptorProto]
Dictionary mapping filenames to their FileDescriptorProto objects
"""
return {f.name: f for f in self.input_files}
- to
ProtoContentBase
@property
def proto_file(self) -> FieldDescriptorProto:
template = self.output_file
return template.input_files_dict[self.proto_input_file]
I'd be delighted to contribute a proper fix and open a PR for it, but it'd be good to hear if there's a better approach to solving the problem.