code: def read_row(self, row_key, filter_=None):
          
          row_set = RowSet()
          row_set.add_row_key(row_key)
          result_iter = iter(self.read_rows(filter_=filter_, row_set=row_set))
          row = next(result_iter, None)
          if next(result_iter, None) is not None:
              raise ValueError("More than one row was returned.")
          return row
docs: Read a single row from this table.
  
          For example:
  
          .. literalinclude:: snippets_table.py
              :start-after: [START bigtable_read_row]
              :end-before: [END bigtable_read_row]
  
          :type row_key: bytes
          :param row_key: The key of the row to read from.
  
          :type filter_: :class:`.RowFilter`
          :param filter_: (Optional) The filter to apply to the contents of the
                          row. If unset, returns the entire row.
  
          :rtype: :class:`.PartialRowData`, :data:`NoneType <types.NoneType>`
          :returns: The contents of the row if any chunks were returned in
                    the response, otherwise :data:`None`.
          :raises: :class:`ValueError <exceptions.ValueError>` if a commit row
                   chunk is never encountered.