Skip to content

Commit 35ce938

Browse files
jbrockmendelrhshadrach
authored andcommitted
TST: more accurate freq attr in expecteds (pandas-dev#33773)
1 parent 8c674dd commit 35ce938

14 files changed

+69
-35
lines changed

pandas/tests/arithmetic/test_datetime64.py

+4
Original file line numberDiff line numberDiff line change
@@ -2052,6 +2052,7 @@ def test_dti_add_tdi(self, tz_naive_fixture):
20522052
dti = DatetimeIndex([Timestamp("2017-01-01", tz=tz)] * 10)
20532053
tdi = pd.timedelta_range("0 days", periods=10)
20542054
expected = pd.date_range("2017-01-01", periods=10, tz=tz)
2055+
expected._set_freq(None)
20552056

20562057
# add with TimdeltaIndex
20572058
result = dti + tdi
@@ -2073,6 +2074,7 @@ def test_dti_iadd_tdi(self, tz_naive_fixture):
20732074
dti = DatetimeIndex([Timestamp("2017-01-01", tz=tz)] * 10)
20742075
tdi = pd.timedelta_range("0 days", periods=10)
20752076
expected = pd.date_range("2017-01-01", periods=10, tz=tz)
2077+
expected._set_freq(None)
20762078

20772079
# iadd with TimdeltaIndex
20782080
result = DatetimeIndex([Timestamp("2017-01-01", tz=tz)] * 10)
@@ -2098,6 +2100,7 @@ def test_dti_sub_tdi(self, tz_naive_fixture):
20982100
dti = DatetimeIndex([Timestamp("2017-01-01", tz=tz)] * 10)
20992101
tdi = pd.timedelta_range("0 days", periods=10)
21002102
expected = pd.date_range("2017-01-01", periods=10, tz=tz, freq="-1D")
2103+
expected = expected._with_freq(None)
21012104

21022105
# sub with TimedeltaIndex
21032106
result = dti - tdi
@@ -2121,6 +2124,7 @@ def test_dti_isub_tdi(self, tz_naive_fixture):
21212124
dti = DatetimeIndex([Timestamp("2017-01-01", tz=tz)] * 10)
21222125
tdi = pd.timedelta_range("0 days", periods=10)
21232126
expected = pd.date_range("2017-01-01", periods=10, tz=tz, freq="-1D")
2127+
expected = expected._with_freq(None)
21242128

21252129
# isub with TimedeltaIndex
21262130
result = DatetimeIndex([Timestamp("2017-01-01", tz=tz)] * 10)

pandas/tests/arithmetic/test_numeric.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ def test_numeric_arr_mul_tdscalar(self, scalar_td, numeric_idx, box):
165165
# GH#19333
166166
index = numeric_idx
167167

168-
expected = pd.timedelta_range("0 days", "4 days")
168+
expected = pd.TimedeltaIndex([pd.Timedelta(days=n) for n in range(5)])
169169

170170
index = tm.box_expected(index, box)
171171
expected = tm.box_expected(expected, box)
@@ -974,7 +974,7 @@ def check(series, other):
974974
tm.assert_almost_equal(np.asarray(result), expected)
975975

976976
assert result.name == series.name
977-
tm.assert_index_equal(result.index, series.index)
977+
tm.assert_index_equal(result.index, series.index._with_freq(None))
978978

979979
tser = tm.makeTimeSeries().rename("ts")
980980
check(tser, tser * 2)

pandas/tests/arithmetic/test_timedelta64.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -403,9 +403,7 @@ def _check(result, expected):
403403
_check(result, expected)
404404

405405
result = dti_tz - td
406-
expected = DatetimeIndex(
407-
["20121231", "20130101", "20130102"], tz="US/Eastern", freq="D"
408-
)
406+
expected = DatetimeIndex(["20121231", "20130101", "20130102"], tz="US/Eastern")
409407
tm.assert_index_equal(result, expected)
410408

411409
def test_dti_tdi_numeric_ops(self):
@@ -515,7 +513,13 @@ def test_timedelta(self, freq):
515513
result2 = DatetimeIndex(s - np.timedelta64(100000000))
516514
result3 = rng - np.timedelta64(100000000)
517515
result4 = DatetimeIndex(s - pd.offsets.Hour(1))
516+
517+
assert result1.freq == rng.freq
518+
result1 = result1._with_freq(None)
518519
tm.assert_index_equal(result1, result4)
520+
521+
assert result3.freq == rng.freq
522+
result3 = result3._with_freq(None)
519523
tm.assert_index_equal(result2, result3)
520524

521525
def test_tda_add_sub_index(self):

pandas/tests/indexes/common.py

+2
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ def test_ensure_copied_data(self, indices):
266266
result = index_type(indices.values, copy=True, **init_kwargs)
267267
if is_datetime64tz_dtype(indices.dtype):
268268
result = result.tz_localize("UTC").tz_convert(indices.tz)
269+
if isinstance(indices, (DatetimeIndex, TimedeltaIndex)):
270+
indices._set_freq(None)
269271

270272
tm.assert_index_equal(indices, result)
271273

pandas/tests/indexes/datetimes/test_datetime.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ def test_factorize_tz(self, tz_naive_fixture):
368368
for obj in [idx, pd.Series(idx)]:
369369
arr, res = obj.factorize()
370370
tm.assert_numpy_array_equal(arr, exp_arr)
371-
tm.assert_index_equal(res, base)
371+
expected = base._with_freq(None)
372+
tm.assert_index_equal(res, expected)
372373

373374
def test_factorize_dst(self):
374375
# GH 13750

pandas/tests/indexes/datetimes/test_ops.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,14 @@ def test_value_counts_unique(self, tz_naive_fixture):
134134

135135
exp_idx = pd.date_range("2011-01-01 18:00", freq="-1H", periods=10, tz=tz)
136136
expected = Series(range(10, 0, -1), index=exp_idx, dtype="int64")
137+
expected.index._set_freq(None)
137138

138139
for obj in [idx, Series(idx)]:
140+
139141
tm.assert_series_equal(obj.value_counts(), expected)
140142

141143
expected = pd.date_range("2011-01-01 09:00", freq="H", periods=10, tz=tz)
144+
expected = expected._with_freq(None)
142145
tm.assert_index_equal(idx.unique(), expected)
143146

144147
idx = DatetimeIndex(
@@ -274,7 +277,8 @@ def test_drop_duplicates_metadata(self, freq_sample):
274277
idx_dup = idx.append(idx)
275278
assert idx_dup.freq is None # freq is reset
276279
result = idx_dup.drop_duplicates()
277-
tm.assert_index_equal(idx, result)
280+
expected = idx._with_freq(None)
281+
tm.assert_index_equal(result, expected)
278282
assert result.freq is None
279283

280284
@pytest.mark.parametrize(

pandas/tests/indexes/datetimes/test_setops.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -285,16 +285,17 @@ def test_intersection_empty(self, tz_aware_fixture, freq):
285285
assert result.freq == rng.freq
286286

287287
# no overlap GH#33604
288+
check_freq = freq != "T" # We don't preserve freq on non-anchored offsets
288289
result = rng[:3].intersection(rng[-3:])
289290
tm.assert_index_equal(result, rng[:0])
290-
if freq != "T":
291+
if check_freq:
291292
# We don't preserve freq on non-anchored offsets
292293
assert result.freq == rng.freq
293294

294295
# swapped left and right
295296
result = rng[-3:].intersection(rng[:3])
296297
tm.assert_index_equal(result, rng[:0])
297-
if freq != "T":
298+
if check_freq:
298299
# We don't preserve freq on non-anchored offsets
299300
assert result.freq == rng.freq
300301

pandas/tests/indexes/datetimes/test_timezones.py

+21-15
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ def test_tz_convert_roundtrip(self, tz_aware_fixture):
271271
tm.assert_index_equal(reset, expected)
272272
assert reset.tzinfo is None
273273
expected = converted.tz_convert("UTC").tz_localize(None)
274+
expected = expected._with_freq("infer")
274275
tm.assert_index_equal(reset, expected)
275276

276277
def test_dti_tz_convert_tzlocal(self):
@@ -352,8 +353,9 @@ def test_dti_tz_localize_ambiguous_infer(self, tz):
352353
]
353354
di = DatetimeIndex(times)
354355
localized = di.tz_localize(tz, ambiguous="infer")
355-
tm.assert_index_equal(dr, localized)
356-
tm.assert_index_equal(dr, DatetimeIndex(times, tz=tz, ambiguous="infer"))
356+
expected = dr._with_freq(None)
357+
tm.assert_index_equal(expected, localized)
358+
tm.assert_index_equal(expected, DatetimeIndex(times, tz=tz, ambiguous="infer"))
357359

358360
# When there is no dst transition, nothing special happens
359361
dr = date_range(datetime(2011, 6, 1, 0), periods=10, freq=pd.offsets.Hour())
@@ -458,15 +460,16 @@ def test_dti_tz_localize_roundtrip(self, tz_aware_fixture):
458460
localized.tz_localize(tz)
459461
reset = localized.tz_localize(None)
460462
assert reset.tzinfo is None
461-
tm.assert_index_equal(reset, idx)
463+
expected = idx._with_freq(None)
464+
tm.assert_index_equal(reset, expected)
462465

463466
def test_dti_tz_localize_naive(self):
464467
rng = date_range("1/1/2011", periods=100, freq="H")
465468

466469
conv = rng.tz_localize("US/Pacific")
467470
exp = date_range("1/1/2011", periods=100, freq="H", tz="US/Pacific")
468471

469-
tm.assert_index_equal(conv, exp)
472+
tm.assert_index_equal(conv, exp._with_freq(None))
470473

471474
def test_dti_tz_localize_tzlocal(self):
472475
# GH#13583
@@ -526,8 +529,9 @@ def test_dti_tz_localize_ambiguous_flags(self, tz):
526529
di = DatetimeIndex(times)
527530
is_dst = [1, 1, 0, 0, 0]
528531
localized = di.tz_localize(tz, ambiguous=is_dst)
529-
tm.assert_index_equal(dr, localized)
530-
tm.assert_index_equal(dr, DatetimeIndex(times, tz=tz, ambiguous=is_dst))
532+
expected = dr._with_freq(None)
533+
tm.assert_index_equal(expected, localized)
534+
tm.assert_index_equal(expected, DatetimeIndex(times, tz=tz, ambiguous=is_dst))
531535

532536
localized = di.tz_localize(tz, ambiguous=np.array(is_dst))
533537
tm.assert_index_equal(dr, localized)
@@ -703,9 +707,9 @@ def test_dti_tz_localize_nonexistent_shift_invalid(self, offset, tz_type):
703707
def test_normalize_tz(self):
704708
rng = date_range("1/1/2000 9:30", periods=10, freq="D", tz="US/Eastern")
705709

706-
result = rng.normalize()
710+
result = rng.normalize() # does not preserve freq
707711
expected = date_range("1/1/2000", periods=10, freq="D", tz="US/Eastern")
708-
tm.assert_index_equal(result, expected)
712+
tm.assert_index_equal(result, expected._with_freq(None))
709713

710714
assert result.is_normalized
711715
assert not rng.is_normalized
@@ -720,9 +724,9 @@ def test_normalize_tz(self):
720724
assert not rng.is_normalized
721725

722726
rng = date_range("1/1/2000 9:30", periods=10, freq="D", tz=tzlocal())
723-
result = rng.normalize()
727+
result = rng.normalize() # does not preserve freq
724728
expected = date_range("1/1/2000", periods=10, freq="D", tz=tzlocal())
725-
tm.assert_index_equal(result, expected)
729+
tm.assert_index_equal(result, expected._with_freq(None))
726730

727731
assert result.is_normalized
728732
assert not rng.is_normalized
@@ -746,6 +750,7 @@ def test_normalize_tz_local(self, timezone):
746750

747751
result = rng.normalize()
748752
expected = date_range("1/1/2000", periods=10, freq="D", tz=tzlocal())
753+
expected = expected._with_freq(None)
749754
tm.assert_index_equal(result, expected)
750755

751756
assert result.is_normalized
@@ -777,10 +782,8 @@ def test_dti_constructor_with_fixed_tz(self):
777782
@pytest.mark.parametrize("tzstr", ["US/Eastern", "dateutil/US/Eastern"])
778783
def test_dti_convert_datetime_list(self, tzstr):
779784
dr = date_range("2012-06-02", periods=10, tz=tzstr, name="foo")
780-
dr2 = DatetimeIndex(list(dr), name="foo")
785+
dr2 = DatetimeIndex(list(dr), name="foo", freq="D")
781786
tm.assert_index_equal(dr, dr2)
782-
assert dr.tz == dr2.tz
783-
assert dr2.name == "foo"
784787

785788
def test_dti_construction_univalent(self):
786789
rng = date_range("03/12/2012 00:00", periods=10, freq="W-FRI", tz="US/Eastern")
@@ -803,6 +806,7 @@ def test_dti_tz_constructors(self, tzstr):
803806

804807
idx1 = to_datetime(arr).tz_localize(tzstr)
805808
idx2 = pd.date_range(start="2005-11-10 08:00:00", freq="H", periods=2, tz=tzstr)
809+
idx2 = idx2._with_freq(None) # the others all have freq=None
806810
idx3 = DatetimeIndex(arr, tz=tzstr)
807811
idx4 = DatetimeIndex(np.array(arr), tz=tzstr)
808812

@@ -913,7 +917,7 @@ def test_date_range_localize(self):
913917
rng3 = date_range("3/11/2012 03:00", periods=15, freq="H")
914918
rng3 = rng3.tz_localize("US/Eastern")
915919

916-
tm.assert_index_equal(rng, rng3)
920+
tm.assert_index_equal(rng._with_freq(None), rng3)
917921

918922
# DST transition time
919923
val = rng[0]
@@ -926,7 +930,9 @@ def test_date_range_localize(self):
926930

927931
# Right before the DST transition
928932
rng = date_range("3/11/2012 00:00", periods=2, freq="H", tz="US/Eastern")
929-
rng2 = DatetimeIndex(["3/11/2012 00:00", "3/11/2012 01:00"], tz="US/Eastern")
933+
rng2 = DatetimeIndex(
934+
["3/11/2012 00:00", "3/11/2012 01:00"], tz="US/Eastern", freq="H"
935+
)
930936
tm.assert_index_equal(rng, rng2)
931937
exp = Timestamp("3/11/2012 00:00", tz="US/Eastern")
932938
assert exp.hour == 0

pandas/tests/indexes/timedeltas/test_ops.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ def test_drop_duplicates_metadata(self, freq_sample):
144144
idx_dup = idx.append(idx)
145145
assert idx_dup.freq is None # freq is reset
146146
result = idx_dup.drop_duplicates()
147-
tm.assert_index_equal(idx, result)
147+
expected = idx._with_freq(None)
148+
tm.assert_index_equal(expected, result)
148149
assert result.freq is None
149150

150151
@pytest.mark.parametrize(

pandas/tests/indexing/test_datetime.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,11 @@ def test_indexing_with_datetimeindex_tz(self):
145145

146146
for sel in (index, list(index)):
147147
# getitem
148-
tm.assert_series_equal(ser[sel], ser)
148+
result = ser[sel]
149+
expected = ser
150+
if sel is not index:
151+
expected.index = expected.index._with_freq(None)
152+
tm.assert_series_equal(result, expected)
149153

150154
# setitem
151155
result = ser.copy()
@@ -154,7 +158,8 @@ def test_indexing_with_datetimeindex_tz(self):
154158
tm.assert_series_equal(result, expected)
155159

156160
# .loc getitem
157-
tm.assert_series_equal(ser.loc[sel], ser)
161+
result = ser.loc[sel]
162+
tm.assert_series_equal(result, ser)
158163

159164
# .loc setitem
160165
result = ser.copy()
@@ -226,6 +231,7 @@ def test_series_partial_set_datetime(self):
226231

227232
result = ser.loc[[Timestamp("2011-01-01"), Timestamp("2011-01-02")]]
228233
exp = Series([0.1, 0.2], index=idx, name="s")
234+
exp.index = exp.index._with_freq(None)
229235
tm.assert_series_equal(result, exp, check_index_type=True)
230236

231237
keys = [

pandas/tests/indexing/test_partial.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def test_partial_setting(self):
119119
)
120120

121121
expected = pd.concat(
122-
[df_orig, DataFrame({"A": 7}, index=[dates[-1] + dates.freq])], sort=True
122+
[df_orig, DataFrame({"A": 7}, index=dates[-1:] + dates.freq)], sort=True
123123
)
124124
df = df_orig.copy()
125125
df.loc[dates[-1] + dates.freq, "A"] = 7

pandas/tests/series/methods/test_sort_index.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,18 @@ def test_sort_index_inplace(self, datetime_series):
5555
result = random_order.sort_index(ascending=False, inplace=True)
5656

5757
assert result is None
58-
tm.assert_series_equal(
59-
random_order, datetime_series.reindex(datetime_series.index[::-1])
60-
)
58+
expected = datetime_series.reindex(datetime_series.index[::-1])
59+
expected.index = expected.index._with_freq(None)
60+
tm.assert_series_equal(random_order, expected)
6161

6262
# ascending
6363
random_order = datetime_series.reindex(rindex)
6464
result = random_order.sort_index(ascending=True, inplace=True)
6565

6666
assert result is None
67-
tm.assert_series_equal(random_order, datetime_series)
67+
expected = datetime_series.copy()
68+
expected.index = expected.index._with_freq(None)
69+
tm.assert_series_equal(random_order, expected)
6870

6971
def test_sort_index_level(self):
7072
mi = MultiIndex.from_tuples([[1, 1, 3], [1, 1, 1]], names=list("ABC"))

pandas/tests/series/methods/test_to_dict.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ class TestSeriesToDict:
1212
)
1313
def test_to_dict(self, mapping, datetime_series):
1414
# GH#16122
15-
tm.assert_series_equal(
16-
Series(datetime_series.to_dict(mapping), name="ts"), datetime_series
17-
)
15+
result = Series(datetime_series.to_dict(mapping), name="ts")
16+
expected = datetime_series.copy()
17+
expected.index = expected.index._with_freq(None)
18+
tm.assert_series_equal(result, expected)
19+
1820
from_method = Series(datetime_series.to_dict(collections.Counter))
1921
from_constructor = Series(collections.Counter(datetime_series.items()))
2022
tm.assert_series_equal(from_method, from_constructor)

pandas/tests/test_multilevel.py

+1
Original file line numberDiff line numberDiff line change
@@ -1505,6 +1505,7 @@ def test_set_index_datetime(self):
15051505
tz="US/Eastern",
15061506
)
15071507
idx3 = pd.date_range("2011-01-01 09:00", periods=6, tz="Asia/Tokyo")
1508+
idx3._set_freq(None)
15081509

15091510
df = df.set_index(idx1)
15101511
df = df.set_index(idx2, append=True)

0 commit comments

Comments
 (0)