New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BUG/COMPAT: fix assert_* functions for nested arrays with latest numpy #50396
BUG/COMPAT: fix assert_* functions for nested arrays with latest numpy #50396
Conversation
# reached in groupby aggregations, make sure we use np.any when checking | ||
# if the comparison is truthy | ||
left = np.array([np.array([50, 70, 90]), np.array([20, 30, 40])], dtype=object) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we have both same-sized and mismatched-size cases? i expect these will be non-equivalent through different paths
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I intentionally changed that here, because I assume the intent of the test was to test a numpy array of arrays. But if the arrays are the same length, the np.array(..)
constructor actually converts this into a 2D array.
Below in another test, I added a case for same length (and then constructed the array with a workaround first creating an empty and then filling), see # same-length lists
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a same-length subarrays case in this test as well.
…assert-nested-data-numpy-125
Any other comments here? |
assert not array_equivalent(left, right[::-1], strict_nan=strict_nan) | ||
|
||
|
||
@pytest.mark.xfail(reason="failing") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to clarify my understanding, these xfails are not dependent on a future numpy version correct?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think not, but not 100% sure by heart. In any case, there were a bunch of cases that also with current numpy already failed with a direct array_equivalent
while passing with assert_almost_equal
because those two take slightly different code paths.
Thanks @jbrockmendel |
…nested arrays with latest numpy
This adds tests for
assert_almost_equal
(used byassert_series_equal
et al in case of object dtype arrays) that all pass on pandas main with released numpy (except for two cases with dict of array), and fixes the implementation ofarray_equivalent
(used byassert_almost_equal
) to return False instead of raising an error if numpy cannot compare the arrays (numpy 1.25.dev starts to raise for this instead of returning False).I also added a bunch of equivalent tests for
array_equivalent
itself, but those don't all pass (and added xfails). Trying to fix those as well might need more extensive changes, and I would prefer to do that separate from this PR (to keep this one possible to backport).See #50360 (comment) for an illustration of the behaviour that changed in numpy 1.25.dev that causes this.
doc/source/whatsnew/vX.X.X.rst
file if fixing a bug or adding a new feature.