danielgtaylor / danielgtaylor/python-betterproto

Missing data in proto maps

Abierto
#442 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
1.8k
Forks
234
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I have a theoretical proto file message defined as:
```
message Measurement {
double pressure = 1;
double temperature = 2;
}

message MeasurementMap {
map measurements = 1;
}

service WeatherStation {
rpc GetClimate (Empty) returns (MeasurementMap) {}
}
```

The problem is that if `MeasurementMap` contains a `Measurement` with all fields equal to 0, betterproto server replies with something like this:
```
{
"measurements": [
{
"key": "rpi1",
"value": {
"pressure": 1.01,
"temperature": 25.2,
}
},
{
"key": "rpi2"
}
]
}
```
Second key does not have any value next to it which makes _Postman_ throw a tantrum about "null value not having **pressure** field"

For comparison, here is the default behaviour of _grpclib_, which _Postman_ receives and parses A-OK:
```
{
"measurement": [
{
"key": "rpi1",
"value": {
"pressure": 1.01,
"temperature": 25.2
}
},
{
"key": "rpi2",
"value": {}
}
]
}
```

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con la definición de proto del issue y reproduce una respuesta de WeatherStation que contenga una Measurement con valor cero en MeasurementMap. Compara la salida de betterproto para la entrada de mapa rpi2 con la salida de grpclib y, después, verifica que la respuesta incluya un objeto de valor vacío en lugar de omitirlo y que Postman lo analice correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
grpc, python
Área
api
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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.