Incompatibility with dateutil.relativedelta
freeze_time does not work properly with dateutil.relativedelta
import datetime
from dateutil import relativedelta
from freezegun import freeze_time
def bug_example(dt):
today = datetime.date.today()
delta = relativedelta.relativedelta(dt, today)
return delta
dt = datetime.date(2018, 10, 10)
with freeze_time('2018-10-12'):
delta = bug_example(dt)
assert delta.days == 2
which raises a TypeError
Traceback (most recent call last): File "freezegun_bug.py", line 14, in <module> delta = bug_example(dt) File "freezegun_bug.py", line 8, in bug_example delta = relativedelta.relativedelta(dt, today) File "/Users/wael.benzid/virtualenvs/subscribify/lib/python2.7/site-packages/dateutil/relativedelta.py", line 145, in __init__ if dt1 < dt2: TypeError: can't compare FakeDatetime to FakeDate
Environment:
- OS: MacOS
- Python: 2.7.13
- freezegun: v0.3.11
- python-dateutil: v2.2
It looks like the issue is that the code is comparing a datetime to a date. Can you change today to datetime.datetime.today()?
I can confirm that relativedelta does work with freezegun, and you have to compare the correct datatypes :) Just tested it