From 9e57d6d212a4edf9227c137cf56ca92239dfb4f5 Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Tue, 21 Dec 2021 13:39:55 -0500 Subject: [PATCH 1/3] fix column_arrays for array manager --- pandas/core/internals/array_manager.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pandas/core/internals/array_manager.py b/pandas/core/internals/array_manager.py index 09f16a2ddab67..06849bffff5ca 100644 --- a/pandas/core/internals/array_manager.py +++ b/pandas/core/internals/array_manager.py @@ -794,7 +794,14 @@ def column_arrays(self) -> list[ArrayLike]: """ Used in the JSON C code to access column arrays. """ - return self.arrays + + def convert_array(arr: ArrayLike) -> ArrayLike: + if isinstance(arr, ExtensionArray): + return arr.to_numpy() + else: + return arr + + return [convert_array(arr) for arr in self.arrays] def iset( self, loc: int | slice | np.ndarray, value: ArrayLike, inplace: bool = False From 5ee2c0229b0ec6eaee9ec3e5e911352dfe3ac18b Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Tue, 21 Dec 2021 13:46:00 -0500 Subject: [PATCH 2/3] revert PR 44999 --- .../io/json/test_json_table_schema_ext_dtype.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/pandas/tests/io/json/test_json_table_schema_ext_dtype.py b/pandas/tests/io/json/test_json_table_schema_ext_dtype.py index 52e973aed4d4e..cd760854cb01e 100644 --- a/pandas/tests/io/json/test_json_table_schema_ext_dtype.py +++ b/pandas/tests/io/json/test_json_table_schema_ext_dtype.py @@ -131,9 +131,7 @@ def setup_method(self, method): } ) - def test_build_date_series(self, using_array_manager): - if using_array_manager: - pytest.skip("Segfault for array manager GH44994") + def test_build_date_series(self): s = Series(self.da, name="a") s.index.name = "id" @@ -159,9 +157,7 @@ def test_build_date_series(self, using_array_manager): assert result == expected - def test_build_decimal_series(self, using_array_manager): - if using_array_manager: - pytest.skip("Segfault for array manager GH44994") + def test_build_decimal_series(self): s = Series(self.dc, name="a") s.index.name = "id" @@ -237,9 +233,7 @@ def test_build_int64_series(self): assert result == expected - def test_to_json(self, using_array_manager): - if using_array_manager: - pytest.skip("Segfault for array manager GH44994") + def test_to_json(self): df = self.df.copy() df.index.name = "idx" From 178b2dda76bf668c4d3c494ad176c22eeb3e278a Mon Sep 17 00:00:00 2001 From: Irv Lustig Date: Tue, 28 Dec 2021 12:30:55 -0500 Subject: [PATCH 3/3] use np.asarray instead of to_numpy --- pandas/core/internals/array_manager.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pandas/core/internals/array_manager.py b/pandas/core/internals/array_manager.py index 06849bffff5ca..ec3a9e8b493e3 100644 --- a/pandas/core/internals/array_manager.py +++ b/pandas/core/internals/array_manager.py @@ -795,13 +795,7 @@ def column_arrays(self) -> list[ArrayLike]: Used in the JSON C code to access column arrays. """ - def convert_array(arr: ArrayLike) -> ArrayLike: - if isinstance(arr, ExtensionArray): - return arr.to_numpy() - else: - return arr - - return [convert_array(arr) for arr in self.arrays] + return [np.asarray(arr) for arr in self.arrays] def iset( self, loc: int | slice | np.ndarray, value: ArrayLike, inplace: bool = False