danielgtaylor / danielgtaylor/python-betterproto
Disappears from the generated `ServiceBase` if there is a `ID` in the name [2.0.0b3]
- Vorherrschende Sprache
- Python
- Sterne
- 1.8k
- Forks
- 234
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
## Env
Python: 3.9
protoc: 3.15.6
betterproto: 2.0.0b3
OS: linux
---
### Given proto
```proto
syntax = "proto3";
package com.test.v1;
import "google/protobuf/empty.proto";
service TestService {
rpc Test(PublisherUserID) returns (google.protobuf.Empty);
}
message PublisherUserID {
int64 publisher_user_id = 1;
}
```
### Generated `TestServiceBase`
Parameter `PublisherUserID` of `test()` disappered.
```py3
class TestServiceBase(ServiceBase):
async def test(self) -> "betterproto_lib_google_protobuf.Empty":
raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
async def __rpc_test(self, stream: grpclib.server.Stream) -> None:
request = await stream.recv_message()
request_kwargs = {}
response = await self.test(**request_kwargs)
await stream.send_message(response)
def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
return {
"/com.test.v1.TestService/Test": grpclib.const.Handler(
self.__rpc_test,
grpclib.const.Cardinality.UNARY_UNARY,
PublisherUserId,
betterproto_lib_google_protobuf.Empty,
),
}
```
---
### Midified proto
Rename `ID` to `Id`
```proto
syntax = "proto3";
package com.test.v1;
import "google/protobuf/empty.proto";
service TestService {
rpc Test(PublisherUserId) returns (google.protobuf.Empty);
}
message PublisherUserId {
int64 publisher_user_id = 1;
}
```
### Generated `TestServiceBase`
```py3
class TestServiceBase(ServiceBase):
async def test(
self, publisher_user_id: int
) -> "betterproto_lib_google_protobuf.Empty":
raise grpclib.GRPCError(grpclib.const.Status.UNIMPLEMENTED)
async def __rpc_test(self, stream: grpclib.server.Stream) -> None:
request = await stream.recv_message()
request_kwargs = {
"publisher_user_id": request.publisher_user_id,
}
response = await self.test(**request_kwargs)
await stream.send_message(response)
def __mapping__(self) -> Dict[str, grpclib.const.Handler]:
return {
"/com.test.v1.TestService/Test": grpclib.const.Handler(
self.__rpc_test,
grpclib.const.Cardinality.UNARY_UNARY,
PublisherUserId,
betterproto_lib_google_protobuf.Empty,
),
}
```
Beitragsleitfaden
Rechercherichtung
Verwende die bereitgestellten proto-Definitionen und vergleiche die generierte Ausgabe von TestServiceBase für PublisherUserID mit der für PublisherUserId. Beginne am Generator-Einstiegspunkt, der die Servicemethode und request_kwargs erzeugt, und füge anschließend einen Regressionstest hinzu, der die Schreibweise der ID abdeckt. Erledigt ist die Aufgabe, wenn die generierte Methode publisher_user_id beibehält und es über request_kwargs weitergibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100