| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- # Arithmetic tests specific to DatetimeIndex are generally about `freq`
- # rentention or inference. Other arithmetic tests belong in
- # tests/arithmetic/test_datetime64.py
- import pytest
- from pandas import (
- Timedelta,
- TimedeltaIndex,
- Timestamp,
- date_range,
- timedelta_range,
- )
- import pandas._testing as tm
- class TestDatetimeIndexArithmetic:
- def test_add_timedelta_preserves_freq(self):
- # GH#37295 should hold for any DTI with freq=None or Tick freq
- tz = "Canada/Eastern"
- dti = date_range(
- start=Timestamp("2019-03-26 00:00:00-0400", tz=tz),
- end=Timestamp("2020-10-17 00:00:00-0400", tz=tz),
- freq="D",
- )
- result = dti + Timedelta(days=1)
- assert result.freq == dti.freq
- def test_sub_datetime_preserves_freq(self, tz_naive_fixture):
- # GH#48818
- dti = date_range("2016-01-01", periods=12, tz=tz_naive_fixture)
- res = dti - dti[0]
- expected = timedelta_range("0 Days", "11 Days")
- tm.assert_index_equal(res, expected)
- assert res.freq == expected.freq
- @pytest.mark.xfail(
- reason="The inherited freq is incorrect bc dti.freq is incorrect "
- "https://github.com/pandas-dev/pandas/pull/48818/files#r982793461"
- )
- def test_sub_datetime_preserves_freq_across_dst(self):
- # GH#48818
- ts = Timestamp("2016-03-11", tz="US/Pacific")
- dti = date_range(ts, periods=4)
- res = dti - dti[0]
- expected = TimedeltaIndex(
- [
- Timedelta(days=0),
- Timedelta(days=1),
- Timedelta(days=2),
- Timedelta(days=2, hours=23),
- ]
- )
- tm.assert_index_equal(res, expected)
- assert res.freq == expected.freq
|