Skip to content

Commit 9581ddf

Browse files
committed
Don't populate new or deprecated kwargs unless explicitly set.
1 parent 31bb4a4 commit 9581ddf

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

doc/source/whatsnew/v0.25.0.rst

-2
Original file line numberDiff line numberDiff line change
@@ -191,8 +191,6 @@ Optional libraries below the lowest tested version may still work, but are not c
191191
+-----------------+-----------------+
192192
| openpyxl | 2.4.0 |
193193
+-----------------+-----------------+
194-
| pandas-gbq | 0.10.0 |
195-
+-----------------+-----------------+
196194
| pyarrow | 0.9.0 |
197195
+-----------------+-----------------+
198196
| pytables | 3.4.2 |

pandas/io/gbq.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,27 @@ def read_gbq(query, project_id=None, index_col=None, col_order=None,
145145
"""
146146
pandas_gbq = _try_import()
147147

148+
kwargs = {}
149+
150+
# START: new kwargs. Don't populate unless explicitly set.
151+
if use_bqstorage_api is not None:
152+
kwargs["use_bqstorage_api"] = use_bqstorage_api
153+
# END: new kwargs
154+
155+
# START: deprecated kwargs. Don't populate unless explicitly set.
156+
if verbose is not None:
157+
kwargs["verbose"] = verbose
158+
159+
if private_key is not None:
160+
kwargs["private_key"] = private_key
161+
# END: deprecated kwargs
162+
148163
return pandas_gbq.read_gbq(
149164
query, project_id=project_id, index_col=index_col,
150165
col_order=col_order, reauth=reauth,
151166
auth_local_webserver=auth_local_webserver, dialect=dialect,
152167
location=location, configuration=configuration,
153-
credentials=credentials, use_bqstorage_api=use_bqstorage_api,
154-
verbose=verbose, private_key=private_key)
168+
credentials=credentials, **kwargs)
155169

156170

157171
def to_gbq(dataframe, destination_table, project_id=None, chunksize=None,

pandas/tests/io/test_gbq.py

+37
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from datetime import datetime
22
import os
33
import platform
4+
from unittest import mock
45

56
import numpy as np
67
import pytest
@@ -10,6 +11,7 @@
1011
from pandas import DataFrame
1112
import pandas.util.testing as tm
1213

14+
1315
api_exceptions = pytest.importorskip("google.api_core.exceptions")
1416
bigquery = pytest.importorskip("google.cloud.bigquery")
1517
service_account = pytest.importorskip("google.oauth2.service_account")
@@ -90,6 +92,41 @@ def make_mixed_dataframe_v2(test_size):
9092
index=range(test_size))
9193

9294

95+
@mock.patch('pandas_gbq.read_gbq')
96+
def test_read_gbq_with_deprecated_kwargs(mock_read_gbq):
97+
private_key = object()
98+
mock_read_gbq.return_value = DataFrame([[1.0]])
99+
pd.read_gbq("SELECT 1", verbose=True, private_key=private_key)
100+
_, kwargs = mock_read_gbq.call_args
101+
assert kwargs["verbose"]
102+
assert kwargs["private_key"] is private_key
103+
104+
105+
@mock.patch('pandas_gbq.read_gbq')
106+
def test_read_gbq_without_deprecated_kwargs(mock_read_gbq):
107+
mock_read_gbq.return_value = DataFrame([[1.0]])
108+
pd.read_gbq("SELECT 1")
109+
_, kwargs = mock_read_gbq.call_args
110+
assert "verbose" not in kwargs
111+
assert "private_key" not in kwargs
112+
113+
114+
@mock.patch('pandas_gbq.read_gbq')
115+
def test_read_gbq_with_new_kwargs(mock_read_gbq):
116+
mock_read_gbq.return_value = DataFrame([[1.0]])
117+
pd.read_gbq("SELECT 1", use_bqstorage_api=True)
118+
_, kwargs = mock_read_gbq.call_args
119+
assert kwargs["use_bqstorage_api"]
120+
121+
122+
@mock.patch('pandas_gbq.read_gbq')
123+
def test_read_gbq_without_new_kwargs(mock_read_gbq):
124+
mock_read_gbq.return_value = DataFrame([[1.0]])
125+
pd.read_gbq("SELECT 1")
126+
_, kwargs = mock_read_gbq.call_args
127+
assert "use_bqstorage_api" not in kwargs
128+
129+
93130
@pytest.mark.single
94131
class TestToGBQIntegrationWithServiceAccountKeyPath(object):
95132

0 commit comments

Comments
 (0)