Skip to content

Commit b28f9fd

Browse files
authored
fix: raise ValueError when read_pandas() receives a bigframes DataFrame (#447)
* fix: raise `ValueError` when `read_pandas()` receives a bigframes `DataFrame` * make actually a unit test
1 parent 40ddb69 commit b28f9fd

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

bigframes/session/__init__.py

+6
Original file line numberDiff line numberDiff line change
@@ -916,6 +916,12 @@ def read_pandas(self, pandas_dataframe: pandas.DataFrame) -> dataframe.DataFrame
916916
def _read_pandas(
917917
self, pandas_dataframe: pandas.DataFrame, api_name: str
918918
) -> dataframe.DataFrame:
919+
if isinstance(pandas_dataframe, dataframe.DataFrame):
920+
raise ValueError(
921+
"read_pandas() expects a pandas.DataFrame, but got a "
922+
"bigframes.pandas.DataFrame."
923+
)
924+
919925
if (
920926
pandas_dataframe.size < MAX_INLINE_DF_SIZE
921927
# TODO(swast): Workaround data types limitation in inline data.

tests/unit/session/test_io_pandas.py

+15
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
# limitations under the License.
1414

1515
import datetime
16+
import re
1617
from typing import Dict, Union
18+
import unittest.mock as mock
1719

1820
import geopandas # type: ignore
1921
import numpy
@@ -24,8 +26,11 @@
2426
import pytest
2527

2628
import bigframes.features
29+
import bigframes.pandas
2730
import bigframes.session._io.pandas
2831

32+
from .. import resources
33+
2934
_LIST_OF_SCALARS = [
3035
[1, 2, 3],
3136
[],
@@ -475,3 +480,13 @@ def test_arrow_to_pandas_wrong_size_dtypes(
475480
):
476481
with pytest.raises(ValueError, match=f"Number of types {len(dtypes)}"):
477482
bigframes.session._io.pandas.arrow_to_pandas(arrow_table, dtypes)
483+
484+
485+
def test_read_pandas_with_bigframes_dataframe():
486+
session = resources.create_bigquery_session()
487+
df = mock.create_autospec(bigframes.pandas.DataFrame, instance=True)
488+
489+
with pytest.raises(
490+
ValueError, match=re.escape("read_pandas() expects a pandas.DataFrame")
491+
):
492+
session.read_pandas(df)

0 commit comments

Comments
 (0)