Skip to content

Commit 1240481

Browse files
committed
Add 'LoadTableConfig.destination_table_friendly_name' property.
Closes #5093.
1 parent 8a1d4fa commit 1240481

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

bigquery/google/cloud/bigquery/job.py

+19
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,25 @@ def destination_table_description(self, value):
10061006
else:
10071007
_helpers._del_sub_prop(self._properties, keys)
10081008

1009+
@property
1010+
def destination_table_friendly_name(self):
1011+
"""Union[str, None] name given to destination table.
1012+
1013+
See:
1014+
https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load.destinationTableProperties.friendlyName
1015+
"""
1016+
prop = self._get_sub_prop('destinationTableProperties')
1017+
if prop is not None:
1018+
return prop['friendlyName']
1019+
1020+
@destination_table_friendly_name.setter
1021+
def destination_table_friendly_name(self, value):
1022+
keys = [self._job_type, 'destinationTableProperties', 'friendlyName']
1023+
if value is not None:
1024+
_helpers._set_sub_prop(self._properties, keys, value)
1025+
else:
1026+
_helpers._del_sub_prop(self._properties, keys)
1027+
10091028
@property
10101029
def encoding(self):
10111030
"""google.cloud.bigquery.job.Encoding: The character encoding of the

bigquery/tests/unit/test_job.py

+53
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,59 @@ def test_destination_table_description_w_none(self):
13391339
self.assertEqual(
13401340
config._properties['load']['destinationTableProperties'], expected)
13411341

1342+
def test_destination_table_friendly_name_missing(self):
1343+
config = self._get_target_class()()
1344+
self.assertIsNone(config.destination_table_friendly_name)
1345+
1346+
def test_destination_table_friendly_name_hit(self):
1347+
friendly_name = 'Friendly Name'
1348+
config = self._get_target_class()()
1349+
config._properties['load']['destinationTableProperties'] = {
1350+
'friendlyName': friendly_name,
1351+
}
1352+
self.assertEqual(
1353+
config.destination_table_friendly_name, friendly_name)
1354+
1355+
def test_destination_table_friendly_name_setter(self):
1356+
friendly_name = 'Friendly Name'
1357+
config = self._get_target_class()()
1358+
config.destination_table_friendly_name = friendly_name
1359+
expected = {
1360+
'friendlyName': friendly_name,
1361+
}
1362+
self.assertEqual(
1363+
config._properties['load']['destinationTableProperties'], expected)
1364+
1365+
def test_destination_table_friendly_name_setter_w_descr_already(self):
1366+
friendly_name = 'Friendly Name'
1367+
description = 'Description'
1368+
config = self._get_target_class()()
1369+
config._properties['load']['destinationTableProperties'] = {
1370+
'description': description,
1371+
}
1372+
config.destination_table_friendly_name = friendly_name
1373+
expected = {
1374+
'friendlyName': friendly_name,
1375+
'description': description,
1376+
}
1377+
self.assertEqual(
1378+
config._properties['load']['destinationTableProperties'], expected)
1379+
1380+
def test_destination_table_friendly_name_w_none(self):
1381+
friendly_name = 'Friendly Name'
1382+
description = 'Description'
1383+
config = self._get_target_class()()
1384+
config._properties['load']['destinationTableProperties'] = {
1385+
'description': description,
1386+
'friendlyName': friendly_name,
1387+
}
1388+
config.destination_table_friendly_name = None
1389+
expected = {
1390+
'description': description,
1391+
}
1392+
self.assertEqual(
1393+
config._properties['load']['destinationTableProperties'], expected)
1394+
13421395
def test_encoding_missing(self):
13431396
config = self._get_target_class()()
13441397
self.assertIsNone(config.encoding)

0 commit comments

Comments
 (0)