danielgtaylor / danielgtaylor/python-betterproto

Unexpected behaviour with explicitly setting seconds = 0 with timedelta and using to_dict

Ouverte
#649 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
bug investigation needed
Langage dominant
Python
Étoiles
1.8k
Forks
234
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

### Summary

When using timedelta with explicitly setting the seconds to 0 the output is empty instead of being explicitly set

### Reproduction Steps

```python3
>>> from datetime import timedelta
>>> from dataclasses import dataclass
>>> import betterproto
>>>
>>> @dataclass(eq=False, repr=False)
... class TestTimeout(betterproto.Message):
... timeout: timedelta = betterproto.message_field(1)
...
>>> TestTimeout(timeout=timedelta(seconds=0)).to_dict()
{}
>>> from datetime import timedelta
>>> from dataclasses import dataclass
>>> import betterproto
>>>
>>> @dataclass(eq=False, repr=False)
... class TestTimeout(betterproto.Message):
... timeout: timedelta = betterproto.message_field(1)
...
>>> TestTimeout(timeout=timedelta(seconds=1)).to_dict()
{'timeout': '1.000s'}
```

### Expected Results

Output expected to be `{'timeout': '0s'}`

### Actual Results

Output is an empty dict {}

### System Information

betterproto==2.0.0b6

python 3.11

### Checklist

- [X] I have searched the issues for duplicates.
- [X] I have shown the entire traceback, if possible.
- [X] I have verified this issue occurs on the latest prelease of betterproto which can be installed using `pip install -U --pre betterproto`, if possible.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par localiser la gestion de timedelta utilisée par Message.to_dict et reproduisez les deux exemples de l’issue avec Python 3.11. Vérifiez qu’une timedelta de zéro seconde fournie explicitement est conservée dans le dictionnaire, avec une sortie correspondant au cas attendu {'timeout': '0s'}.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

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