danielgtaylor / danielgtaylor/python-betterproto

Imports from adjacent .proto files does not work

オープン
#441 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
1.8k
フォーク
234
PR マージ指標
30日以内にマージされた PR はありません

説明

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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

示されている grpc_tools.protoc コマンドを使用して、protos/common.proto と protos/devices/rpi.proto で問題を再現します。生成された package_name/grpc 出力を調べ、RPI サービスの DeviceId 参照とインポートを確認します。生成された Python モジュールが正常にインポートでき、これらの参照が未定義の _common__ 名なしで解決されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
grpc, python
領域
compilers
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。