danielgtaylor / danielgtaylor/python-betterproto

Generated code has non-existent relative import

Đang mở
#554 2 bình luận 7 reaction 0 người được giao Xem trên GitHub
bug investigation needed
Ngôn ngữ chính
Python
Star
1.8k
Fork
234
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

### Summary

from .google import protobuf which doesn't exist

### Reproduction Steps

I’m facing an issue with the imported packages, my protofile has some import like this:
```
syntax = "proto3";

package mypackage;
import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/field_mask.proto";
import "google/api/resource.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";
//import "validate/validate.proto";
import "protoc-gen-openapiv2/options/annotations.proto";
```
I’m running the code generation with buf:

```
version: v1
managed:
enabled: true
plugins:
# Python
- plugin: buf.build/community/danielgtaylor-betterproto:v1.2.5
out: _gen/pythonbproto2
```
and the command to run it is: `buf generate --template buf.gen.additional.yaml --include-imports`
The generated files are like this:

tree mypackage/api/proto/_gen/pythonbproto2
```
├── __init__.py
├── google
│ ├── __init__.py
│ └── api.py
├── grpc
│ ├── __init__.py
│ └── gateway
│ ├── __init__.py
│ └── protoc_gen_openapiv2
│ ├── __init__.py
│ └── options.py
└── mypackage
```
However the generated file mypackage.py is expecting a relative dir called google.protobuf which couldn’t be found, it has only the api.py not protobuf.
`from .google import protobuf`

### Expected Results

The imported packages are properly handled. In the normal protoc way of generation, google.protobuf is a package and is imported directly like this: `from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2`

### Actual Results

A relative import which doesn't exist: `from .google import protobuf`

### System Information

protoc --version
libprotoc 24.3

buf --version
1.21.0

```
version: v1
managed:
enabled: true
plugins:
# Python
- plugin: buf.build/community/danielgtaylor-betterproto:v1.2.5
out: _gen/pythonbproto2
```

I'm not able to use normal command line to generate this:

```
protoc -I . --python_betterproto_out=lib mypackage.proto
google/api/annotations.proto: File not found.
google/api/client.proto: File not found.
google/api/field_behavior.proto: File not found.
google/api/resource.proto: File not found.
protoc-gen-openapiv2/options/annotations.proto: File not found.
mypackage.proto:5:1: Import "google/api/annotations.proto" was not found or had errors.
mypackage.proto:6:1: Import "google/api/client.proto" was not found or had errors.
mypackage.proto:7:1: Import "google/api/field_behavior.proto" was not found or had errors.
mypackage.proto:9:1: Import "google/api/resource.proto" was not found or had errors.
mypackage.proto:13:1: Import "protoc-gen-openapiv2/options/annotations.proto" was not found or had errors.
```

### Checklist

- [X] I have searched the issues for duplicates.
- [X] I have shown the entire traceback, if possible.
- [] I have verified this issue occurs on the latest prelease of betterproto which can be installed using `pip install -U --pre betterproto`, if possible.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Reproduce the issue with the listed proto imports, buf template, and `buf generate --template buf.gen.additional.yaml --include-imports`. Inspect the generated `mypackage.py` and the output tree, then compare the failing `from .google import protobuf` with the expected imports; done means generated imports resolve for the listed Google packages.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
grpc, python
Lĩnh vực
devtools
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
30/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.