danielgtaylor / danielgtaylor/python-betterproto

Missing data in proto maps

Ouverte
#442 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.