pendulum icon indicating copy to clipboard operation
pendulum copied to clipboard

Duration not compatible with timedelta

Open jacobg opened this issue 5 years ago • 0 comments

A timedelta stores microseconds as an int, whereas pendulum.duration is storing as a float.

>>> datetime.timedelta(0, 5, 499385).microseconds
499385
>>> pendulum.duration(0, 5, 499385).microseconds
499385.0

This subtle difference can cause errors if the pendulum.duration is passed instead of a pure timedelta to a function that assumes microseconds is an int. For example, formatting an iso string like this:

ms = '.{:06d}'.format(td.microseconds) if td.microseconds else ""

will raise an error if td is pendulum.duration:

ValueError: Unknown format code 'd' for object of type 'float'

jacobg avatar Nov 04 '20 19:11 jacobg