Skip to content
Prev Previous commit
Next Next commit
use dicts in mutate_row
  • Loading branch information
daniel-sanche committed Oct 16, 2023
commit de89f92cf5b3fabf396f1a39f14707e9b198af61
16 changes: 7 additions & 9 deletions google/cloud/bigtable/data/_async/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -950,16 +950,8 @@ async def mutate_row(
)
_validate_timeouts(operation_timeout, attempt_timeout)

if isinstance(row_key, str):
row_key = row_key.encode("utf-8")
request = {"table_name": self.table_name, "row_key": row_key}
if self.app_profile_id:
request["app_profile_id"] = self.app_profile_id

if isinstance(mutations, Mutation):
mutations = [mutations]
request["mutations"] = [mutation._to_dict() for mutation in mutations]

if all(mutation.is_idempotent() for mutation in mutations):
# mutations are all idempotent and safe to retry
predicate = retries.if_exception_type(
Expand Down Expand Up @@ -993,7 +985,13 @@ def on_error_fn(exc):
metadata = _make_metadata(self.table_name, self.app_profile_id)
# trigger rpc
await deadline_wrapped(
request, timeout=attempt_timeout, metadata=metadata, retry=None
row_key=row_key.encode("utf-8") if isinstance(row_key, str) else row_key,
mutations=[mutation._to_pb() for mutation in mutations],
table_name=self.table_name,
app_profile_id=self.app_profile_id,
timeout=attempt_timeout,
metadata=metadata,
retry=None
)

async def bulk_mutate_rows(
Expand Down
11 changes: 5 additions & 6 deletions tests/unit/data/_async/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -2029,18 +2029,17 @@ async def test_mutate_row(self, mutation_arg):
)
assert mock_gapic.call_count == 1
kwargs = mock_gapic.call_args_list[0].kwargs
request = mock_gapic.call_args[0][0]
assert (
request["table_name"]
kwargs["table_name"]
== "projects/project/instances/instance/tables/table"
)
assert request["row_key"] == b"row_key"
assert kwargs["row_key"] == b"row_key"
formatted_mutations = (
[mutation._to_dict() for mutation in mutation_arg]
[mutation._to_pb() for mutation in mutation_arg]
if isinstance(mutation_arg, list)
else [mutation_arg._to_dict()]
else [mutation_arg._to_pb()]
)
assert request["mutations"] == formatted_mutations
assert kwargs["mutations"] == formatted_mutations
assert kwargs["timeout"] == expected_attempt_timeout
# make sure gapic layer is not retrying
assert kwargs["retry"] is None
Expand Down