Skip to content

Commit 37aeccd

Browse files
committed
Fix inconsistency with DateOffset near DST
1 parent d5f97ed commit 37aeccd

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

pandas/_libs/tslibs/offsets.pyx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,10 @@ _relativedelta_kwds = {"years", "months", "weeks", "days", "year", "month",
283283

284284
cdef _determine_offset(kwds):
285285
if not kwds:
286+
from dateutil.relativedelta import relativedelta
287+
286288
# GH 45643/45890: (historically) defaults to 1 day
287-
return timedelta(days=1), False
289+
return relativedelta(days=1), True
288290

289291
if "millisecond" in kwds:
290292
raise NotImplementedError(

pandas/tests/tseries/offsets/test_offsets.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1095,9 +1095,11 @@ def test_dateoffset_misc():
10951095

10961096
@pytest.mark.parametrize("n", [-1, 1, 3])
10971097
def test_construct_int_arg_no_kwargs_assumed_days(n):
1098+
from dateutil.relativedelta import relativedelta
1099+
10981100
# GH 45890, 45643
10991101
offset = DateOffset(n)
1100-
assert offset._offset == timedelta(1)
1102+
assert offset._offset == relativedelta(days=1)
11011103
result = Timestamp(2022, 1, 2) + offset
11021104
expected = Timestamp(2022, 1, 2 + n)
11031105
assert result == expected
@@ -1227,3 +1229,11 @@ def test_is_yqm_start_end():
12271229
def test_multiply_dateoffset_typeerror(left, right):
12281230
with pytest.raises(TypeError, match="Cannot multiply"):
12291231
left * right
1232+
1233+
1234+
def test_dateoffset_days_vs_n_near_dst_transition():
1235+
ts = Timestamp("2022-10-30", tz="Europe/Brussels")
1236+
1237+
offset_days = ts + offsets.DateOffset(days=1)
1238+
offset_n = ts + offsets.DateOffset(1)
1239+
assert offset_days == offset_n

0 commit comments

Comments
 (0)