danielgtaylor / danielgtaylor/python-betterproto
Generated code has non-existent relative import
- 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
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