Skip to content

Commit 9dcc581

Browse files
committed
Add 'LoadTableConfig.destination_table_description' property.
1 parent 981e07b commit 9dcc581

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
@@ -987,6 +987,25 @@ def destination_encryption_configuration(self, value):
987987
else:
988988
self._del_sub_prop('destinationEncryptionConfiguration')
989989

990+
@property
991+
def destination_table_description(self):
992+
"""Union[str, None] name given to destination table.
993+
994+
See:
995+
https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load.destinationTableProperties.description
996+
"""
997+
prop = self._get_sub_prop('destinationTableProperties')
998+
if prop is not None:
999+
return prop['description']
1000+
1001+
@destination_table_description.setter
1002+
def destination_table_description(self, value):
1003+
keys = [self._job_type, 'destinationTableProperties', 'description']
1004+
if value is not None:
1005+
_helpers._set_sub_prop(self._properties, keys, value)
1006+
else:
1007+
_helpers._del_sub_prop(self._properties, keys)
1008+
9901009
@property
9911010
def encoding(self):
9921011
"""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
@@ -1286,6 +1286,59 @@ def test_destination_encryption_configuration_setter_w_none(self):
12861286
self.assertNotIn(
12871287
'destinationEncryptionConfiguration', config._properties['load'])
12881288

1289+
def test_destination_table_description_missing(self):
1290+
config = self._get_target_class()()
1291+
self.assertIsNone(config.destination_table_description)
1292+
1293+
def test_destination_table_description_hit(self):
1294+
description = 'Description'
1295+
config = self._get_target_class()()
1296+
config._properties['load']['destinationTableProperties'] = {
1297+
'description': description,
1298+
}
1299+
self.assertEqual(
1300+
config.destination_table_description, description)
1301+
1302+
def test_destination_table_description_setter(self):
1303+
description = 'Description'
1304+
config = self._get_target_class()()
1305+
config.destination_table_description = description
1306+
expected = {
1307+
'description': description,
1308+
}
1309+
self.assertEqual(
1310+
config._properties['load']['destinationTableProperties'], expected)
1311+
1312+
def test_destination_table_description_setter_w_fn_already(self):
1313+
description = 'Description'
1314+
friendly_name = 'Friendly Name'
1315+
config = self._get_target_class()()
1316+
config._properties['load']['destinationTableProperties'] = {
1317+
'friendlyName': friendly_name,
1318+
}
1319+
config.destination_table_description = description
1320+
expected = {
1321+
'friendlyName': friendly_name,
1322+
'description': description,
1323+
}
1324+
self.assertEqual(
1325+
config._properties['load']['destinationTableProperties'], expected)
1326+
1327+
def test_destination_table_description_w_none(self):
1328+
description = 'Description'
1329+
friendly_name = 'Friendly Name'
1330+
config = self._get_target_class()()
1331+
config._properties['load']['destinationTableProperties'] = {
1332+
'description': description,
1333+
'friendlyName': friendly_name,
1334+
}
1335+
config.destination_table_description = None
1336+
expected = {
1337+
'friendlyName': friendly_name,
1338+
}
1339+
self.assertEqual(
1340+
config._properties['load']['destinationTableProperties'], expected)
1341+
12891342
def test_encoding_missing(self):
12901343
config = self._get_target_class()()
12911344
self.assertIsNone(config.encoding)

0 commit comments

Comments
 (0)