danielgtaylor / python-betterproto

Clean, modern, Python 3.6+ code generator & library for Protobuf 3 and async gRPC
MIT License
1.51k stars 214 forks source link

Missing betterproto_lib_google_protobuf import if only used as rpc call parameter. #409

Open dries007 opened 2 years ago

dries007 commented 2 years ago

I'm using 2.0.0b5.

The following file results in broken python:

syntax = "proto3";

package experiment;

import "google/protobuf/empty.proto";

message Reply {
    bool happy = 1;
}

service Testcase {
  rpc call(google.protobuf.Empty) returns (Reply);
}

Specifically, the import import betterproto.lib.google.protobuf as betterproto_lib_google_protobuf is missing from the output file.

When any google.protobuf imported field is used anywhere else, it does work correctly, for example, the following files all work:

syntax = "proto3";

package experiment;

import "google/protobuf/empty.proto";

message Reply {
    bool happy = 1;
}

service Testcase {
  rpc call(Reply) returns (google.protobuf.Empty);
}
syntax = "proto3";

package experiment;

import "google/protobuf/empty.proto";

message Reply {
    bool happy = 1;
    google.protobuf.Empty e = 2;
}

service Testcase {
  rpc call(google.protobuf.Empty) returns (Reply);
}
adriangaro commented 2 years ago

Might be related, seems to be a similar case of parameter/input not being added to imports https://github.com/danielgtaylor/python-betterproto/issues/426