danielgtaylor / danielgtaylor/python-betterproto

Capitalized (Title case) package name causes invalid gRPC code generation

Offen
#272 0 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
compiler-bug
Vorherrschende Sprache
Python
Sterne
1.8k
Forks
234
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Working with gRPC on `v2.0.0b3`, if the `.proto` package name starts with a capital letter, e.g.
``` proto
package Echo;
```
Then the generated file becomes significantly different and invalid. Most obviously there is `from .. import MessageName as _MessageName__` for the message types and it can't be imported.

For example, take the `echo.proto` example from the README.md and generate as suggested with `python -m grpc_tools.protoc -I . --python_betterproto_out=. echo.proto`, it seems fine, but edit it to `package Echo;` and in `Echo/__init__.py` you get, among other changes not limited to `s/echo/Echo`, at the end:

``` py
from .. import EchoEchoRequest as _EchoEchoRequest__
from .. import EchoEchoResponse as _EchoEchoResponse__
from .. import EchoEchoStreamResponse as _EchoEchoStreamResponse__
```

These don't exist, and the package can't be imported.

Found in `v2.0.0b3`. Thanks!

----
For completeness, here's the problematic `.proto`
``` proto
syntax = "proto3";

package Echo;

message EchoRequest {
string value = 1;
// Number of extra times to echo
uint32 extra_times = 2;
}

message EchoResponse {
repeated string values = 1;
}

message EchoStreamResponse {
string value = 1;
}

service Echo {
rpc Echo(EchoRequest) returns (EchoResponse);
rpc EchoStream(EchoRequest) returns (stream EchoStreamResponse);
}
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit dem README.md echo.proto-Beispiel und reproduziere das Problem mit dem dokumentierten Befehl python -m grpc_tools.protoc, nachdem du das Paket in Echo geändert hast. Untersuche die generierte Echo/__init__.py, insbesondere die im Bericht gezeigten Imports. Als erledigt gilt, wenn die Ausgabe mit dem großgeschriebenen Paket importiert werden kann und die generierten Nachrichtenreferenzen korrekt aufgelöst werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
grpc, python
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
52/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.