Skip to content

Commit 8c51901

Browse files
authored
bigquery: remove Table.exists (#4145)
1 parent aa9d0e9 commit 8c51901

File tree

3 files changed

+20
-80
lines changed

3 files changed

+20
-80
lines changed

bigquery/google/cloud/bigquery/table.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import six
2222

23-
from google.cloud import exceptions
2423
from google.cloud._helpers import _datetime_from_microseconds
2524
from google.cloud._helpers import _millis_from_datetime
2625
from google.cloud.bigquery.schema import SchemaField
@@ -660,30 +659,6 @@ def _build_resource(self, filter_fields):
660659
resource[api_field] = getattr(self, f)
661660
return resource
662661

663-
def exists(self, client=None):
664-
"""API call: test for the existence of the table via a GET request
665-
666-
See
667-
https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/get
668-
669-
:type client: :class:`~google.cloud.bigquery.client.Client` or
670-
``NoneType``
671-
:param client: the client to use. If not passed, falls back to the
672-
``client`` stored on the current dataset.
673-
674-
:rtype: bool
675-
:returns: Boolean indicating existence of the table.
676-
"""
677-
client = self._require_client(client)
678-
679-
try:
680-
client._connection.api_request(method='GET', path=self.path,
681-
query_params={'fields': 'id'})
682-
except exceptions.NotFound:
683-
return False
684-
else:
685-
return True
686-
687662
def row_from_mapping(self, mapping):
688663
"""Convert a mapping to a row tuple using the schema.
689664

bigquery/tests/system.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,12 @@ def test_create_table(self):
192192
age = bigquery.SchemaField('age', 'INTEGER', mode='REQUIRED')
193193
table_arg = Table(dataset.table(table_id), schema=[full_name, age],
194194
client=Config.CLIENT)
195-
self.assertFalse(table_arg.exists())
195+
self.assertFalse(_table_exists(table_arg))
196196

197197
table = retry_403(Config.CLIENT.create_table)(table_arg)
198198
self.to_delete.insert(0, table)
199199

200-
self.assertTrue(table.exists())
200+
self.assertTrue(_table_exists(table))
201201
self.assertEqual(table.table_id, table_id)
202202

203203
def test_get_table_w_public_dataset(self):
@@ -259,10 +259,10 @@ def test_update_table(self):
259259
]
260260
table_arg = Table(dataset.table(TABLE_NAME), schema=schema,
261261
client=Config.CLIENT)
262-
self.assertFalse(table_arg.exists())
262+
self.assertFalse(_table_exists(table_arg))
263263
table = retry_403(Config.CLIENT.create_table)(table_arg)
264264
self.to_delete.insert(0, table)
265-
self.assertTrue(table.exists())
265+
self.assertTrue(_table_exists(table))
266266
self.assertIsNone(table.friendly_name)
267267
self.assertIsNone(table.description)
268268
table.friendly_name = 'Friendly'
@@ -294,10 +294,10 @@ def test_update_table_schema(self):
294294
]
295295
table_arg = Table(dataset.table(TABLE_NAME), schema=schema,
296296
client=Config.CLIENT)
297-
self.assertFalse(table_arg.exists())
297+
self.assertFalse(_table_exists(table_arg))
298298
table = retry_403(Config.CLIENT.create_table)(table_arg)
299299
self.to_delete.insert(0, table)
300-
self.assertTrue(table.exists())
300+
self.assertTrue(_table_exists(table))
301301
voter = bigquery.SchemaField('voter', 'BOOLEAN', mode='NULLABLE')
302302
schema = table.schema
303303
schema.append(voter)
@@ -338,10 +338,10 @@ def test_insert_data_then_dump_table(self):
338338
now = bigquery.SchemaField('now', 'TIMESTAMP')
339339
table_arg = Table(dataset.table(TABLE_NAME),
340340
schema=[full_name, age, now], client=Config.CLIENT)
341-
self.assertFalse(table_arg.exists())
341+
self.assertFalse(_table_exists(table_arg))
342342
table = retry_403(Config.CLIENT.create_table)(table_arg)
343343
self.to_delete.insert(0, table)
344-
self.assertTrue(table.exists())
344+
self.assertTrue(_table_exists(table))
345345

346346
errors = table.insert_data(ROWS, ROW_IDS)
347347
self.assertEqual(len(errors), 0)
@@ -1317,7 +1317,7 @@ def test_create_table_insert_fetch_nested_schema(self):
13171317
client=Config.CLIENT)
13181318
table = retry_403(Config.CLIENT.create_table)(table_arg)
13191319
self.to_delete.insert(0, table)
1320-
self.assertTrue(table.exists())
1320+
self.assertTrue(_table_exists(table))
13211321
self.assertEqual(table.table_id, table_name)
13221322

13231323
to_insert = []
@@ -1386,3 +1386,12 @@ def _dataset_exists(ds):
13861386
return True
13871387
except NotFound:
13881388
return False
1389+
1390+
1391+
def _table_exists(t):
1392+
try:
1393+
tr = DatasetReference(t.project, t.dataset_id).table(t.table_id)
1394+
Config.CLIENT.get_table(tr)
1395+
return True
1396+
except NotFound:
1397+
return False

bigquery/tests/unit/test_table.py

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -708,43 +708,6 @@ def test_list_partitions(self):
708708
client=client)
709709
self.assertEqual(table.list_partitions(), [20160804, 20160805])
710710

711-
def test_exists_miss_w_bound_client(self):
712-
PATH = 'projects/%s/datasets/%s/tables/%s' % (
713-
self.PROJECT, self.DS_ID, self.TABLE_NAME)
714-
conn = _Connection()
715-
client = _Client(project=self.PROJECT, connection=conn)
716-
dataset = DatasetReference(self.PROJECT, self.DS_ID)
717-
table_ref = dataset.table(self.TABLE_NAME)
718-
table = self._make_one(table_ref, client=client)
719-
720-
self.assertFalse(table.exists())
721-
722-
self.assertEqual(len(conn._requested), 1)
723-
req = conn._requested[0]
724-
self.assertEqual(req['method'], 'GET')
725-
self.assertEqual(req['path'], '/%s' % PATH)
726-
self.assertEqual(req['query_params'], {'fields': 'id'})
727-
728-
def test_exists_hit_w_alternate_client(self):
729-
PATH = 'projects/%s/datasets/%s/tables/%s' % (
730-
self.PROJECT, self.DS_ID, self.TABLE_NAME)
731-
conn1 = _Connection()
732-
client1 = _Client(project=self.PROJECT, connection=conn1)
733-
conn2 = _Connection({})
734-
client2 = _Client(project=self.PROJECT, connection=conn2)
735-
dataset = DatasetReference(self.PROJECT, self.DS_ID)
736-
table_ref = dataset.table(self.TABLE_NAME)
737-
table = self._make_one(table_ref, client=client1)
738-
739-
self.assertTrue(table.exists(client=client2))
740-
741-
self.assertEqual(len(conn1._requested), 0)
742-
self.assertEqual(len(conn2._requested), 1)
743-
req = conn2._requested[0]
744-
self.assertEqual(req['method'], 'GET')
745-
self.assertEqual(req['path'], '/%s' % PATH)
746-
self.assertEqual(req['query_params'], {'fields': 'id'})
747-
748711
def test_row_from_mapping_wo_schema(self):
749712
from google.cloud.bigquery.table import _TABLE_HAS_NO_SCHEMA
750713
MAPPING = {'full_name': 'Phred Phlyntstone', 'age': 32}
@@ -1239,13 +1202,6 @@ def __init__(self, *responses):
12391202
self._requested = []
12401203

12411204
def api_request(self, **kw):
1242-
from google.cloud.exceptions import NotFound
1243-
12441205
self._requested.append(kw)
1245-
1246-
try:
1247-
response, self._responses = self._responses[0], self._responses[1:]
1248-
except IndexError:
1249-
raise NotFound('miss')
1250-
else:
1251-
return response
1206+
response, self._responses = self._responses[0], self._responses[1:]
1207+
return response

0 commit comments

Comments
 (0)