danielgtaylor / danielgtaylor/python-betterproto
Unexpected behaviour with explicitly setting seconds = 0 with timedelta and using to_dict
- 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