Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit 883ceab

Browse files
Merge branch 'main' into refactor_refresh
2 parents 3f090c2 + 1a5b4b5 commit 883ceab

35 files changed

Lines changed: 13179 additions & 5193 deletions

google/cloud/bigtable/data/mutations.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,14 @@ def _from_dict(cls, input_dict: dict[str, Any]) -> Mutation:
123123
instance = DeleteAllFromFamily(details["family_name"])
124124
elif "delete_from_row" in input_dict:
125125
instance = DeleteAllFromRow()
126+
elif "add_to_cell" in input_dict:
127+
details = input_dict["add_to_cell"]
128+
instance = AddToCell(
129+
details["family_name"],
130+
details["column_qualifier"]["raw_value"],
131+
details["input"]["int_value"],
132+
details["timestamp"]["raw_timestamp_micros"],
133+
)
126134
except KeyError as e:
127135
raise ValueError("Invalid mutation dictionary") from e
128136
if instance is None:
@@ -276,6 +284,75 @@ def _to_dict(self) -> dict[str, Any]:
276284
}
277285

278286

287+
@dataclass
288+
class AddToCell(Mutation):
289+
"""
290+
Adds an int64 value to an aggregate cell. The column family must be an
291+
aggregate family and have an "int64" input type or this mutation will be
292+
rejected.
293+
294+
Note: The timestamp values are in microseconds but must match the
295+
granularity of the table (defaults to `MILLIS`). Therefore, the given value
296+
must be a multiple of 1000 (millisecond granularity). For example:
297+
`1571902339435000`.
298+
299+
Args:
300+
family: The name of the column family to which the cell belongs.
301+
qualifier: The column qualifier of the cell.
302+
value: The value to be accumulated into the cell.
303+
timestamp_micros: The timestamp of the cell. Must be provided for
304+
cell aggregation to work correctly.
305+
306+
307+
Raises:
308+
TypeError: If `qualifier` is not `bytes` or `str`.
309+
TypeError: If `value` is not `int`.
310+
TypeError: If `timestamp_micros` is not `int`.
311+
ValueError: If `value` is out of bounds for a 64-bit signed int.
312+
ValueError: If `timestamp_micros` is less than 0.
313+
"""
314+
315+
def __init__(
316+
self,
317+
family: str,
318+
qualifier: bytes | str,
319+
value: int,
320+
timestamp_micros: int,
321+
):
322+
qualifier = qualifier.encode() if isinstance(qualifier, str) else qualifier
323+
if not isinstance(qualifier, bytes):
324+
raise TypeError("qualifier must be bytes or str")
325+
if not isinstance(value, int):
326+
raise TypeError("value must be int")
327+
if not isinstance(timestamp_micros, int):
328+
raise TypeError("timestamp_micros must be int")
329+
if abs(value) > _MAX_INCREMENT_VALUE:
330+
raise ValueError(
331+
"int values must be between -2**63 and 2**63 (64-bit signed int)"
332+
)
333+
334+
if timestamp_micros < 0:
335+
raise ValueError("timestamp must be non-negative")
336+
337+
self.family = family
338+
self.qualifier = qualifier
339+
self.value = value
340+
self.timestamp = timestamp_micros
341+
342+
def _to_dict(self) -> dict[str, Any]:
343+
return {
344+
"add_to_cell": {
345+
"family_name": self.family,
346+
"column_qualifier": {"raw_value": self.qualifier},
347+
"timestamp": {"raw_timestamp_micros": self.timestamp},
348+
"input": {"int_value": self.value},
349+
}
350+
}
351+
352+
def is_idempotent(self) -> bool:
353+
return False
354+
355+
279356
class RowMutationEntry:
280357
"""
281358
A single entry in a `MutateRows` request.

google/cloud/bigtable_admin/__init__.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,12 @@
177177
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
178178
CreateBackupRequest,
179179
)
180+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
181+
CreateSchemaBundleMetadata,
182+
)
183+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
184+
CreateSchemaBundleRequest,
185+
)
180186
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
181187
CreateTableFromSnapshotMetadata,
182188
)
@@ -193,6 +199,9 @@
193199
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
194200
DeleteBackupRequest,
195201
)
202+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
203+
DeleteSchemaBundleRequest,
204+
)
196205
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
197206
DeleteSnapshotRequest,
198207
)
@@ -210,6 +219,9 @@
210219
GetAuthorizedViewRequest,
211220
)
212221
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import GetBackupRequest
222+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
223+
GetSchemaBundleRequest,
224+
)
213225
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import GetSnapshotRequest
214226
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import GetTableRequest
215227
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
@@ -222,6 +234,12 @@
222234
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
223235
ListBackupsResponse,
224236
)
237+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
238+
ListSchemaBundlesRequest,
239+
)
240+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
241+
ListSchemaBundlesResponse,
242+
)
225243
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
226244
ListSnapshotsRequest,
227245
)
@@ -266,6 +284,12 @@
266284
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
267285
UpdateBackupRequest,
268286
)
287+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
288+
UpdateSchemaBundleMetadata,
289+
)
290+
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
291+
UpdateSchemaBundleRequest,
292+
)
269293
from google.cloud.bigtable_admin_v2.types.bigtable_table_admin import (
270294
UpdateTableMetadata,
271295
)
@@ -287,7 +311,9 @@
287311
from google.cloud.bigtable_admin_v2.types.table import ColumnFamily
288312
from google.cloud.bigtable_admin_v2.types.table import EncryptionInfo
289313
from google.cloud.bigtable_admin_v2.types.table import GcRule
314+
from google.cloud.bigtable_admin_v2.types.table import ProtoSchema
290315
from google.cloud.bigtable_admin_v2.types.table import RestoreInfo
316+
from google.cloud.bigtable_admin_v2.types.table import SchemaBundle
291317
from google.cloud.bigtable_admin_v2.types.table import Snapshot
292318
from google.cloud.bigtable_admin_v2.types.table import Table
293319
from google.cloud.bigtable_admin_v2.types.table import RestoreSourceType
@@ -348,25 +374,31 @@
348374
"CreateAuthorizedViewRequest",
349375
"CreateBackupMetadata",
350376
"CreateBackupRequest",
377+
"CreateSchemaBundleMetadata",
378+
"CreateSchemaBundleRequest",
351379
"CreateTableFromSnapshotMetadata",
352380
"CreateTableFromSnapshotRequest",
353381
"CreateTableRequest",
354382
"DataBoostReadLocalWrites",
355383
"DeleteAuthorizedViewRequest",
356384
"DeleteBackupRequest",
385+
"DeleteSchemaBundleRequest",
357386
"DeleteSnapshotRequest",
358387
"DeleteTableRequest",
359388
"DropRowRangeRequest",
360389
"GenerateConsistencyTokenRequest",
361390
"GenerateConsistencyTokenResponse",
362391
"GetAuthorizedViewRequest",
363392
"GetBackupRequest",
393+
"GetSchemaBundleRequest",
364394
"GetSnapshotRequest",
365395
"GetTableRequest",
366396
"ListAuthorizedViewsRequest",
367397
"ListAuthorizedViewsResponse",
368398
"ListBackupsRequest",
369399
"ListBackupsResponse",
400+
"ListSchemaBundlesRequest",
401+
"ListSchemaBundlesResponse",
370402
"ListSnapshotsRequest",
371403
"ListSnapshotsResponse",
372404
"ListTablesRequest",
@@ -383,6 +415,8 @@
383415
"UpdateAuthorizedViewMetadata",
384416
"UpdateAuthorizedViewRequest",
385417
"UpdateBackupRequest",
418+
"UpdateSchemaBundleMetadata",
419+
"UpdateSchemaBundleRequest",
386420
"UpdateTableMetadata",
387421
"UpdateTableRequest",
388422
"OperationProgress",
@@ -402,7 +436,9 @@
402436
"ColumnFamily",
403437
"EncryptionInfo",
404438
"GcRule",
439+
"ProtoSchema",
405440
"RestoreInfo",
441+
"SchemaBundle",
406442
"Snapshot",
407443
"Table",
408444
"RestoreSourceType",

google/cloud/bigtable_admin_v2/__init__.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,25 +73,31 @@
7373
from .types.bigtable_table_admin import CreateAuthorizedViewRequest
7474
from .types.bigtable_table_admin import CreateBackupMetadata
7575
from .types.bigtable_table_admin import CreateBackupRequest
76+
from .types.bigtable_table_admin import CreateSchemaBundleMetadata
77+
from .types.bigtable_table_admin import CreateSchemaBundleRequest
7678
from .types.bigtable_table_admin import CreateTableFromSnapshotMetadata
7779
from .types.bigtable_table_admin import CreateTableFromSnapshotRequest
7880
from .types.bigtable_table_admin import CreateTableRequest
7981
from .types.bigtable_table_admin import DataBoostReadLocalWrites
8082
from .types.bigtable_table_admin import DeleteAuthorizedViewRequest
8183
from .types.bigtable_table_admin import DeleteBackupRequest
84+
from .types.bigtable_table_admin import DeleteSchemaBundleRequest
8285
from .types.bigtable_table_admin import DeleteSnapshotRequest
8386
from .types.bigtable_table_admin import DeleteTableRequest
8487
from .types.bigtable_table_admin import DropRowRangeRequest
8588
from .types.bigtable_table_admin import GenerateConsistencyTokenRequest
8689
from .types.bigtable_table_admin import GenerateConsistencyTokenResponse
8790
from .types.bigtable_table_admin import GetAuthorizedViewRequest
8891
from .types.bigtable_table_admin import GetBackupRequest
92+
from .types.bigtable_table_admin import GetSchemaBundleRequest
8993
from .types.bigtable_table_admin import GetSnapshotRequest
9094
from .types.bigtable_table_admin import GetTableRequest
9195
from .types.bigtable_table_admin import ListAuthorizedViewsRequest
9296
from .types.bigtable_table_admin import ListAuthorizedViewsResponse
9397
from .types.bigtable_table_admin import ListBackupsRequest
9498
from .types.bigtable_table_admin import ListBackupsResponse
99+
from .types.bigtable_table_admin import ListSchemaBundlesRequest
100+
from .types.bigtable_table_admin import ListSchemaBundlesResponse
95101
from .types.bigtable_table_admin import ListSnapshotsRequest
96102
from .types.bigtable_table_admin import ListSnapshotsResponse
97103
from .types.bigtable_table_admin import ListTablesRequest
@@ -108,6 +114,8 @@
108114
from .types.bigtable_table_admin import UpdateAuthorizedViewMetadata
109115
from .types.bigtable_table_admin import UpdateAuthorizedViewRequest
110116
from .types.bigtable_table_admin import UpdateBackupRequest
117+
from .types.bigtable_table_admin import UpdateSchemaBundleMetadata
118+
from .types.bigtable_table_admin import UpdateSchemaBundleRequest
111119
from .types.bigtable_table_admin import UpdateTableMetadata
112120
from .types.bigtable_table_admin import UpdateTableRequest
113121
from .types.common import OperationProgress
@@ -127,7 +135,9 @@
127135
from .types.table import ColumnFamily
128136
from .types.table import EncryptionInfo
129137
from .types.table import GcRule
138+
from .types.table import ProtoSchema
130139
from .types.table import RestoreInfo
140+
from .types.table import SchemaBundle
131141
from .types.table import Snapshot
132142
from .types.table import Table
133143
from .types.table import RestoreSourceType
@@ -164,6 +174,8 @@
164174
"CreateLogicalViewRequest",
165175
"CreateMaterializedViewMetadata",
166176
"CreateMaterializedViewRequest",
177+
"CreateSchemaBundleMetadata",
178+
"CreateSchemaBundleRequest",
167179
"CreateTableFromSnapshotMetadata",
168180
"CreateTableFromSnapshotRequest",
169181
"CreateTableRequest",
@@ -175,6 +187,7 @@
175187
"DeleteInstanceRequest",
176188
"DeleteLogicalViewRequest",
177189
"DeleteMaterializedViewRequest",
190+
"DeleteSchemaBundleRequest",
178191
"DeleteSnapshotRequest",
179192
"DeleteTableRequest",
180193
"DropRowRangeRequest",
@@ -189,6 +202,7 @@
189202
"GetInstanceRequest",
190203
"GetLogicalViewRequest",
191204
"GetMaterializedViewRequest",
205+
"GetSchemaBundleRequest",
192206
"GetSnapshotRequest",
193207
"GetTableRequest",
194208
"HotTablet",
@@ -209,6 +223,8 @@
209223
"ListLogicalViewsResponse",
210224
"ListMaterializedViewsRequest",
211225
"ListMaterializedViewsResponse",
226+
"ListSchemaBundlesRequest",
227+
"ListSchemaBundlesResponse",
212228
"ListSnapshotsRequest",
213229
"ListSnapshotsResponse",
214230
"ListTablesRequest",
@@ -221,10 +237,12 @@
221237
"PartialUpdateClusterMetadata",
222238
"PartialUpdateClusterRequest",
223239
"PartialUpdateInstanceRequest",
240+
"ProtoSchema",
224241
"RestoreInfo",
225242
"RestoreSourceType",
226243
"RestoreTableMetadata",
227244
"RestoreTableRequest",
245+
"SchemaBundle",
228246
"Snapshot",
229247
"SnapshotTableMetadata",
230248
"SnapshotTableRequest",
@@ -245,6 +263,8 @@
245263
"UpdateLogicalViewRequest",
246264
"UpdateMaterializedViewMetadata",
247265
"UpdateMaterializedViewRequest",
266+
"UpdateSchemaBundleMetadata",
267+
"UpdateSchemaBundleRequest",
248268
"UpdateTableMetadata",
249269
"UpdateTableRequest",
250270
)

0 commit comments

Comments
 (0)