# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/bigtable/v2/bigtable.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
from google.protobuf import descriptor_pb2
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
from google.bigtable.v2 import data_pb2 as google_dot_bigtable_dot_v2_dot_data__pb2
from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2


DESCRIPTOR = _descriptor.FileDescriptor(
  name='google/bigtable/v2/bigtable.proto',
  package='google.bigtable.v2',
  syntax='proto3',
  serialized_pb=_b('\n!google/bigtable/v2/bigtable.proto\x12\x12google.bigtable.v2\x1a\x1cgoogle/api/annotations.proto\x1a\x1dgoogle/bigtable/v2/data.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x17google/rpc/status.proto\"\x92\x01\n\x0fReadRowsRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12(\n\x04rows\x18\x02 \x01(\x0b\x32\x1a.google.bigtable.v2.RowSet\x12-\n\x06\x66ilter\x18\x03 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\x12\x12\n\nrows_limit\x18\x04 \x01(\x03\"\xf8\x02\n\x10ReadRowsResponse\x12>\n\x06\x63hunks\x18\x01 \x03(\x0b\x32..google.bigtable.v2.ReadRowsResponse.CellChunk\x12\x1c\n\x14last_scanned_row_key\x18\x02 \x01(\x0c\x1a\x85\x02\n\tCellChunk\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x31\n\x0b\x66\x61mily_name\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.StringValue\x12.\n\tqualifier\x18\x03 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x12\x18\n\x10timestamp_micros\x18\x04 \x01(\x03\x12\x0e\n\x06labels\x18\x05 \x03(\t\x12\r\n\x05value\x18\x06 \x01(\x0c\x12\x12\n\nvalue_size\x18\x07 \x01(\x05\x12\x13\n\treset_row\x18\x08 \x01(\x08H\x00\x12\x14\n\ncommit_row\x18\t \x01(\x08H\x00\x42\x0c\n\nrow_status\"*\n\x14SampleRowKeysRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\">\n\x15SampleRowKeysResponse\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12\x14\n\x0coffset_bytes\x18\x02 \x01(\x03\"h\n\x10MutateRowRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x0f\n\x07row_key\x18\x02 \x01(\x0c\x12/\n\tmutations\x18\x03 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\"\x13\n\x11MutateRowResponse\"\xb0\x01\n\x11MutateRowsRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12<\n\x07\x65ntries\x18\x02 \x03(\x0b\x32+.google.bigtable.v2.MutateRowsRequest.Entry\x1aI\n\x05\x45ntry\x12\x0f\n\x07row_key\x18\x01 \x01(\x0c\x12/\n\tmutations\x18\x02 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\"\x8f\x01\n\x12MutateRowsResponse\x12=\n\x07\x65ntries\x18\x01 \x03(\x0b\x32,.google.bigtable.v2.MutateRowsResponse.Entry\x1a:\n\x05\x45ntry\x12\r\n\x05index\x18\x01 \x01(\x03\x12\"\n\x06status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"\xe5\x01\n\x18\x43heckAndMutateRowRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x0f\n\x07row_key\x18\x02 \x01(\x0c\x12\x37\n\x10predicate_filter\x18\x06 \x01(\x0b\x32\x1d.google.bigtable.v2.RowFilter\x12\x34\n\x0etrue_mutations\x18\x04 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\x12\x35\n\x0f\x66\x61lse_mutations\x18\x05 \x03(\x0b\x32\x1c.google.bigtable.v2.Mutation\"6\n\x19\x43heckAndMutateRowResponse\x12\x19\n\x11predicate_matched\x18\x01 \x01(\x08\"x\n\x19ReadModifyWriteRowRequest\x12\x12\n\ntable_name\x18\x01 \x01(\t\x12\x0f\n\x07row_key\x18\x02 \x01(\x0c\x12\x36\n\x05rules\x18\x03 \x03(\x0b\x32\'.google.bigtable.v2.ReadModifyWriteRule\"B\n\x1aReadModifyWriteRowResponse\x12$\n\x03row\x18\x01 \x01(\x0b\x32\x17.google.bigtable.v2.Row2\xad\x08\n\x08\x42igtable\x12\x9d\x01\n\x08ReadRows\x12#.google.bigtable.v2.ReadRowsRequest\x1a$.google.bigtable.v2.ReadRowsResponse\"D\x82\xd3\xe4\x93\x02>\"9/v2/{table_name=projects/*/instances/*/tables/*}:readRows:\x01*0\x01\x12\xae\x01\n\rSampleRowKeys\x12(.google.bigtable.v2.SampleRowKeysRequest\x1a).google.bigtable.v2.SampleRowKeysResponse\"F\x82\xd3\xe4\x93\x02@\x12>/v2/{table_name=projects/*/instances/*/tables/*}:sampleRowKeys0\x01\x12\x9f\x01\n\tMutateRow\x12$.google.bigtable.v2.MutateRowRequest\x1a%.google.bigtable.v2.MutateRowResponse\"E\x82\xd3\xe4\x93\x02?\":/v2/{table_name=projects/*/instances/*/tables/*}:mutateRow:\x01*\x12\xa5\x01\n\nMutateRows\x12%.google.bigtable.v2.MutateRowsRequest\x1a&.google.bigtable.v2.MutateRowsResponse\"F\x82\xd3\xe4\x93\x02@\";/v2/{table_name=projects/*/instances/*/tables/*}:mutateRows:\x01*0\x01\x12\xbf\x01\n\x11\x43heckAndMutateRow\x12,.google.bigtable.v2.CheckAndMutateRowRequest\x1a-.google.bigtable.v2.CheckAndMutateRowResponse\"M\x82\xd3\xe4\x93\x02G\"B/v2/{table_name=projects/*/instances/*/tables/*}:checkAndMutateRow:\x01*\x12\xc3\x01\n\x12ReadModifyWriteRow\x12-.google.bigtable.v2.ReadModifyWriteRowRequest\x1a..google.bigtable.v2.ReadModifyWriteRowResponse\"N\x82\xd3\xe4\x93\x02H\"C/v2/{table_name=projects/*/instances/*/tables/*}:readModifyWriteRow:\x01*B\x80\x01\n\x16\x63om.google.bigtable.v2B\rBigtableProtoP\x01Z:google.golang.org/genproto/googleapis/bigtable/v2;bigtable\xaa\x02\x18Google.Cloud.Bigtable.V2b\x06proto3')
  ,
  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_bigtable_dot_v2_dot_data__pb2.DESCRIPTOR,google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,google_dot_rpc_dot_status__pb2.DESCRIPTOR,])




