danielgtaylor / danielgtaylor/python-betterproto
Disappears from the generated `ServiceBase` if there is a `ID` in the name [2.0.0b3]
- Lenguaje dominante
- Python
- Estrellas
- 1.8k
- Forks
- 234
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
## 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,
),
}
```
Guía de contribución
Línea de trabajo
Usa las definiciones de proto proporcionadas y compara la salida generada de TestServiceBase para PublisherUserID con la de PublisherUserId. Empieza en el punto de entrada del generador que produce el método del servicio y request_kwargs, y después añade un caso de regresión que cubra la escritura del ID. Se considera completado cuando el método generado conserva publisher_user_id y lo pasa a través de request_kwargs.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100