danielgtaylor / danielgtaylor/python-betterproto

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

Abierto
#649 0 comentarios 0 reacciones 0 asignados Ver en GitHub
bug investigation needed
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

Abrir la 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.