-
-
Notifications
You must be signed in to change notification settings - Fork 18.3k
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
TST/CoW: expand test for chained inplace methods #56402
TST/CoW: expand test for chained inplace methods #56402
Conversation
getattr(df["a"], func)(*args, inplace=True) | ||
|
||
|
||
def test_methods_iloc_getitem_item_cache_fillna( |
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 added a second version of this test with all hardcoded fillna()
calls, so this isn't using *args
, and we also have one version without this (in theory we could do this for each of the methods, but given the code is reused in each of the methods, I think just one is also fine)
# TODO(CoW-warn) because of the usage of *args, this doesn't warn on Py3.11+ | ||
if using_copy_on_write: | ||
with tm.raises_chained_assignment_error(not PY311): | ||
getattr(df["a"], func)(*args, inplace=True) |
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 updated the first test to also use getattr(..)(*args)
for this part of the test, which means we are for now asserting this incorrectly doesn't raise a warning for 3.11+ because of the different ref count when using *args
# TODO(CoW-warn) ideally also warns on the default mode, but the ser' _cacher | ||
# messes up the refcount | ||
with tm.assert_cow_warning(warn_copy_on_write, match="A value"): | ||
df["a"].fillna(1, inplace=True) |
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 added one more test case to both tests where we populate the item cache but also keep that series object alive. In this case, because that increases the ref count in the non-CoW or non-warn mode (the df['a']
is cached), this doesn't give a warning.
Not sure we can do something about this, though, given the fact we cache the getitem return value and reuse that.
But at least, the good part, is that it does correctly warn on the warning mode. So for users that do the migration in steps, they should see the warning then.
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.
generally looks good, ci is red though
Thanks @jorisvandenbossche |
* TST/CoW: expand test for chained inplace methods * fix test for older python --------- Co-authored-by: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com>
Another follow-up on #56400