_READROWSREQUEST = _descriptor.Descriptor(
  name='ReadRowsRequest',
  full_name='google.bigtable.v2.ReadRowsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='table_name', full_name='google.bigtable.v2.ReadRowsRequest.table_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='rows', full_name='google.bigtable.v2.ReadRowsRequest.rows', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='filter', full_name='google.bigtable.v2.ReadRowsRequest.filter', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='rows_limit', full_name='google.bigtable.v2.ReadRowsRequest.rows_limit', index=3,
      number=4, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=176,
  serialized_end=322,
)


_READROWSRESPONSE_CELLCHUNK = _descriptor.Descriptor(
  name='CellChunk',
  full_name='google.bigtable.v2.ReadRowsResponse.CellChunk',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='row_key', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.row_key', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='family_name', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.family_name', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='qualifier', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.qualifier', index=2,
      number=3, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='timestamp_micros', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.timestamp_micros', index=3,
      number=4, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='labels', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.labels', index=4,
      number=5, type=9, cpp_type=9, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='value', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.value', index=5,
      number=6, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='value_size', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.value_size', index=6,
      number=7, type=5, cpp_type=1, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='reset_row', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.reset_row', index=7,
      number=8, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='commit_row', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.commit_row', index=8,
      number=9, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
    _descriptor.OneofDescriptor(
      name='row_status', full_name='google.bigtable.v2.ReadRowsResponse.CellChunk.row_status',
      index=0, containing_type=None, fields=[]),
  ],
  serialized_start=440,
  serialized_end=701,
)

_READROWSRESPONSE = _descriptor.Descriptor(
  name='ReadRowsResponse',
  full_name='google.bigtable.v2.ReadRowsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='chunks', full_name='google.bigtable.v2.ReadRowsResponse.chunks', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='last_scanned_row_key', full_name='google.bigtable.v2.ReadRowsResponse.last_scanned_row_key', index=1,
      number=2, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_READROWSRESPONSE_CELLCHUNK, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=325,
  serialized_end=701,
)


_SAMPLEROWKEYSREQUEST = _descriptor.Descriptor(
  name='SampleRowKeysRequest',
  full_name='google.bigtable.v2.SampleRowKeysRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='table_name', full_name='google.bigtable.v2.SampleRowKeysRequest.table_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=703,
  serialized_end=745,
)


_SAMPLEROWKEYSRESPONSE = _descriptor.Descriptor(
  name='SampleRowKeysResponse',
  full_name='google.bigtable.v2.SampleRowKeysResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='row_key', full_name='google.bigtable.v2.SampleRowKeysResponse.row_key', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='offset_bytes', full_name='google.bigtable.v2.SampleRowKeysResponse.offset_bytes', index=1,
      number=2, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=747,
  serialized_end=809,
)


