danielgtaylor / danielgtaylor/python-betterproto
Missing data in proto maps
- Langage dominant
- Python
- Étoiles
- 1.8k
- Forks
- 234
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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": {}
}
]
}
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par la définition proto dans l’issue et reproduisez une réponse de WeatherStation contenant une Measurement de valeur nulle dans MeasurementMap. Comparez la sortie de betterproto pour l’entrée de map rpi2 avec la sortie de grpclib, puis vérifiez que la réponse inclut un objet de valeur vide au lieu de l’omettre et que Postman l’analyse correctement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- grpc, python
- Domaine
- api
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100