diff --git a/doc/source/whatsnew/v1.4.1.rst b/doc/source/whatsnew/v1.4.1.rst index 21aab5058d25b..d0a58a19df92f 100644 --- a/doc/source/whatsnew/v1.4.1.rst +++ b/doc/source/whatsnew/v1.4.1.rst @@ -15,6 +15,7 @@ including other versions of pandas. Fixed regressions ~~~~~~~~~~~~~~~~~ - Regression in :meth:`Series.mask` with ``inplace=True`` and ``PeriodDtype`` and an incompatible ``other`` coercing to a common dtype instead of raising (:issue:`45546`) +- Regression in :func:`.assert_frame_equal` not respecting ``check_flags=False`` (:issue:`45554`) - Regression in :meth:`Series.fillna` with ``downcast=False`` incorrectly downcasting ``object`` dtype (:issue:`45603`) - Regression in :meth:`DataFrame.loc.__setitem__` losing :class:`Index` name if :class:`DataFrame` was empty before (:issue:`45621`) - diff --git a/pandas/_testing/asserters.py b/pandas/_testing/asserters.py index ea75af20bb0b6..77e4065008804 100644 --- a/pandas/_testing/asserters.py +++ b/pandas/_testing/asserters.py @@ -1344,6 +1344,7 @@ def assert_frame_equal( rtol=rtol, atol=atol, check_index=False, + check_flags=False, ) diff --git a/pandas/tests/util/test_assert_frame_equal.py b/pandas/tests/util/test_assert_frame_equal.py index faea0a54dc330..6ff1a1c17b179 100644 --- a/pandas/tests/util/test_assert_frame_equal.py +++ b/pandas/tests/util/test_assert_frame_equal.py @@ -323,9 +323,22 @@ def test_frame_equal_mixed_dtypes(frame_or_series, any_numeric_ea_dtype, indexer tm.assert_equal(obj1, obj2, check_exact=True, check_dtype=False) -def test_assert_series_equal_check_like_different_indexes(): +def test_assert_frame_equal_check_like_different_indexes(): # GH#39739 df1 = DataFrame(index=pd.Index([], dtype="object")) df2 = DataFrame(index=pd.RangeIndex(start=0, stop=0, step=1)) with pytest.raises(AssertionError, match="DataFrame.index are different"): tm.assert_frame_equal(df1, df2, check_like=True) + + +def test_assert_frame_equal_checking_allow_dups_flag(): + # GH#45554 + left = DataFrame([[1, 2], [3, 4]]) + left.flags.allows_duplicate_labels = False + + right = DataFrame([[1, 2], [3, 4]]) + right.flags.allows_duplicate_labels = True + tm.assert_frame_equal(left, right, check_flags=False) + + with pytest.raises(AssertionError, match="allows_duplicate_labels"): + tm.assert_frame_equal(left, right, check_flags=True)