Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit732426d

Browse files
committed
Support resource_tags for Table
1 parentd4d39ac commit732426d

File tree

4 files changed

+68
-3
lines changed

4 files changed

+68
-3
lines changed

‎google/cloud/bigquery/table.py‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ class Table(_TableBase):
408408
"require_partition_filter":"requirePartitionFilter",
409409
"table_constraints":"tableConstraints",
410410
"max_staleness":"maxStaleness",
411+
"resource_tags":"resourceTags",
411412
}
412413

413414
def__init__(self,table_ref,schema=None)->None:
@@ -1023,6 +1024,25 @@ def table_constraints(self) -> Optional["TableConstraints"]:
10231024
table_constraints=TableConstraints.from_api_repr(table_constraints)
10241025
returntable_constraints
10251026

1027+
@property
1028+
defresource_tags(self):
1029+
"""Dict[str, str]: Resource tags for the table.
1030+
1031+
See: https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#Table.FIELDS.resource_tags
1032+
1033+
Raises:
1034+
ValueError: For invalid value types.
1035+
"""
1036+
returnself._properties.setdefault(
1037+
self._PROPERTY_TO_API_FIELD["resource_tags"], {}
1038+
)
1039+
1040+
@resource_tags.setter
1041+
defresource_tags(self,value):
1042+
ifnotisinstance(value,dict):
1043+
raiseValueError("resource_tags must be a dict")
1044+
self._properties[self._PROPERTY_TO_API_FIELD["resource_tags"]]=value
1045+
10261046
@classmethod
10271047
deffrom_string(cls,full_table_id:str)->"Table":
10281048
"""Construct a table from fully-qualified table ID.

‎tests/system/test_client.py‎

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,24 +658,38 @@ def test_update_table(self):
658658
table.friendly_name="Friendly"
659659
table.description="Description"
660660
table.labels= {"priority":"high","color":"blue"}
661+
table.resource_tags= {"123456789012/owner":"Alice","123456789012/env":"dev"}
661662

662663
table2=Config.CLIENT.update_table(
663-
table, ["friendly_name","description","labels"]
664+
table, ["friendly_name","description","labels","resource_tags"]
664665
)
665666

666667
self.assertEqual(table2.friendly_name,"Friendly")
667668
self.assertEqual(table2.description,"Description")
668669
self.assertEqual(table2.labels, {"priority":"high","color":"blue"})
670+
self.assertEqual(
671+
table2.resource_tags,
672+
{"123456789012/owner":"Alice","123456789012/env":"dev"},
673+
)
669674

670675
table2.description=None
671676
table2.labels= {
672677
"color":"green",# change
673678
"shape":"circle",# add
674679
"priority":None,# delete
675680
}
681+
table2.resource_tags= {
682+
"123456789012/owner":"Bob",# change
683+
"123456789012/classification":"public",# add
684+
"123456789012/env":None,# delete
685+
}
676686
table3=Config.CLIENT.update_table(table2, ["description","labels"])
677687
self.assertIsNone(table3.description)
678688
self.assertEqual(table3.labels, {"color":"green","shape":"circle"})
689+
self.assertEqual(
690+
table3.resource_tags,
691+
{"123456789012/owner":"Bob","123456789012/classification":"public"},
692+
)
679693

680694
# If we try to update using table2 again, it will fail because the
681695
# previous update changed the ETag.

‎tests/unit/test_client.py‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,7 @@ def test_update_table(self):
23142314
"description":description,
23152315
"friendlyName":title,
23162316
"labels": {"x":"y"},
2317+
"resourceTags": {"123456789012/key":"value"},
23172318
}
23182319
)
23192320
schema= [
@@ -2337,7 +2338,8 @@ def test_update_table(self):
23372338
table.description=description
23382339
table.friendly_name=title
23392340
table.labels= {"x":"y"}
2340-
fields= ["schema","description","friendly_name","labels"]
2341+
table.resource_tags= {"123456789012/key":"value"}
2342+
fields= ["schema","description","friendly_name","labels","resource_tags"]
23412343
withmock.patch(
23422344
"google.cloud.bigquery.opentelemetry_tracing._get_final_span_attributes"
23432345
)asfinal_attributes:
@@ -2369,14 +2371,16 @@ def test_update_table(self):
23692371
"description":description,
23702372
"friendlyName":title,
23712373
"labels": {"x":"y"},
2374+
"resourceTags": {"123456789012/key":"value"},
23722375
}
23732376
conn.api_request.assert_called_once_with(
2374-
method="PATCH",data=sent,path="/"+path,timeout=7.5
2377+
method="PATCH",path="/"+path,data=sent,timeout=7.5
23752378
)
23762379
self.assertEqual(updated_table.description,table.description)
23772380
self.assertEqual(updated_table.friendly_name,table.friendly_name)
23782381
self.assertEqual(updated_table.schema,table.schema)
23792382
self.assertEqual(updated_table.labels,table.labels)
2383+
self.assertEqual(updated_table.resource_tags,table.resource_tags)
23802384

23812385
# ETag becomes If-Match header.
23822386
table._properties["etag"]="etag"

‎tests/unit/test_table.py‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1458,6 +1458,33 @@ def test_encryption_configuration_setter(self):
14581458
table.encryption_configuration=None
14591459
self.assertIsNone(table.encryption_configuration)
14601460

1461+
deftest_resource_tags_getter_empty(self):
1462+
dataset=DatasetReference(self.PROJECT,self.DS_ID)
1463+
table_ref=dataset.table(self.TABLE_NAME)
1464+
table=self._make_one(table_ref)
1465+
self.assertEqual(table.resource_tags, {})
1466+
1467+
deftest_resource_tags_update_in_place(self):
1468+
dataset=DatasetReference(self.PROJECT,self.DS_ID)
1469+
table_ref=dataset.table(self.TABLE_NAME)
1470+
table=self._make_one(table_ref)
1471+
table.resource_tags["123456789012/key"]="value"
1472+
self.assertEqual(table.resource_tags, {"123456789012/key":"value"})
1473+
1474+
deftest_resource_tags_setter(self):
1475+
dataset=DatasetReference(self.PROJECT,self.DS_ID)
1476+
table_ref=dataset.table(self.TABLE_NAME)
1477+
table=self._make_one(table_ref)
1478+
table.resource_tags= {"123456789012/key":"value"}
1479+
self.assertEqual(table.resource_tags, {"123456789012/key":"value"})
1480+
1481+
deftest_resource_tags_setter_bad_value(self):
1482+
dataset=DatasetReference(self.PROJECT,self.DS_ID)
1483+
table_ref=dataset.table(self.TABLE_NAME)
1484+
table=self._make_one(table_ref)
1485+
withself.assertRaises(ValueError):
1486+
table.resource_tags=None
1487+
14611488
deftest___repr__(self):
14621489
fromgoogle.cloud.bigquery.tableimportTableReference
14631490

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp