From f6142a1241e5f98f80843962638ca61341e2ac5e Mon Sep 17 00:00:00 2001 From: Matthew Roeschke Date: Fri, 3 Jun 2022 16:10:15 -0700 Subject: [PATCH] REF: Store dataframe protocol column buffers in attrs --- pandas/core/exchange/from_dataframe.py | 2 +- pandas/tests/exchange/__init__.py | 0 pandas/tests/exchange/conftest.py | 2 +- pandas/tests/exchange/test_impl.py | 10 ++++++---- 4 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 pandas/tests/exchange/__init__.py diff --git a/pandas/core/exchange/from_dataframe.py b/pandas/core/exchange/from_dataframe.py index 18d8c9c257af4..805e63ac67f16 100644 --- a/pandas/core/exchange/from_dataframe.py +++ b/pandas/core/exchange/from_dataframe.py @@ -136,7 +136,7 @@ def protocol_df_chunk_to_pandas(df: DataFrameXchg) -> pd.DataFrame: buffers.append(buf) pandas_df = pd.DataFrame(columns) - pandas_df._buffers = buffers + pandas_df.attrs["_EXCHANGE_PROTOCOL_BUFFERS"] = buffers return pandas_df diff --git a/pandas/tests/exchange/__init__.py b/pandas/tests/exchange/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/pandas/tests/exchange/conftest.py b/pandas/tests/exchange/conftest.py index 033f44984b551..f552ba442a916 100644 --- a/pandas/tests/exchange/conftest.py +++ b/pandas/tests/exchange/conftest.py @@ -3,7 +3,7 @@ import pandas as pd -@pytest.fixture(scope="package") +@pytest.fixture def df_from_dict(): def maker(dct, is_categorical=False): df = pd.DataFrame(dct) diff --git a/pandas/tests/exchange/test_impl.py b/pandas/tests/exchange/test_impl.py index a40e5fef789ad..e0e9fdce645d0 100644 --- a/pandas/tests/exchange/test_impl.py +++ b/pandas/tests/exchange/test_impl.py @@ -84,10 +84,12 @@ def test_dataframe(data): indices = (0, 2) names = tuple(list(data.keys())[idx] for idx in indices) - tm.assert_frame_equal( - from_dataframe(df2.select_columns(indices)), - from_dataframe(df2.select_columns_by_name(names)), - ) + result = from_dataframe(df2.select_columns(indices)) + expected = from_dataframe(df2.select_columns_by_name(names)) + tm.assert_frame_equal(result, expected) + + assert isinstance(result.attrs["_EXCHANGE_PROTOCOL_BUFFERS"], list) + assert isinstance(expected.attrs["_EXCHANGE_PROTOCOL_BUFFERS"], list) def test_missing_from_masked():