Skip to content

Commit d69eaae

Browse files
BUG: assert_frame_equal still checks category dtypes even when asked not to check index type (#52216)
* Added check_categorical argument in assert_index_equal recursive call * Added test cases * Added whatsnew entry and mentioned issue number for test
1 parent 4d1c994 commit d69eaae

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

doc/source/whatsnew/v2.1.0.rst

+1
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ Other
274274
^^^^^
275275
- Bug in :func:`assert_almost_equal` now throwing assertion error for two unequal sets (:issue:`51727`)
276276
- Bug in :meth:`Series.memory_usage` when ``deep=True`` throw an error with Series of objects and the returned value is incorrect, as it does not take into account GC corrections (:issue:`51858`)
277+
- Bug in :func:`assert_frame_equal` checks category dtypes even when asked not to check index type (:issue:`52126`)
277278

278279
.. ***DO NOT USE THIS SECTION***
279280

pandas/_testing/asserters.py

+1
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,7 @@ def _get_ilevel_values(index, level):
300300
exact=exact,
301301
check_names=check_names,
302302
check_exact=check_exact,
303+
check_categorical=check_categorical,
303304
rtol=rtol,
304305
atol=atol,
305306
obj=lobj,

pandas/tests/util/test_assert_index_equal.py

+14
Original file line numberDiff line numberDiff line change
@@ -299,3 +299,17 @@ def test_assert_ea_index_equal_non_matching_na(check_names, check_categorical):
299299
tm.assert_index_equal(
300300
idx1, idx2, check_names=check_names, check_categorical=check_categorical
301301
)
302+
303+
304+
@pytest.mark.parametrize("check_categorical", [True, False])
305+
def test_assert_multi_index_dtype_check_categorical(check_categorical):
306+
# GH#52126
307+
idx1 = MultiIndex.from_arrays([Categorical(np.array([1, 2], dtype=np.uint64))])
308+
idx2 = MultiIndex.from_arrays([Categorical(np.array([1, 2], dtype=np.int64))])
309+
if check_categorical:
310+
with pytest.raises(
311+
AssertionError, match=r"^MultiIndex level \[0\] are different"
312+
):
313+
tm.assert_index_equal(idx1, idx2, check_categorical=check_categorical)
314+
else:
315+
tm.assert_index_equal(idx1, idx2, check_categorical=check_categorical)

0 commit comments

Comments
 (0)