python-betterproto icon indicating copy to clipboard operation
python-betterproto copied to clipboard

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

Open DPham-X opened this issue 1 year ago • 0 comments

Summary

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

Reproduction Steps

>>> 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.

DPham-X avatar Nov 27 '24 06:11 DPham-X