_MUTATEROWREQUEST = _descriptor.Descriptor(
  name='MutateRowRequest',
  full_name='google.bigtable.v2.MutateRowRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='table_name', full_name='google.bigtable.v2.MutateRowRequest.table_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='row_key', full_name='google.bigtable.v2.MutateRowRequest.row_key', index=1,
      number=2, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='mutations', full_name='google.bigtable.v2.MutateRowRequest.mutations', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=811,
  serialized_end=915,
)


_MUTATEROWRESPONSE = _descriptor.Descriptor(
  name='MutateRowResponse',
  full_name='google.bigtable.v2.MutateRowResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=917,
  serialized_end=936,
)


_MUTATEROWSREQUEST_ENTRY = _descriptor.Descriptor(
  name='Entry',
  full_name='google.bigtable.v2.MutateRowsRequest.Entry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='row_key', full_name='google.bigtable.v2.MutateRowsRequest.Entry.row_key', index=0,
      number=1, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='mutations', full_name='google.bigtable.v2.MutateRowsRequest.Entry.mutations', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1042,
  serialized_end=1115,
)

_MUTATEROWSREQUEST = _descriptor.Descriptor(
  name='MutateRowsRequest',
  full_name='google.bigtable.v2.MutateRowsRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='table_name', full_name='google.bigtable.v2.MutateRowsRequest.table_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='entries', full_name='google.bigtable.v2.MutateRowsRequest.entries', index=1,
      number=2, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_MUTATEROWSREQUEST_ENTRY, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=939,
  serialized_end=1115,
)


_MUTATEROWSRESPONSE_ENTRY = _descriptor.Descriptor(
  name='Entry',
  full_name='google.bigtable.v2.MutateRowsResponse.Entry',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='index', full_name='google.bigtable.v2.MutateRowsResponse.Entry.index', index=0,
      number=1, type=3, cpp_type=2, label=1,
      has_default_value=False, default_value=0,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='status', full_name='google.bigtable.v2.MutateRowsResponse.Entry.status', index=1,
      number=2, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1203,
  serialized_end=1261,
)

_MUTATEROWSRESPONSE = _descriptor.Descriptor(
  name='MutateRowsResponse',
  full_name='google.bigtable.v2.MutateRowsResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='entries', full_name='google.bigtable.v2.MutateRowsResponse.entries', index=0,
      number=1, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[_MUTATEROWSRESPONSE_ENTRY, ],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1118,
  serialized_end=1261,
)


_CHECKANDMUTATEROWREQUEST = _descriptor.Descriptor(
  name='CheckAndMutateRowRequest',
  full_name='google.bigtable.v2.CheckAndMutateRowRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='table_name', full_name='google.bigtable.v2.CheckAndMutateRowRequest.table_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='row_key', full_name='google.bigtable.v2.CheckAndMutateRowRequest.row_key', index=1,
      number=2, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='predicate_filter', full_name='google.bigtable.v2.CheckAndMutateRowRequest.predicate_filter', index=2,
      number=6, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='true_mutations', full_name='google.bigtable.v2.CheckAndMutateRowRequest.true_mutations', index=3,
      number=4, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='false_mutations', full_name='google.bigtable.v2.CheckAndMutateRowRequest.false_mutations', index=4,
      number=5, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1264,
  serialized_end=1493,
)


_CHECKANDMUTATEROWRESPONSE = _descriptor.Descriptor(
  name='CheckAndMutateRowResponse',
  full_name='google.bigtable.v2.CheckAndMutateRowResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='predicate_matched', full_name='google.bigtable.v2.CheckAndMutateRowResponse.predicate_matched', index=0,
      number=1, type=8, cpp_type=7, label=1,
      has_default_value=False, default_value=False,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1495,
  serialized_end=1549,
)


