diff --git a/gcloud/bigtable/happybase/table.py b/gcloud/bigtable/happybase/table.py index 531aef875b3e..9b9fe0855722 100644 --- a/gcloud/bigtable/happybase/table.py +++ b/gcloud/bigtable/happybase/table.py @@ -495,6 +495,30 @@ def counter_get(self, row, column): # is correctly initialized if didn't exist yet. return self.counter_inc(row, column, value=0) + def counter_set(self, row, column, value=0): + """Set a counter column to a specific value. + + This method is provided in HappyBase, but we do not provide it here + because it defeats the purpose of using atomic increment and decrement + of a counter. + + :type row: str + :param row: Row key for the row we are setting a counter in. + + :type column: str + :param column: Column we are setting a value in; of + the form ``fam:col``. + + :type value: int + :param value: Value to set the counter to. + + :raises: :class:`NotImplementedError ` + always + """ + raise NotImplementedError('Table.counter_set will not be implemented. ' + 'Instead use the increment/decrement ' + 'methods along with counter_get.') + def counter_inc(self, row, column, value=1): """Atomically increment a counter column. diff --git a/gcloud/bigtable/happybase/test_table.py b/gcloud/bigtable/happybase/test_table.py index c1c2ce9be248..20f874e55f94 100644 --- a/gcloud/bigtable/happybase/test_table.py +++ b/gcloud/bigtable/happybase/test_table.py @@ -539,6 +539,17 @@ def _counter_inc_helper(self, row, column, value, commit_result): self.assertEqual(row_obj.counts, {tuple(column.split(':')): incremented_value}) + def test_counter_set(self): + name = 'table-name' + connection = None + table = self._makeOne(name, connection) + + row = 'row-key' + column = 'fam:col1' + value = 42 + with self.assertRaises(NotImplementedError): + table.counter_set(row, column, value=value) + def test_counter_inc(self): import struct