danielgtaylor / danielgtaylor/python-betterproto
Imports from adjacent .proto files does not work
- 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ả
First of all, I looked at the issue #408 and I am absolutely sure that I have `betterproto[compiler]` of version `2.0.0b5` installed
I have this file structure:
```
protos
├── common.proto
└── devices
└── rpi.proto
```
With `protos/common.proto`:
```
syntax = 'proto3';
package org.company.name.common;
message DeviceId {
string device_id = 1;
}
```
and `protos/devices/rpi.proto`:
```
syntax = 'proto3';
package org.company.name.rpi;
import "common.proto";
import "google/protobuf/empty.proto";
service RPI {
rpc Start(common.DeviceId) returns (google.protobuf.Empty) {}
rpc Stop(common.DeviceId) returns (google.protobuf.Empty) {}
```
I then generate betterproto files:
```
poetry run python -m grpc_tools.protoc \
-I protos \
--python_betterproto_out=package_name/grpc \
protos/common.proto \
protos/devices/rpi.proto \
```
## The BUG
In `package_name.grpc.org.company.name.rpi` any mentions of `DeviceId` are presented as `_common__.DeviceId`, with `_common__` not being imported. Launching that code does not work either, python has no idea what `_common__` is.
Hướng dẫn đóng góp
Hướng nghiên cứu
Tái hiện vấn đề với protos/common.proto và protos/devices/rpi.proto bằng lệnh grpc_tools.protoc được hiển thị. Kiểm tra đầu ra package_name/grpc được tạo để tìm các tham chiếu DeviceId và các import của dịch vụ RPI. Hoàn tất khi mô-đun Python được tạo có thể import thành công và các tham chiếu đó được phân giải mà không có tên _common__ chưa được định nghĩa.
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
- compilers
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 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
- 35/100