Skip to content

Commit 0229225

Browse files
authored
TST/CLN: make equalContents more strict (pandas-dev#56154)
1 parent a869a73 commit 0229225

18 files changed

+113
-79
lines changed

pandas/_testing/__init__.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -302,13 +302,6 @@ def reset_display_options() -> None:
302302
# Comparators
303303

304304

305-
def equalContents(arr1, arr2) -> bool:
306-
"""
307-
Checks if the set of unique elements of arr1 and arr2 are equivalent.
308-
"""
309-
return frozenset(arr1) == frozenset(arr2)
310-
311-
312305
def box_expected(expected, box_cls, transpose: bool = True):
313306
"""
314307
Helper function to wrap the expected output of a test in a given box_class.
@@ -1131,7 +1124,6 @@ def shares_memory(left, right) -> bool:
11311124
"EMPTY_STRING_PATTERN",
11321125
"ENDIAN",
11331126
"ensure_clean",
1134-
"equalContents",
11351127
"external_error_raised",
11361128
"FLOAT_EA_DTYPES",
11371129
"FLOAT_NUMPY_DTYPES",

pandas/tests/frame/indexing/test_indexing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def test_getitem(self, float_frame):
4848
# Column access
4949
for _, series in sl.items():
5050
assert len(series.index) == 20
51-
assert tm.equalContents(series.index, sl.index)
51+
tm.assert_index_equal(series.index, sl.index)
5252

5353
for key, _ in float_frame._series.items():
5454
assert float_frame[key] is not None

pandas/tests/frame/methods/test_combine_first.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_combine_first(self, float_frame):
3737
combined = head.combine_first(tail)
3838
reordered_frame = float_frame.reindex(combined.index)
3939
tm.assert_frame_equal(combined, reordered_frame)
40-
assert tm.equalContents(combined.columns, float_frame.columns)
40+
tm.assert_index_equal(combined.columns, float_frame.columns)
4141
tm.assert_series_equal(combined["A"], reordered_frame["A"])
4242

4343
# same index

pandas/tests/frame/methods/test_reindex.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ def test_reindex(self, float_frame, using_copy_on_write):
624624
assert np.isnan(val)
625625

626626
for col, series in newFrame.items():
627-
assert tm.equalContents(series.index, newFrame.index)
627+
tm.assert_index_equal(series.index, newFrame.index)
628628
emptyFrame = float_frame.reindex(Index([]))
629629
assert len(emptyFrame.index) == 0
630630

@@ -642,7 +642,7 @@ def test_reindex(self, float_frame, using_copy_on_write):
642642
assert np.isnan(val)
643643

644644
for col, series in nonContigFrame.items():
645-
assert tm.equalContents(series.index, nonContigFrame.index)
645+
tm.assert_index_equal(series.index, nonContigFrame.index)
646646

647647
# corner cases
648648

pandas/tests/frame/test_iteration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def test_items_names(self, float_string_frame):
4040
assert v.name == k
4141

4242
def test_iter(self, float_frame):
43-
assert tm.equalContents(list(float_frame), float_frame.columns)
43+
assert list(float_frame) == list(float_frame.columns)
4444

4545
def test_iterrows(self, float_frame, float_string_frame):
4646
for k, v in float_frame.iterrows():

pandas/tests/indexes/base_class/test_setops.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@
1212
from pandas.core.algorithms import safe_sort
1313

1414

15+
def equal_contents(arr1, arr2) -> bool:
16+
"""
17+
Checks if the set of unique elements of arr1 and arr2 are equivalent.
18+
"""
19+
return frozenset(arr1) == frozenset(arr2)
20+
21+
1522
class TestIndexSetOps:
1623
@pytest.mark.parametrize(
1724
"method", ["union", "intersection", "difference", "symmetric_difference"]
@@ -71,7 +78,7 @@ def test_union_different_type_base(self, klass):
7178

7279
result = first.union(klass(second.values))
7380

74-
assert tm.equalContents(result, index)
81+
assert equal_contents(result, index)
7582

7683
def test_union_sort_other_incomparable(self):
7784
# https://github.com/pandas-dev/pandas/issues/24959
@@ -119,7 +126,7 @@ def test_intersection_different_type_base(self, klass, sort):
119126
second = index[:3]
120127

121128
result = first.intersection(klass(second.values), sort=sort)
122-
assert tm.equalContents(result, second)
129+
assert equal_contents(result, second)
123130

124131
def test_intersection_nosort(self):
125132
result = Index(["c", "b", "a"]).intersection(["b", "a"])
@@ -244,7 +251,7 @@ def test_union_name_preservation(
244251
tm.assert_index_equal(union, expected)
245252
else:
246253
expected = Index(vals, name=expected_name)
247-
tm.equalContents(union, expected)
254+
tm.assert_index_equal(union.sort_values(), expected.sort_values())
248255

249256
@pytest.mark.parametrize(
250257
"diff_type, expected",

pandas/tests/indexes/datetimes/test_setops.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,13 @@ def test_intersection2(self):
206206
first = tm.makeDateIndex(10)
207207
second = first[5:]
208208
intersect = first.intersection(second)
209-
assert tm.equalContents(intersect, second)
209+
tm.assert_index_equal(intersect, second)
210210

211211
# GH 10149
212212
cases = [klass(second.values) for klass in [np.array, Series, list]]
213213
for case in cases:
214214
result = first.intersection(case)
215-
assert tm.equalContents(result, second)
215+
tm.assert_index_equal(result, second)
216216

217217
third = Index(["a", "b", "c"])
218218
result = first.intersection(third)

pandas/tests/indexes/interval/test_setops.py

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,16 @@ def test_union(self, closed, sort):
2525

2626
expected = monotonic_index(0, 13, closed=closed)
2727
result = index[::-1].union(other, sort=sort)
28-
if sort is None:
28+
if sort in (None, True):
2929
tm.assert_index_equal(result, expected)
30-
assert tm.equalContents(result, expected)
30+
else:
31+
tm.assert_index_equal(result.sort_values(), expected)
3132

3233
result = other[::-1].union(index, sort=sort)
33-
if sort is None:
34+
if sort in (None, True):
3435
tm.assert_index_equal(result, expected)
35-
assert tm.equalContents(result, expected)
36+
else:
37+
tm.assert_index_equal(result.sort_values(), expected)
3638

3739
tm.assert_index_equal(index.union(index, sort=sort), index)
3840
tm.assert_index_equal(index.union(index[:1], sort=sort), index)
@@ -65,14 +67,16 @@ def test_intersection(self, closed, sort):
6567

6668
expected = monotonic_index(5, 11, closed=closed)
6769
result = index[::-1].intersection(other, sort=sort)
68-
if sort is None:
70+
if sort in (None, True):
6971
tm.assert_index_equal(result, expected)
70-
assert tm.equalContents(result, expected)
72+
else:
73+
tm.assert_index_equal(result.sort_values(), expected)
7174

7275
result = other[::-1].intersection(index, sort=sort)
73-
if sort is None:
76+
if sort in (None, True):
7477
tm.assert_index_equal(result, expected)
75-
assert tm.equalContents(result, expected)
78+
else:
79+
tm.assert_index_equal(result.sort_values(), expected)
7680

7781
tm.assert_index_equal(index.intersection(index, sort=sort), index)
7882

@@ -148,16 +152,18 @@ def test_symmetric_difference(self, closed, sort):
148152
index = monotonic_index(0, 11, closed=closed)
149153
result = index[1:].symmetric_difference(index[:-1], sort=sort)
150154
expected = IntervalIndex([index[0], index[-1]])
151-
if sort is None:
155+
if sort in (None, True):
152156
tm.assert_index_equal(result, expected)
153-
assert tm.equalContents(result, expected)
157+
else:
158+
tm.assert_index_equal(result.sort_values(), expected)
154159

155160
# GH 19101: empty result, same dtype
156161
result = index.symmetric_difference(index, sort=sort)
157162
expected = empty_index(dtype="int64", closed=closed)
158-
if sort is None:
163+
if sort in (None, True):
159164
tm.assert_index_equal(result, expected)
160-
assert tm.equalContents(result, expected)
165+
else:
166+
tm.assert_index_equal(result.sort_values(), expected)
161167

162168
# GH 19101: empty result, different dtypes
163169
other = IntervalIndex.from_arrays(

pandas/tests/indexes/multi/test_setops.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,10 @@ def test_union(idx, sort):
243243

244244
the_union = piece1.union(piece2, sort=sort)
245245

246-
if sort is None:
247-
tm.assert_index_equal(the_union, idx.sort_values())
248-
249-
assert tm.equalContents(the_union, idx)
246+
if sort in (None, False):
247+
tm.assert_index_equal(the_union.sort_values(), idx.sort_values())
248+
else:
249+
tm.assert_index_equal(the_union, idx)
250250

251251
# corner case, pass self or empty thing:
252252
the_union = idx.union(idx, sort=sort)
@@ -258,7 +258,7 @@ def test_union(idx, sort):
258258
tuples = idx.values
259259
result = idx[:4].union(tuples[4:], sort=sort)
260260
if sort is None:
261-
tm.equalContents(result, idx)
261+
tm.assert_index_equal(result.sort_values(), idx.sort_values())
262262
else:
263263
assert result.equals(idx)
264264

@@ -284,9 +284,10 @@ def test_intersection(idx, sort):
284284

285285
the_int = piece1.intersection(piece2, sort=sort)
286286

287-
if sort is None:
287+
if sort in (None, True):
288288
tm.assert_index_equal(the_int, idx[3:5])
289-
assert tm.equalContents(the_int, idx[3:5])
289+
else:
290+
tm.assert_index_equal(the_int.sort_values(), idx[3:5])
290291

291292
# corner case, pass self
292293
the_int = idx.intersection(idx, sort=sort)

pandas/tests/indexes/numeric/test_setops.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,10 @@ def test_symmetric_difference(self, sort):
133133
index2 = Index([2, 3, 4, 1])
134134
result = index1.symmetric_difference(index2, sort=sort)
135135
expected = Index([5, 1])
136-
assert tm.equalContents(result, expected)
136+
if sort is not None:
137+
tm.assert_index_equal(result, expected)
138+
else:
139+
tm.assert_index_equal(result, expected.sort_values())
137140
assert result.name is None
138141
if sort is None:
139142
expected = expected.sort_values()

pandas/tests/indexes/period/test_setops.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,10 @@ def test_union_misc(self, sort):
142142

143143
# not in order
144144
result = _permute(index[:-5]).union(_permute(index[10:]), sort=sort)
145-
if sort is None:
145+
if sort is False:
146+
tm.assert_index_equal(result.sort_values(), index)
147+
else:
146148
tm.assert_index_equal(result, index)
147-
assert tm.equalContents(result, index)
148149

149150
# cast if different frequencies
150151
index = period_range("1/1/2000", "1/20/2000", freq="D")
@@ -163,9 +164,10 @@ def test_intersection(self, sort):
163164
left = _permute(index[:-5])
164165
right = _permute(index[10:])
165166
result = left.intersection(right, sort=sort)
166-
if sort is None:
167+
if sort is False:
168+
tm.assert_index_equal(result.sort_values(), index[10:-5])
169+
else:
167170
tm.assert_index_equal(result, index[10:-5])
168-
assert tm.equalContents(result, index[10:-5])
169171

170172
# cast if different frequencies
171173
index = period_range("1/1/2000", "1/20/2000", freq="D")

pandas/tests/indexes/test_base.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -492,10 +492,10 @@ def test_union_dt_as_obj(self, simple_index):
492492
first_cat = index.union(date_index)
493493
second_cat = index.union(index)
494494

495-
appended = np.append(index, date_index.astype("O"))
495+
appended = Index(np.append(index, date_index.astype("O")))
496496

497-
assert tm.equalContents(first_cat, appended)
498-
assert tm.equalContents(second_cat, index)
497+
tm.assert_index_equal(first_cat, appended)
498+
tm.assert_index_equal(second_cat, index)
499499
tm.assert_contains_all(index, first_cat)
500500
tm.assert_contains_all(index, second_cat)
501501
tm.assert_contains_all(date_index, first_cat)

0 commit comments

Comments
 (0)