Skip to content

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

Open
@DPham-X

Description

@DPham-X

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

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions