From 229e4b4aecf72b732d9410adfef98b3c5600f9b6 Mon Sep 17 00:00:00 2001 From: Damian Barabonkov Date: Wed, 13 Oct 2021 15:25:17 +0200 Subject: [PATCH 1/2] TST: More type checking during .(i)loc --- pandas/tests/indexing/test_iloc.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pandas/tests/indexing/test_iloc.py b/pandas/tests/indexing/test_iloc.py index b8c53c7b59239..79b6d8679df0c 100644 --- a/pandas/tests/indexing/test_iloc.py +++ b/pandas/tests/indexing/test_iloc.py @@ -54,7 +54,7 @@ def test_iloc_getitem_int_and_list_int(self, key): class TestiLocBaseIndependent: """Tests Independent Of Base Class""" - + @pytest.mark.parametrize( "key", [ @@ -101,14 +101,22 @@ def test_iloc_setitem_fullcol_categorical(self, indexer, key, using_array_manage else: assert cat[0] != "gamma" + def check(frame, expected): + df = frame.copy() + orig_vals = df.values + indexer(df)[key, 0] = cat + tm.assert_frame_equal(df, expected) + # TODO with mixed dataframe ("split" path), we always overwrite the column frame = DataFrame({0: np.array([0, 1, 2], dtype=object), 1: range(3)}) - df = frame.copy() - orig_vals = df.values - indexer(df)[key, 0] = cat expected = DataFrame({0: cat, 1: range(3)}) - tm.assert_frame_equal(df, expected) + check(frame, expected) + # Without a mixed dataframe, a the internal block is overwritten + frame = DataFrame({0: np.array([0, 1, 2], dtype=object)}) + expected = DataFrame({0: cat}) + check(frame, expected) + # TODO(ArrayManager) does not yet update parent @td.skip_array_manager_not_yet_implemented @pytest.mark.parametrize("box", [array, Series]) From 8d359d1d44a7d952baf21bd1e60bc1e9b1fe5419 Mon Sep 17 00:00:00 2001 From: Damian Barabonkov Date: Wed, 13 Oct 2021 15:32:11 +0200 Subject: [PATCH 2/2] Code now passes the linter --- pandas/tests/indexing/test_iloc.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pandas/tests/indexing/test_iloc.py b/pandas/tests/indexing/test_iloc.py index 79b6d8679df0c..edc1beb4c94aa 100644 --- a/pandas/tests/indexing/test_iloc.py +++ b/pandas/tests/indexing/test_iloc.py @@ -54,7 +54,7 @@ def test_iloc_getitem_int_and_list_int(self, key): class TestiLocBaseIndependent: """Tests Independent Of Base Class""" - + @pytest.mark.parametrize( "key", [ @@ -103,7 +103,6 @@ def test_iloc_setitem_fullcol_categorical(self, indexer, key, using_array_manage def check(frame, expected): df = frame.copy() - orig_vals = df.values indexer(df)[key, 0] = cat tm.assert_frame_equal(df, expected) @@ -115,8 +114,8 @@ def check(frame, expected): # Without a mixed dataframe, a the internal block is overwritten frame = DataFrame({0: np.array([0, 1, 2], dtype=object)}) expected = DataFrame({0: cat}) - check(frame, expected) - + check(frame, expected) + # TODO(ArrayManager) does not yet update parent @td.skip_array_manager_not_yet_implemented @pytest.mark.parametrize("box", [array, Series])