_READMODIFYWRITEROWREQUEST = _descriptor.Descriptor(
  name='ReadModifyWriteRowRequest',
  full_name='google.bigtable.v2.ReadModifyWriteRowRequest',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='table_name', full_name='google.bigtable.v2.ReadModifyWriteRowRequest.table_name', index=0,
      number=1, type=9, cpp_type=9, label=1,
      has_default_value=False, default_value=_b("").decode('utf-8'),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='row_key', full_name='google.bigtable.v2.ReadModifyWriteRowRequest.row_key', index=1,
      number=2, type=12, cpp_type=9, label=1,
      has_default_value=False, default_value=_b(""),
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
    _descriptor.FieldDescriptor(
      name='rules', full_name='google.bigtable.v2.ReadModifyWriteRowRequest.rules', index=2,
      number=3, type=11, cpp_type=10, label=3,
      has_default_value=False, default_value=[],
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1551,
  serialized_end=1671,
)


_READMODIFYWRITEROWRESPONSE = _descriptor.Descriptor(
  name='ReadModifyWriteRowResponse',
  full_name='google.bigtable.v2.ReadModifyWriteRowResponse',
  filename=None,
  file=DESCRIPTOR,
  containing_type=None,
  fields=[
    _descriptor.FieldDescriptor(
      name='row', full_name='google.bigtable.v2.ReadModifyWriteRowResponse.row', index=0,
      number=1, type=11, cpp_type=10, label=1,
      has_default_value=False, default_value=None,
      message_type=None, enum_type=None, containing_type=None,
      is_extension=False, extension_scope=None,
      options=None),
  ],
  extensions=[
  ],
  nested_types=[],
  enum_types=[
  ],
  options=None,
  is_extendable=False,
  syntax='proto3',
  extension_ranges=[],
  oneofs=[
  ],
  serialized_start=1673,
  serialized_end=1739,
)

_READROWSREQUEST.fields_by_name['rows'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._ROWSET
_READROWSREQUEST.fields_by_name['filter'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._ROWFILTER
_READROWSRESPONSE_CELLCHUNK.fields_by_name['family_name'].message_type = google_dot_protobuf_dot_wrappers__pb2._STRINGVALUE
_READROWSRESPONSE_CELLCHUNK.fields_by_name['qualifier'].message_type = google_dot_protobuf_dot_wrappers__pb2._BYTESVALUE
_READROWSRESPONSE_CELLCHUNK.containing_type = _READROWSRESPONSE
_READROWSRESPONSE_CELLCHUNK.oneofs_by_name['row_status'].fields.append(
  _READROWSRESPONSE_CELLCHUNK.fields_by_name['reset_row'])
_READROWSRESPONSE_CELLCHUNK.fields_by_name['reset_row'].containing_oneof = _READROWSRESPONSE_CELLCHUNK.oneofs_by_name['row_status']
_READROWSRESPONSE_CELLCHUNK.oneofs_by_name['row_status'].fields.append(
  _READROWSRESPONSE_CELLCHUNK.fields_by_name['commit_row'])
_READROWSRESPONSE_CELLCHUNK.fields_by_name['commit_row'].containing_oneof = _READROWSRESPONSE_CELLCHUNK.oneofs_by_name['row_status']
_READROWSRESPONSE.fields_by_name['chunks'].message_type = _READROWSRESPONSE_CELLCHUNK
_MUTATEROWREQUEST.fields_by_name['mutations'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._MUTATION
_MUTATEROWSREQUEST_ENTRY.fields_by_name['mutations'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._MUTATION
_MUTATEROWSREQUEST_ENTRY.containing_type = _MUTATEROWSREQUEST
_MUTATEROWSREQUEST.fields_by_name['entries'].message_type = _MUTATEROWSREQUEST_ENTRY
_MUTATEROWSRESPONSE_ENTRY.fields_by_name['status'].message_type = google_dot_rpc_dot_status__pb2._STATUS
_MUTATEROWSRESPONSE_ENTRY.containing_type = _MUTATEROWSRESPONSE
_MUTATEROWSRESPONSE.fields_by_name['entries'].message_type = _MUTATEROWSRESPONSE_ENTRY
_CHECKANDMUTATEROWREQUEST.fields_by_name['predicate_filter'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._ROWFILTER
_CHECKANDMUTATEROWREQUEST.fields_by_name['true_mutations'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._MUTATION
_CHECKANDMUTATEROWREQUEST.fields_by_name['false_mutations'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._MUTATION
_READMODIFYWRITEROWREQUEST.fields_by_name['rules'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._READMODIFYWRITERULE
_READMODIFYWRITEROWRESPONSE.fields_by_name['row'].message_type = google_dot_bigtable_dot_v2_dot_data__pb2._ROW
DESCRIPTOR.message_types_by_name['ReadRowsRequest'] = _READROWSREQUEST
DESCRIPTOR.message_types_by_name['ReadRowsResponse'] = _READROWSRESPONSE
DESCRIPTOR.message_types_by_name['SampleRowKeysRequest'] = _SAMPLEROWKEYSREQUEST
DESCRIPTOR.message_types_by_name['SampleRowKeysResponse'] = _SAMPLEROWKEYSRESPONSE
DESCRIPTOR.message_types_by_name['MutateRowRequest'] = _MUTATEROWREQUEST
DESCRIPTOR.message_types_by_name['MutateRowResponse'] = _MUTATEROWRESPONSE
DESCRIPTOR.message_types_by_name['MutateRowsRequest'] = _MUTATEROWSREQUEST
DESCRIPTOR.message_types_by_name['MutateRowsResponse'] = _MUTATEROWSRESPONSE
DESCRIPTOR.message_types_by_name['CheckAndMutateRowRequest'] = _CHECKANDMUTATEROWREQUEST
DESCRIPTOR.message_types_by_name['CheckAndMutateRowResponse'] = _CHECKANDMUTATEROWRESPONSE
DESCRIPTOR.message_types_by_name['ReadModifyWriteRowRequest'] = _READMODIFYWRITEROWREQUEST
DESCRIPTOR.message_types_by_name['ReadModifyWriteRowResponse'] = _READMODIFYWRITEROWRESPONSE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)

ReadRowsRequest = _reflection.GeneratedProtocolMessageType('ReadRowsRequest', (_message.Message,), dict(
  DESCRIPTOR = _READROWSREQUEST,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.ReadRowsRequest)
  ))
_sym_db.RegisterMessage(ReadRowsRequest)

ReadRowsResponse = _reflection.GeneratedProtocolMessageType('ReadRowsResponse', (_message.Message,), dict(

  CellChunk = _reflection.GeneratedProtocolMessageType('CellChunk', (_message.Message,), dict(
    DESCRIPTOR = _READROWSRESPONSE_CELLCHUNK,
    __module__ = 'google.bigtable.v2.bigtable_pb2'
    # @@protoc_insertion_point(class_scope:google.bigtable.v2.ReadRowsResponse.CellChunk)
    ))
  ,
  DESCRIPTOR = _READROWSRESPONSE,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.ReadRowsResponse)
  ))
_sym_db.RegisterMessage(ReadRowsResponse)
_sym_db.RegisterMessage(ReadRowsResponse.CellChunk)

SampleRowKeysRequest = _reflection.GeneratedProtocolMessageType('SampleRowKeysRequest', (_message.Message,), dict(
  DESCRIPTOR = _SAMPLEROWKEYSREQUEST,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.SampleRowKeysRequest)
  ))
_sym_db.RegisterMessage(SampleRowKeysRequest)

SampleRowKeysResponse = _reflection.GeneratedProtocolMessageType('SampleRowKeysResponse', (_message.Message,), dict(
  DESCRIPTOR = _SAMPLEROWKEYSRESPONSE,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.SampleRowKeysResponse)
  ))
_sym_db.RegisterMessage(SampleRowKeysResponse)

MutateRowRequest = _reflection.GeneratedProtocolMessageType('MutateRowRequest', (_message.Message,), dict(
  DESCRIPTOR = _MUTATEROWREQUEST,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.MutateRowRequest)
  ))
_sym_db.RegisterMessage(MutateRowRequest)

MutateRowResponse = _reflection.GeneratedProtocolMessageType('MutateRowResponse', (_message.Message,), dict(
  DESCRIPTOR = _MUTATEROWRESPONSE,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.MutateRowResponse)
  ))
_sym_db.RegisterMessage(MutateRowResponse)

MutateRowsRequest = _reflection.GeneratedProtocolMessageType('MutateRowsRequest', (_message.Message,), dict(

  Entry = _reflection.GeneratedProtocolMessageType('Entry', (_message.Message,), dict(
    DESCRIPTOR = _MUTATEROWSREQUEST_ENTRY,
    __module__ = 'google.bigtable.v2.bigtable_pb2'
    # @@protoc_insertion_point(class_scope:google.bigtable.v2.MutateRowsRequest.Entry)
    ))
  ,
  DESCRIPTOR = _MUTATEROWSREQUEST,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.MutateRowsRequest)
  ))
_sym_db.RegisterMessage(MutateRowsRequest)
_sym_db.RegisterMessage(MutateRowsRequest.Entry)

MutateRowsResponse = _reflection.GeneratedProtocolMessageType('MutateRowsResponse', (_message.Message,), dict(

  Entry = _reflection.GeneratedProtocolMessageType('Entry', (_message.Message,), dict(
    DESCRIPTOR = _MUTATEROWSRESPONSE_ENTRY,
    __module__ = 'google.bigtable.v2.bigtable_pb2'
    # @@protoc_insertion_point(class_scope:google.bigtable.v2.MutateRowsResponse.Entry)
    ))
  ,
  DESCRIPTOR = _MUTATEROWSRESPONSE,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.MutateRowsResponse)
  ))
