danielgtaylor / danielgtaylor/python-betterproto
Unexpected behaviour with explicitly setting seconds = 0 with timedelta and using to_dict
- Lenguaje dominante
- Python
- Estrellas
- 1.8k
- Forks
- 234
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### 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.
Guía de contribución
Línea de trabajo
Comienza localizando el manejo de timedelta utilizado por Message.to_dict y reproduce los dos ejemplos del issue en Python 3.11. Comprueba que una timedelta de cero segundos proporcionada explícitamente se conserve en el diccionario, con una salida que coincida con el caso esperado {'timeout': '0s'}.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- api
- Tipo de issue
- Error
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 45/100