assert_frame_equal for set (#51899) · pandas-dev/pandas@b5aec87 (original) (raw)
4 files changed
lines changed
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -240,11 +240,10 @@ Styler | ||
240 | 240 | |
241 | 241 | Other |
242 | 242 | ^^^^^ |
243 | -- | |
243 | +- Bug in :func:`assert_almost_equal` now throwing assertion error for two unequal sets (:issue:`51727`) | |
244 | 244 | |
245 | 245 | .. ***DO NOT USE THIS SECTION*** |
246 | 246 | |
247 | -- | |
248 | 247 | - |
249 | 248 | |
250 | 249 | .. --------------------------------------------------------------------------- |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -95,6 +95,10 @@ cpdef assert_almost_equal(a, b, | ||
95 | 95 | if robj is None: |
96 | 96 | robj = b |
97 | 97 | |
98 | +if isinstance(a, set) or isinstance(b, set): | |
99 | +assert a == b, f"{a} != {b}" | |
100 | +return True | |
101 | + | |
98 | 102 | if isinstance(a, dict) or isinstance(b, dict): |
99 | 103 | return assert_dict_equal(a, b) |
100 | 104 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -202,6 +202,18 @@ def test_assert_almost_equal_edge_case_ndarrays(left_dtype, right_dtype): | ||
202 | 202 | ) |
203 | 203 | |
204 | 204 | |
205 | +def test_assert_almost_equal_sets(): | |
206 | +# GH#51727 | |
207 | +_assert_almost_equal_both({1, 2, 3}, {1, 2, 3}) | |
208 | + | |
209 | + | |
210 | +def test_assert_almost_not_equal_sets(): | |
211 | +# GH#51727 | |
212 | +msg = r"{1, 2, 3} != {1, 2, 4}" | |
213 | +with pytest.raises(AssertionError, match=msg): | |
214 | +_assert_almost_equal_both({1, 2, 3}, {1, 2, 4}) | |
215 | + | |
216 | + | |
205 | 217 | def test_assert_almost_equal_dicts(): |
206 | 218 | _assert_almost_equal_both({"a": 1, "b": 2}, {"a": 1, "b": 2}) |
207 | 219 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -362,3 +362,20 @@ def test_assert_frame_equal_ts_column(): | ||
362 | 362 | msg = r'DataFrame.iloc\[:, 0\] \(column name="a"\) values are different' |
363 | 363 | with pytest.raises(AssertionError, match=msg): |
364 | 364 | tm.assert_frame_equal(df1, df2) |
365 | + | |
366 | + | |
367 | +def test_assert_frame_equal_set(): | |
368 | +# GH#51727 | |
369 | +df1 = DataFrame({"set_column": [{1, 2, 3}, {4, 5, 6}]}) | |
370 | +df2 = DataFrame({"set_column": [{1, 2, 3}, {4, 5, 6}]}) | |
371 | +tm.assert_frame_equal(df1, df2) | |
372 | + | |
373 | + | |
374 | +def test_assert_frame_equal_set_mismatch(): | |
375 | +# GH#51727 | |
376 | +df1 = DataFrame({"set_column": [{1, 2, 3}, {4, 5, 6}]}) | |
377 | +df2 = DataFrame({"set_column": [{1, 2, 3}, {4, 5, 7}]}) | |
378 | + | |
379 | +msg = r'DataFrame.iloc\[:, 0\] \(column name="set_column"\) values are different' | |
380 | +with pytest.raises(AssertionError, match=msg): | |
381 | +tm.assert_frame_equal(df1, df2) |