_sym_db.RegisterMessage(MutateRowsResponse)
_sym_db.RegisterMessage(MutateRowsResponse.Entry)

CheckAndMutateRowRequest = _reflection.GeneratedProtocolMessageType('CheckAndMutateRowRequest', (_message.Message,), dict(
  DESCRIPTOR = _CHECKANDMUTATEROWREQUEST,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.CheckAndMutateRowRequest)
  ))
_sym_db.RegisterMessage(CheckAndMutateRowRequest)

CheckAndMutateRowResponse = _reflection.GeneratedProtocolMessageType('CheckAndMutateRowResponse', (_message.Message,), dict(
  DESCRIPTOR = _CHECKANDMUTATEROWRESPONSE,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.CheckAndMutateRowResponse)
  ))
_sym_db.RegisterMessage(CheckAndMutateRowResponse)

ReadModifyWriteRowRequest = _reflection.GeneratedProtocolMessageType('ReadModifyWriteRowRequest', (_message.Message,), dict(
  DESCRIPTOR = _READMODIFYWRITEROWREQUEST,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.ReadModifyWriteRowRequest)
  ))
_sym_db.RegisterMessage(ReadModifyWriteRowRequest)

ReadModifyWriteRowResponse = _reflection.GeneratedProtocolMessageType('ReadModifyWriteRowResponse', (_message.Message,), dict(
  DESCRIPTOR = _READMODIFYWRITEROWRESPONSE,
  __module__ = 'google.bigtable.v2.bigtable_pb2'
  # @@protoc_insertion_point(class_scope:google.bigtable.v2.ReadModifyWriteRowResponse)
  ))
