From 8e58fa611291098daaea899545bb36ad9ecd6f67 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Wed, 11 Sep 2024 14:41:13 +0200 Subject: [PATCH 1/2] BUG: avoid triggering numpy deprecation warning in assert functions for nested array with empty array/list --- pandas/_libs/lib.pyx | 2 ++ pandas/tests/util/test_assert_almost_equal.py | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/pandas/_libs/lib.pyx b/pandas/_libs/lib.pyx index 75f58f565dd6f..3f2dfbfb3b404 100644 --- a/pandas/_libs/lib.pyx +++ b/pandas/_libs/lib.pyx @@ -600,6 +600,8 @@ def array_equivalent_object(ndarray left, ndarray right) -> bool: if not array_equivalent(x, y): return False + elif PyArray_Check(x) or PyArray_Check(y): + return False elif (x is C_NA) ^ (y is C_NA): return False elif not ( diff --git a/pandas/tests/util/test_assert_almost_equal.py b/pandas/tests/util/test_assert_almost_equal.py index bcc2e4e03f367..091670ed69f11 100644 --- a/pandas/tests/util/test_assert_almost_equal.py +++ b/pandas/tests/util/test_assert_almost_equal.py @@ -534,6 +534,10 @@ def test_assert_almost_equal_iterable_values_mismatch(): np.array([np.array([1, 2, 3]), np.array([4, 5])], dtype=object), np.array([[1, 2, 3], [4, 5]], dtype=object), ), + ( + np.array([np.array([], dtype=object), None], dtype=object), + np.array([[], None], dtype=object), + ), ( np.array( [ From 591a455336a7872c6bda07b46b4804b4336ef0a8 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Wed, 11 Sep 2024 17:03:55 +0200 Subject: [PATCH 2/2] remove expected warnings in tests --- pandas/tests/dtypes/test_missing.py | 12 +----------- pandas/tests/series/methods/test_equals.py | 12 +----------- 2 files changed, 2 insertions(+), 22 deletions(-) diff --git a/pandas/tests/dtypes/test_missing.py b/pandas/tests/dtypes/test_missing.py index f86ed6f49759f..73c462d492d2d 100644 --- a/pandas/tests/dtypes/test_missing.py +++ b/pandas/tests/dtypes/test_missing.py @@ -1,4 +1,3 @@ -from contextlib import nullcontext from datetime import datetime from decimal import Decimal @@ -7,7 +6,6 @@ from pandas._libs import missing as libmissing from pandas._libs.tslibs import iNaT -from pandas.compat.numpy import np_version_gte1p25 from pandas.core.dtypes.common import ( is_float, @@ -458,15 +456,7 @@ def test_array_equivalent_dti(dtype_equal): ) def test_array_equivalent_series(val): arr = np.array([1, 2]) - msg = "elementwise comparison failed" - cm = ( - # stacklevel is chosen to make sense when called from .equals - tm.assert_produces_warning(FutureWarning, match=msg, check_stacklevel=False) - if isinstance(val, str) and not np_version_gte1p25 - else nullcontext() - ) - with cm: - assert not array_equivalent(Series([arr, arr]), Series([arr, val])) + assert not array_equivalent(Series([arr, arr]), Series([arr, val])) def test_array_equivalent_array_mismatched_shape(): diff --git a/pandas/tests/series/methods/test_equals.py b/pandas/tests/series/methods/test_equals.py index b94723b7cbddf..0c52eacd7e516 100644 --- a/pandas/tests/series/methods/test_equals.py +++ b/pandas/tests/series/methods/test_equals.py @@ -1,11 +1,9 @@ -from contextlib import nullcontext import copy import numpy as np import pytest from pandas._libs.missing import is_matching_na -from pandas.compat.numpy import np_version_gte1p25 from pandas.core.dtypes.common import is_float @@ -14,7 +12,6 @@ MultiIndex, Series, ) -import pandas._testing as tm @pytest.mark.parametrize( @@ -48,14 +45,7 @@ def test_equals_list_array(val): assert s1.equals(s2) s1[1] = val - - cm = ( - tm.assert_produces_warning(FutureWarning, check_stacklevel=False) - if isinstance(val, str) and not np_version_gte1p25 - else nullcontext() - ) - with cm: - assert not s1.equals(s2) + assert not s1.equals(s2) def test_equals_false_negative():