danielgtaylor / danielgtaylor/python-betterproto

Allow mapping google.protobuf.duration to Optional datetime.timedelta

Offen
#246 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
1.8k
Forks
234
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

We had some issues loosing a zero-duration. Currently, if a serialized Protobuf message contains a 0-duration like `myDuration` in this example:
```protobuf
syntax = "proto3";

message Some {
string someField = 1;
google.protobuf.duration myDuration = 2;
}
```
and data like
```json
{
"someField": "42",
"myDuration": "0s"
}
```
this `myDuration` field gets correctly deserialized into a `timedelta(0)`. However, when forwarding/serializing that Python object again, the duration gets lost:
```json
{
"someField": "42",
// myDuration missing
}
```
Because `timedelta(0)` is the default value, it appearently represents no-value in betterProto (see [Well known Google Types](https://github.com/danielgtaylor/python-betterproto#well-known-google-types)).

Is it possible to configure the mapping from Protobuf's `duration` to an Optional timedelta value so that no-value can be distinguished from a 0-value in Python?

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.