_sym_db.RegisterMessage(ReadModifyWriteRowResponse)


DESCRIPTOR.has_options = True
DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\026com.google.bigtable.v2B\rBigtableProtoP\001Z:google.golang.org/genproto/googleapis/bigtable/v2;bigtable\252\002\030Google.Cloud.Bigtable.V2'))
try:
  # THESE ELEMENTS WILL BE DEPRECATED.
  # Please use the generated *_pb2_grpc.py files instead.
  import grpc
  from grpc.beta import implementations as beta_implementations
  from grpc.beta import interfaces as beta_interfaces
  from grpc.framework.common import cardinality
  from grpc.framework.interfaces.face import utilities as face_utilities


  class BigtableStub(object):
    """Service for reading from and writing to existing Bigtable tables.
    """

    def __init__(self, channel):
      """Constructor.

      Args:
        channel: A grpc.Channel.
      """
      self.ReadRows = channel.unary_stream(
          '/google.bigtable.v2.Bigtable/ReadRows',
          request_serializer=ReadRowsRequest.SerializeToString,
          response_deserializer=ReadRowsResponse.FromString,
          )
      self.SampleRowKeys = channel.unary_stream(
          '/google.bigtable.v2.Bigtable/SampleRowKeys',
          request_serializer=SampleRowKeysRequest.SerializeToString,
          response_deserializer=SampleRowKeysResponse.FromString,
          )
      self.MutateRow = channel.unary_unary(
          '/google.bigtable.v2.Bigtable/MutateRow',
          request_serializer=MutateRowRequest.SerializeToString,
          response_deserializer=MutateRowResponse.FromString,
          )
      self.MutateRows = channel.unary_stream(
          '/google.bigtable.v2.Bigtable/MutateRows',
          request_serializer=MutateRowsRequest.SerializeToString,
          response_deserializer=MutateRowsResponse.FromString,
          )
      self.CheckAndMutateRow = channel.unary_unary(
          '/google.bigtable.v2.Bigtable/CheckAndMutateRow',
          request_serializer=CheckAndMutateRowRequest.SerializeToString,
          response_deserializer=CheckAndMutateRowResponse.FromString,
          )
      self.ReadModifyWriteRow = channel.unary_unary(
          '/google.bigtable.v2.Bigtable/ReadModifyWriteRow',
          request_serializer=ReadModifyWriteRowRequest.SerializeToString,
          response_deserializer=ReadModifyWriteRowResponse.FromString,
          )


  class BigtableServicer(object):
    """Service for reading from and writing to existing Bigtable tables.
    """

    def ReadRows(self, request, context):
      """Streams back the contents of all requested rows in key order, optionally
      applying the same Reader filter to each. Depending on their size,
      rows and cells may be broken up across multiple responses, but
      atomicity of each row will still be preserved. See the
      ReadRowsResponse documentation for details.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def SampleRowKeys(self, request, context):
      """Returns a sample of row keys in the table. The returned row keys will
      delimit contiguous sections of the table of approximately equal size,
      which can be used to break up the data for distributed tasks like
      mapreduces.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def MutateRow(self, request, context):
      """Mutates a row atomically. Cells already present in the row are left
      unchanged unless explicitly changed by `mutation`.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def MutateRows(self, request, context):
      """Mutates multiple rows in a batch. Each individual row is mutated
      atomically as in MutateRow, but the entire batch is not executed
      atomically.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def CheckAndMutateRow(self, request, context):
      """Mutates a row atomically based on the output of a predicate Reader filter.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')

    def ReadModifyWriteRow(self, request, context):
      """Modifies a row atomically. The method reads the latest existing timestamp
      and value from the specified columns and writes a new entry based on
      pre-defined read/modify/write rules. The new value for the timestamp is the
      greater of the existing timestamp or the current server time. The method
      returns the new contents of all modified cells.
      """
      context.set_code(grpc.StatusCode.UNIMPLEMENTED)
      context.set_details('Method not implemented!')
      raise NotImplementedError('Method not implemented!')


  def add_BigtableServicer_to_server(servicer, server):
    rpc_method_handlers = {
        'ReadRows': grpc.unary_stream_rpc_method_handler(
            servicer.ReadRows,
            request_deserializer=ReadRowsRequest.FromString,
            response_serializer=ReadRowsResponse.SerializeToString,
        ),
        'SampleRowKeys': grpc.unary_stream_rpc_method_handler(
            servicer.SampleRowKeys,
            request_deserializer=SampleRowKeysRequest.FromString,
            response_serializer=SampleRowKeysResponse.SerializeToString,
        ),
        'MutateRow': grpc.unary_unary_rpc_method_handler(
            servicer.MutateRow,
            request_deserializer=MutateRowRequest.FromString,
            response_serializer=MutateRowResponse.SerializeToString,
        ),
        'MutateRows': grpc.unary_stream_rpc_method_handler(
            servicer.MutateRows,
            request_deserializer=MutateRowsRequest.FromString,
            response_serializer=MutateRowsResponse.SerializeToString,
        ),
        'CheckAndMutateRow': grpc.unary_unary_rpc_method_handler(
            servicer.CheckAndMutateRow,
            request_deserializer=CheckAndMutateRowRequest.FromString,
            response_serializer=CheckAndMutateRowResponse.SerializeToString,
        ),
        'ReadModifyWriteRow': grpc.unary_unary_rpc_method_handler(
            servicer.ReadModifyWriteRow,
            request_deserializer=ReadModifyWriteRowRequest.FromString,
            response_serializer=ReadModifyWriteRowResponse.SerializeToString,
        ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
        'google.bigtable.v2.Bigtable', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


  class BetaBigtableServicer(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """Service for reading from and writing to existing Bigtable tables.
    """
    def ReadRows(self, request, context):
      """Streams back the contents of all requested rows in key order, optionally
      applying the same Reader filter to each. Depending on their size,
      rows and cells may be broken up across multiple responses, but
      atomicity of each row will still be preserved. See the
      ReadRowsResponse documentation for details.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def SampleRowKeys(self, request, context):
      """Returns a sample of row keys in the table. The returned row keys will
      delimit contiguous sections of the table of approximately equal size,
      which can be used to break up the data for distributed tasks like
      mapreduces.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def MutateRow(self, request, context):
      """Mutates a row atomically. Cells already present in the row are left
      unchanged unless explicitly changed by `mutation`.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def MutateRows(self, request, context):
      """Mutates multiple rows in a batch. Each individual row is mutated
      atomically as in MutateRow, but the entire batch is not executed
      atomically.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def CheckAndMutateRow(self, request, context):
      """Mutates a row atomically based on the output of a predicate Reader filter.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
    def ReadModifyWriteRow(self, request, context):
      """Modifies a row atomically. The method reads the latest existing timestamp
      and value from the specified columns and writes a new entry based on
      pre-defined read/modify/write rules. The new value for the timestamp is the
      greater of the existing timestamp or the current server time. The method
      returns the new contents of all modified cells.
      """
      context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)


  class BetaBigtableStub(object):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This class was generated
    only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0."""
    """Service for reading from and writing to existing Bigtable tables.
    """
    def ReadRows(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Streams back the contents of all requested rows in key order, optionally
      applying the same Reader filter to each. Depending on their size,
      rows and cells may be broken up across multiple responses, but
      atomicity of each row will still be preserved. See the
      ReadRowsResponse documentation for details.
      """
      raise NotImplementedError()
    def SampleRowKeys(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Returns a sample of row keys in the table. The returned row keys will
      delimit contiguous sections of the table of approximately equal size,
      which can be used to break up the data for distributed tasks like
      mapreduces.
      """
      raise NotImplementedError()
    def MutateRow(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Mutates a row atomically. Cells already present in the row are left
      unchanged unless explicitly changed by `mutation`.
      """
      raise NotImplementedError()
    MutateRow.future = None
    def MutateRows(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Mutates multiple rows in a batch. Each individual row is mutated
      atomically as in MutateRow, but the entire batch is not executed
      atomically.
      """
      raise NotImplementedError()
    def CheckAndMutateRow(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Mutates a row atomically based on the output of a predicate Reader filter.
      """
      raise NotImplementedError()
    CheckAndMutateRow.future = None
    def ReadModifyWriteRow(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
      """Modifies a row atomically. The method reads the latest existing timestamp
      and value from the specified columns and writes a new entry based on
      pre-defined read/modify/write rules. The new value for the timestamp is the
      greater of the existing timestamp or the current server time. The method
      returns the new contents of all modified cells.
      """
      raise NotImplementedError()
    ReadModifyWriteRow.future = None


  def beta_create_Bigtable_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_deserializers = {
      ('google.bigtable.v2.Bigtable', 'CheckAndMutateRow'): CheckAndMutateRowRequest.FromString,
      ('google.bigtable.v2.Bigtable', 'MutateRow'): MutateRowRequest.FromString,
      ('google.bigtable.v2.Bigtable', 'MutateRows'): MutateRowsRequest.FromString,
      ('google.bigtable.v2.Bigtable', 'ReadModifyWriteRow'): ReadModifyWriteRowRequest.FromString,
      ('google.bigtable.v2.Bigtable', 'ReadRows'): ReadRowsRequest.FromString,
      ('google.bigtable.v2.Bigtable', 'SampleRowKeys'): SampleRowKeysRequest.FromString,
    }
    response_serializers = {
      ('google.bigtable.v2.Bigtable', 'CheckAndMutateRow'): CheckAndMutateRowResponse.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'MutateRow'): MutateRowResponse.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'MutateRows'): MutateRowsResponse.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'ReadModifyWriteRow'): ReadModifyWriteRowResponse.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'ReadRows'): ReadRowsResponse.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'SampleRowKeys'): SampleRowKeysResponse.SerializeToString,
    }
    method_implementations = {
      ('google.bigtable.v2.Bigtable', 'CheckAndMutateRow'): face_utilities.unary_unary_inline(servicer.CheckAndMutateRow),
      ('google.bigtable.v2.Bigtable', 'MutateRow'): face_utilities.unary_unary_inline(servicer.MutateRow),
      ('google.bigtable.v2.Bigtable', 'MutateRows'): face_utilities.unary_stream_inline(servicer.MutateRows),
      ('google.bigtable.v2.Bigtable', 'ReadModifyWriteRow'): face_utilities.unary_unary_inline(servicer.ReadModifyWriteRow),
      ('google.bigtable.v2.Bigtable', 'ReadRows'): face_utilities.unary_stream_inline(servicer.ReadRows),
      ('google.bigtable.v2.Bigtable', 'SampleRowKeys'): face_utilities.unary_stream_inline(servicer.SampleRowKeys),
    }
    server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
    return beta_implementations.server(method_implementations, options=server_options)


  def beta_create_Bigtable_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
    """The Beta API is deprecated for 0.15.0 and later.

    It is recommended to use the GA API (classes and functions in this
    file not marked beta) for all further purposes. This function was
    generated only to ease transition from grpcio<0.15.0 to grpcio>=0.15.0"""
    request_serializers = {
      ('google.bigtable.v2.Bigtable', 'CheckAndMutateRow'): CheckAndMutateRowRequest.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'MutateRow'): MutateRowRequest.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'MutateRows'): MutateRowsRequest.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'ReadModifyWriteRow'): ReadModifyWriteRowRequest.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'ReadRows'): ReadRowsRequest.SerializeToString,
      ('google.bigtable.v2.Bigtable', 'SampleRowKeys'): SampleRowKeysRequest.SerializeToString,
    }
    response_deserializers = {
      ('google.bigtable.v2.Bigtable', 'CheckAndMutateRow'): CheckAndMutateRowResponse.FromString,
      ('google.bigtable.v2.Bigtable', 'MutateRow'): MutateRowResponse.FromString,
      ('google.bigtable.v2.Bigtable', 'MutateRows'): MutateRowsResponse.FromString,
      ('google.bigtable.v2.Bigtable', 'ReadModifyWriteRow'): ReadModifyWriteRowResponse.FromString,
      ('google.bigtable.v2.Bigtable', 'ReadRows'): ReadRowsResponse.FromString,
      ('google.bigtable.v2.Bigtable', 'SampleRowKeys'): SampleRowKeysResponse.FromString,
    }
    cardinalities = {
      'CheckAndMutateRow': cardinality.Cardinality.UNARY_UNARY,
      'MutateRow': cardinality.Cardinality.UNARY_UNARY,
      'MutateRows': cardinality.Cardinality.UNARY_STREAM,
      'ReadModifyWriteRow': cardinality.Cardinality.UNARY_UNARY,
      'ReadRows': cardinality.Cardinality.UNARY_STREAM,
      'SampleRowKeys': cardinality.Cardinality.UNARY_STREAM,
    }
    stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
    return beta_implementations.dynamic_stub(channel, 'google.bigtable.v2.Bigtable', cardinalities, options=stub_options)
except ImportError:
  pass
# @@protoc_insertion_point(module_scope)
