http://git-wip-us.apache.org/repos/asf/cassandra-dtest/blob/49b2dda4/thrift_bindings/thrift010/ttypes.py
----------------------------------------------------------------------
diff --git a/thrift_bindings/thrift010/ttypes.py 
b/thrift_bindings/thrift010/ttypes.py
new file mode 100644
index 0000000..c962034
--- /dev/null
+++ b/thrift_bindings/thrift010/ttypes.py
@@ -0,0 +1,4218 @@
+#
+# Autogenerated by Thrift Compiler (0.10.0)
+#
+# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+#
+#  options string: py
+#
+
+from thrift.Thrift import TType, TMessageType, TFrozenDict, TException, 
TApplicationException
+from thrift.protocol.TProtocol import TProtocolException
+import sys
+
+from thrift.transport import TTransport
+
+
+class ConsistencyLevel(object):
+    """
+    The ConsistencyLevel is an enum that controls both read and write
+    behavior based on the ReplicationFactor of the keyspace.  The
+    different consistency levels have different meanings, depending on
+    if you're doing a write or read operation.
+
+    If W + R > ReplicationFactor, where W is the number of nodes to
+    block for on write, and R the number to block for on reads, you
+    will have strongly consistent behavior; that is, readers will
+    always see the most recent write. Of these, the most interesting is
+    to do QUORUM reads and writes, which gives you consistency while
+    still allowing availability in the face of node failures up to half
+    of <ReplicationFactor>. Of course if latency is more important than
+    consistency then you can use lower values for either or both.
+
+    Some ConsistencyLevels (ONE, TWO, THREE) refer to a specific number
+    of replicas rather than a logical concept that adjusts
+    automatically with the replication factor.  Of these, only ONE is
+    commonly used; TWO and (even more rarely) THREE are only useful
+    when you care more about guaranteeing a certain level of
+    durability, than consistency.
+
+    Write consistency levels make the following guarantees before reporting 
success to the client:
+      ANY          Ensure that the write has been written once somewhere, 
including possibly being hinted in a non-target node.
+      ONE          Ensure that the write has been written to at least 1 node's 
commit log and memory table
+      TWO          Ensure that the write has been written to at least 2 node's 
commit log and memory table
+      THREE        Ensure that the write has been written to at least 3 node's 
commit log and memory table
+      QUORUM       Ensure that the write has been written to 
<ReplicationFactor> / 2 + 1 nodes
+      LOCAL_ONE    Ensure that the write has been written to 1 node within the 
local datacenter (requires NetworkTopologyStrategy)
+      LOCAL_QUORUM Ensure that the write has been written to 
<ReplicationFactor> / 2 + 1 nodes, within the local datacenter (requires 
NetworkTopologyStrategy)
+      EACH_QUORUM  Ensure that the write has been written to 
<ReplicationFactor> / 2 + 1 nodes in each datacenter (requires 
NetworkTopologyStrategy)
+      ALL          Ensure that the write is written to 
<code>&lt;ReplicationFactor&gt;</code> nodes before responding to the client.
+
+    Read consistency levels make the following guarantees before returning 
successful results to the client:
+      ANY          Not supported. You probably want ONE instead.
+      ONE          Returns the record obtained from a single replica.
+      TWO          Returns the record with the most recent timestamp once two 
replicas have replied.
+      THREE        Returns the record with the most recent timestamp once 
three replicas have replied.
+      QUORUM       Returns the record with the most recent timestamp once a 
majority of replicas have replied.
+      LOCAL_ONE    Returns the record with the most recent timestamp once a 
single replica within the local datacenter have replied.
+      LOCAL_QUORUM Returns the record with the most recent timestamp once a 
majority of replicas within the local datacenter have replied.
+      EACH_QUORUM  Returns the record with the most recent timestamp once a 
majority of replicas within each datacenter have replied.
+      ALL          Returns the record with the most recent timestamp once all 
replicas have replied (implies no replica may be down)..
+    """
+    ONE = 1
+    QUORUM = 2
+    LOCAL_QUORUM = 3
+    EACH_QUORUM = 4
+    ALL = 5
+    ANY = 6
+    TWO = 7
+    THREE = 8
+    SERIAL = 9
+    LOCAL_SERIAL = 10
+    LOCAL_ONE = 11
+
+    _VALUES_TO_NAMES = {
+        1: "ONE",
+        2: "QUORUM",
+        3: "LOCAL_QUORUM",
+        4: "EACH_QUORUM",
+        5: "ALL",
+        6: "ANY",
+        7: "TWO",
+        8: "THREE",
+        9: "SERIAL",
+        10: "LOCAL_SERIAL",
+        11: "LOCAL_ONE",
+    }
+
+    _NAMES_TO_VALUES = {
+        "ONE": 1,
+        "QUORUM": 2,
+        "LOCAL_QUORUM": 3,
+        "EACH_QUORUM": 4,
+        "ALL": 5,
+        "ANY": 6,
+        "TWO": 7,
+        "THREE": 8,
+        "SERIAL": 9,
+        "LOCAL_SERIAL": 10,
+        "LOCAL_ONE": 11,
+    }
+
+
+class IndexOperator(object):
+    EQ = 0
+    GTE = 1
+    GT = 2
+    LTE = 3
+    LT = 4
+
+    _VALUES_TO_NAMES = {
+        0: "EQ",
+        1: "GTE",
+        2: "GT",
+        3: "LTE",
+        4: "LT",
+    }
+
+    _NAMES_TO_VALUES = {
+        "EQ": 0,
+        "GTE": 1,
+        "GT": 2,
+        "LTE": 3,
+        "LT": 4,
+    }
+
+
+class IndexType(object):
+    KEYS = 0
+    CUSTOM = 1
+    COMPOSITES = 2
+
+    _VALUES_TO_NAMES = {
+        0: "KEYS",
+        1: "CUSTOM",
+        2: "COMPOSITES",
+    }
+
+    _NAMES_TO_VALUES = {
+        "KEYS": 0,
+        "CUSTOM": 1,
+        "COMPOSITES": 2,
+    }
+
+
+class Compression(object):
+    """
+    CQL query compression
+    """
+    GZIP = 1
+    NONE = 2
+
+    _VALUES_TO_NAMES = {
+        1: "GZIP",
+        2: "NONE",
+    }
+
+    _NAMES_TO_VALUES = {
+        "GZIP": 1,
+        "NONE": 2,
+    }
+
+
+class CqlResultType(object):
+    ROWS = 1
+    VOID = 2
+    INT = 3
+
+    _VALUES_TO_NAMES = {
+        1: "ROWS",
+        2: "VOID",
+        3: "INT",
+    }
+
+    _NAMES_TO_VALUES = {
+        "ROWS": 1,
+        "VOID": 2,
+        "INT": 3,
+    }
+
+
+class Column(object):
+    """
+    Basic unit of data within a ColumnFamily.
+    @param name, the name by which this column is set and retrieved.  Maximum 
64KB long.
+    @param value. The data associated with the name.  Maximum 2GB long, but in 
practice you should limit it to small numbers of MB (since Thrift must read the 
full value into memory to operate on it).
+    @param timestamp. The timestamp is used for conflict detection/resolution 
when two columns with same name need to be compared.
+    @param ttl. An optional, positive delay (in seconds) after which the 
column will be automatically deleted.
+
+    Attributes:
+     - name
+     - value
+     - timestamp
+     - ttl
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'name', 'BINARY', None, ),  # 1
+        (2, TType.STRING, 'value', 'BINARY', None, ),  # 2
+        (3, TType.I64, 'timestamp', None, None, ),  # 3
+        (4, TType.I32, 'ttl', None, None, ),  # 4
+    )
+
+    def __init__(self, name=None, value=None, timestamp=None, ttl=None,):
+        self.name = name
+        self.value = value
+        self.timestamp = timestamp
+        self.ttl = ttl
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.name = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.value = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I32:
+                    self.ttl = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('Column')
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 1)
+            oprot.writeBinary(self.name)
+            oprot.writeFieldEnd()
+        if self.value is not None:
+            oprot.writeFieldBegin('value', TType.STRING, 2)
+            oprot.writeBinary(self.value)
+            oprot.writeFieldEnd()
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 3)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.ttl is not None:
+            oprot.writeFieldBegin('ttl', TType.I32, 4)
+            oprot.writeI32(self.ttl)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.name is None:
+            raise TProtocolException(message='Required field name is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class SuperColumn(object):
+    """
+    A named list of columns.
+    @param name. see Column.name.
+    @param columns. A collection of standard Columns.  The columns within a 
super column are defined in an adhoc manner.
+                    Columns within a super column do not have to have matching 
structures (similarly named child columns).
+
+    Attributes:
+     - name
+     - columns
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'name', 'BINARY', None, ),  # 1
+        (2, TType.LIST, 'columns', (TType.STRUCT, (Column, 
Column.thrift_spec), False), None, ),  # 2
+    )
+
+    def __init__(self, name=None, columns=None,):
+        self.name = name
+        self.columns = columns
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.name = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype3, _size0) = iprot.readListBegin()
+                    for _i4 in range(_size0):
+                        _elem5 = Column()
+                        _elem5.read(iprot)
+                        self.columns.append(_elem5)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('SuperColumn')
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 1)
+            oprot.writeBinary(self.name)
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.columns))
+            for iter6 in self.columns:
+                iter6.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.name is None:
+            raise TProtocolException(message='Required field name is unset!')
+        if self.columns is None:
+            raise TProtocolException(message='Required field columns is 
unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class CounterColumn(object):
+    """
+    Attributes:
+     - name
+     - value
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'name', 'BINARY', None, ),  # 1
+        (2, TType.I64, 'value', None, None, ),  # 2
+    )
+
+    def __init__(self, name=None, value=None,):
+        self.name = name
+        self.value = value
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.name = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.I64:
+                    self.value = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('CounterColumn')
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 1)
+            oprot.writeBinary(self.name)
+            oprot.writeFieldEnd()
+        if self.value is not None:
+            oprot.writeFieldBegin('value', TType.I64, 2)
+            oprot.writeI64(self.value)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.name is None:
+            raise TProtocolException(message='Required field name is unset!')
+        if self.value is None:
+            raise TProtocolException(message='Required field value is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class CounterSuperColumn(object):
+    """
+    Attributes:
+     - name
+     - columns
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'name', 'BINARY', None, ),  # 1
+        (2, TType.LIST, 'columns', (TType.STRUCT, (CounterColumn, 
CounterColumn.thrift_spec), False), None, ),  # 2
+    )
+
+    def __init__(self, name=None, columns=None,):
+        self.name = name
+        self.columns = columns
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.name = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype10, _size7) = iprot.readListBegin()
+                    for _i11 in range(_size7):
+                        _elem12 = CounterColumn()
+                        _elem12.read(iprot)
+                        self.columns.append(_elem12)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('CounterSuperColumn')
+        if self.name is not None:
+            oprot.writeFieldBegin('name', TType.STRING, 1)
+            oprot.writeBinary(self.name)
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.columns))
+            for iter13 in self.columns:
+                iter13.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.name is None:
+            raise TProtocolException(message='Required field name is unset!')
+        if self.columns is None:
+            raise TProtocolException(message='Required field columns is 
unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class ColumnOrSuperColumn(object):
+    """
+    Methods for fetching rows/records from Cassandra will return either a 
single instance of ColumnOrSuperColumn or a list
+    of ColumnOrSuperColumns (get_slice()). If you're looking up a SuperColumn 
(or list of SuperColumns) then the resulting
+    instances of ColumnOrSuperColumn will have the requested SuperColumn in 
the attribute super_column. For queries resulting
+    in Columns, those values will be in the attribute column. This change was 
made between 0.3 and 0.4 to standardize on
+    single query methods that may return either a SuperColumn or Column.
+
+    If the query was on a counter column family, you will either get a 
counter_column (instead of a column) or a
+    counter_super_column (instead of a super_column)
+
+    @param column. The Column returned by get() or get_slice().
+    @param super_column. The SuperColumn returned by get() or get_slice().
+    @param counter_column. The Counterolumn returned by get() or get_slice().
+    @param counter_super_column. The CounterSuperColumn returned by get() or 
get_slice().
+
+    Attributes:
+     - column
+     - super_column
+     - counter_column
+     - counter_super_column
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'column', (Column, Column.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'super_column', (SuperColumn, 
SuperColumn.thrift_spec), None, ),  # 2
+        (3, TType.STRUCT, 'counter_column', (CounterColumn, 
CounterColumn.thrift_spec), None, ),  # 3
+        (4, TType.STRUCT, 'counter_super_column', (CounterSuperColumn, 
CounterSuperColumn.thrift_spec), None, ),  # 4
+    )
+
+    def __init__(self, column=None, super_column=None, counter_column=None, 
counter_super_column=None,):
+        self.column = column
+        self.super_column = super_column
+        self.counter_column = counter_column
+        self.counter_super_column = counter_super_column
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.column = Column()
+                    self.column.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.super_column = SuperColumn()
+                    self.super_column.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.counter_column = CounterColumn()
+                    self.counter_column.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRUCT:
+                    self.counter_super_column = CounterSuperColumn()
+                    self.counter_super_column.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('ColumnOrSuperColumn')
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRUCT, 1)
+            self.column.write(oprot)
+            oprot.writeFieldEnd()
+        if self.super_column is not None:
+            oprot.writeFieldBegin('super_column', TType.STRUCT, 2)
+            self.super_column.write(oprot)
+            oprot.writeFieldEnd()
+        if self.counter_column is not None:
+            oprot.writeFieldBegin('counter_column', TType.STRUCT, 3)
+            self.counter_column.write(oprot)
+            oprot.writeFieldEnd()
+        if self.counter_super_column is not None:
+            oprot.writeFieldBegin('counter_super_column', TType.STRUCT, 4)
+            self.counter_super_column.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class NotFoundException(TException):
+    """
+    A specific column was requested that does not exist.
+    """
+
+    thrift_spec = (
+    )
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('NotFoundException')
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class InvalidRequestException(TException):
+    """
+    Invalid request could mean keyspace or column family does not exist, 
required parameters are missing, or a parameter is malformed.
+    why contains an associated error message.
+
+    Attributes:
+     - why
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'why', 'UTF8', None, ),  # 1
+    )
+
+    def __init__(self, why=None,):
+        self.why = why
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.why = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('InvalidRequestException')
+        if self.why is not None:
+            oprot.writeFieldBegin('why', TType.STRING, 1)
+            oprot.writeString(self.why.encode('utf-8') if sys.version_info[0] 
== 2 else self.why)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.why is None:
+            raise TProtocolException(message='Required field why is unset!')
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class UnavailableException(TException):
+    """
+    Not all the replicas required could be created and/or read.
+    """
+
+    thrift_spec = (
+    )
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('UnavailableException')
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class TimedOutException(TException):
+    """
+    RPC timeout was exceeded.  either a node failed mid-operation, or load was 
too high, or the requested op was too large.
+
+    Attributes:
+     - acknowledged_by: if a write operation was acknowledged by some replicas 
but not by enough to
+    satisfy the required ConsistencyLevel, the number of successful
+    replies will be given here. In case of atomic_batch_mutate method this 
field
+    will be set to -1 if the batch was written to the batchlog and to 0 if it 
wasn't.
+     - acknowledged_by_batchlog: in case of atomic_batch_mutate method this 
field tells if the batch
+    was written to the batchlog.
+     - paxos_in_progress: for the CAS method, this field tells if we timed out 
during the paxos
+    protocol, as opposed to during the commit of our update
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.I32, 'acknowledged_by', None, None, ),  # 1
+        (2, TType.BOOL, 'acknowledged_by_batchlog', None, None, ),  # 2
+        (3, TType.BOOL, 'paxos_in_progress', None, None, ),  # 3
+    )
+
+    def __init__(self, acknowledged_by=None, acknowledged_by_batchlog=None, 
paxos_in_progress=None,):
+        self.acknowledged_by = acknowledged_by
+        self.acknowledged_by_batchlog = acknowledged_by_batchlog
+        self.paxos_in_progress = paxos_in_progress
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.I32:
+                    self.acknowledged_by = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.BOOL:
+                    self.acknowledged_by_batchlog = iprot.readBool()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.BOOL:
+                    self.paxos_in_progress = iprot.readBool()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('TimedOutException')
+        if self.acknowledged_by is not None:
+            oprot.writeFieldBegin('acknowledged_by', TType.I32, 1)
+            oprot.writeI32(self.acknowledged_by)
+            oprot.writeFieldEnd()
+        if self.acknowledged_by_batchlog is not None:
+            oprot.writeFieldBegin('acknowledged_by_batchlog', TType.BOOL, 2)
+            oprot.writeBool(self.acknowledged_by_batchlog)
+            oprot.writeFieldEnd()
+        if self.paxos_in_progress is not None:
+            oprot.writeFieldBegin('paxos_in_progress', TType.BOOL, 3)
+            oprot.writeBool(self.paxos_in_progress)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class AuthenticationException(TException):
+    """
+    invalid authentication request (invalid keyspace, user does not exist, or 
credentials invalid)
+
+    Attributes:
+     - why
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'why', 'UTF8', None, ),  # 1
+    )
+
+    def __init__(self, why=None,):
+        self.why = why
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.why = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('AuthenticationException')
+        if self.why is not None:
+            oprot.writeFieldBegin('why', TType.STRING, 1)
+            oprot.writeString(self.why.encode('utf-8') if sys.version_info[0] 
== 2 else self.why)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.why is None:
+            raise TProtocolException(message='Required field why is unset!')
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class AuthorizationException(TException):
+    """
+    invalid authorization request (user does not have access to keyspace)
+
+    Attributes:
+     - why
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'why', 'UTF8', None, ),  # 1
+    )
+
+    def __init__(self, why=None,):
+        self.why = why
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.why = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('AuthorizationException')
+        if self.why is not None:
+            oprot.writeFieldBegin('why', TType.STRING, 1)
+            oprot.writeString(self.why.encode('utf-8') if sys.version_info[0] 
== 2 else self.why)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.why is None:
+            raise TProtocolException(message='Required field why is unset!')
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class SchemaDisagreementException(TException):
+    """
+    NOTE: This up outdated exception left for backward compatibility reasons,
+    no actual schema agreement validation is done starting from Cassandra 1.2
+
+    schemas are not in agreement across all nodes
+    """
+
+    thrift_spec = (
+    )
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('SchemaDisagreementException')
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __str__(self):
+        return repr(self)
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class ColumnParent(object):
+    """
+    ColumnParent is used when selecting groups of columns from the same 
ColumnFamily. In directory structure terms, imagine
+    ColumnParent as ColumnPath + '/../'.
+
+    See also <a href="cassandra.html#Struct_ColumnPath">ColumnPath</a>
+
+    Attributes:
+     - column_family
+     - super_column
+    """
+
+    thrift_spec = (
+        None,  # 0
+        None,  # 1
+        None,  # 2
+        (3, TType.STRING, 'column_family', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'super_column', 'BINARY', None, ),  # 4
+    )
+
+    def __init__(self, column_family=None, super_column=None,):
+        self.column_family = column_family
+        self.super_column = super_column
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 3:
+                if ftype == TType.STRING:
+                    self.column_family = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.super_column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('ColumnParent')
+        if self.column_family is not None:
+            oprot.writeFieldBegin('column_family', TType.STRING, 3)
+            oprot.writeString(self.column_family.encode('utf-8') if 
sys.version_info[0] == 2 else self.column_family)
+            oprot.writeFieldEnd()
+        if self.super_column is not None:
+            oprot.writeFieldBegin('super_column', TType.STRING, 4)
+            oprot.writeBinary(self.super_column)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.column_family is None:
+            raise TProtocolException(message='Required field column_family is 
unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class ColumnPath(object):
+    """
+    The ColumnPath is the path to a single column in Cassandra. It might make 
sense to think of ColumnPath and
+    ColumnParent in terms of a directory structure.
+
+    ColumnPath is used to looking up a single column.
+
+    @param column_family. The name of the CF of the column being looked up.
+    @param super_column. The super column name.
+    @param column. The column name.
+
+    Attributes:
+     - column_family
+     - super_column
+     - column
+    """
+
+    thrift_spec = (
+        None,  # 0
+        None,  # 1
+        None,  # 2
+        (3, TType.STRING, 'column_family', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'super_column', 'BINARY', None, ),  # 4
+        (5, TType.STRING, 'column', 'BINARY', None, ),  # 5
+    )
+
+    def __init__(self, column_family=None, super_column=None, column=None,):
+        self.column_family = column_family
+        self.super_column = super_column
+        self.column = column
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 3:
+                if ftype == TType.STRING:
+                    self.column_family = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.super_column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.STRING:
+                    self.column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('ColumnPath')
+        if self.column_family is not None:
+            oprot.writeFieldBegin('column_family', TType.STRING, 3)
+            oprot.writeString(self.column_family.encode('utf-8') if 
sys.version_info[0] == 2 else self.column_family)
+            oprot.writeFieldEnd()
+        if self.super_column is not None:
+            oprot.writeFieldBegin('super_column', TType.STRING, 4)
+            oprot.writeBinary(self.super_column)
+            oprot.writeFieldEnd()
+        if self.column is not None:
+            oprot.writeFieldBegin('column', TType.STRING, 5)
+            oprot.writeBinary(self.column)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.column_family is None:
+            raise TProtocolException(message='Required field column_family is 
unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class SliceRange(object):
+    """
+    A slice range is a structure that stores basic range, ordering and limit 
information for a query that will return
+    multiple columns. It could be thought of as Cassandra's version of LIMIT 
and ORDER BY
+
+    @param start. The column name to start the slice with. This attribute is 
not required, though there is no default value,
+                  and can be safely set to '', i.e., an empty byte array, to 
start with the first column name. Otherwise, it
+                  must a valid value under the rules of the Comparator defined 
for the given ColumnFamily.
+    @param finish. The column name to stop the slice at. This attribute is not 
required, though there is no default value,
+                   and can be safely set to an empty byte array to not stop 
until 'count' results are seen. Otherwise, it
+                   must also be a valid value to the ColumnFamily Comparator.
+    @param reversed. Whether the results should be ordered in reversed order. 
Similar to ORDER BY blah DESC in SQL.
+    @param count. How many columns to return. Similar to LIMIT in SQL. May be 
arbitrarily large, but Thrift will
+                  materialize the whole result into memory before returning it 
to the client, so be aware that you may
+                  be better served by iterating through slices by passing the 
last value of one call in as the 'start'
+                  of the next instead of increasing 'count' arbitrarily large.
+
+    Attributes:
+     - start
+     - finish
+     - reversed
+     - count
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'start', 'BINARY', None, ),  # 1
+        (2, TType.STRING, 'finish', 'BINARY', None, ),  # 2
+        (3, TType.BOOL, 'reversed', None, False, ),  # 3
+        (4, TType.I32, 'count', None, 100, ),  # 4
+    )
+
+    def __init__(self, start=None, finish=None, reversed=thrift_spec[3][4], 
count=thrift_spec[4][4],):
+        self.start = start
+        self.finish = finish
+        self.reversed = reversed
+        self.count = count
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.start = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.finish = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.BOOL:
+                    self.reversed = iprot.readBool()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.I32:
+                    self.count = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('SliceRange')
+        if self.start is not None:
+            oprot.writeFieldBegin('start', TType.STRING, 1)
+            oprot.writeBinary(self.start)
+            oprot.writeFieldEnd()
+        if self.finish is not None:
+            oprot.writeFieldBegin('finish', TType.STRING, 2)
+            oprot.writeBinary(self.finish)
+            oprot.writeFieldEnd()
+        if self.reversed is not None:
+            oprot.writeFieldBegin('reversed', TType.BOOL, 3)
+            oprot.writeBool(self.reversed)
+            oprot.writeFieldEnd()
+        if self.count is not None:
+            oprot.writeFieldBegin('count', TType.I32, 4)
+            oprot.writeI32(self.count)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.start is None:
+            raise TProtocolException(message='Required field start is unset!')
+        if self.finish is None:
+            raise TProtocolException(message='Required field finish is unset!')
+        if self.reversed is None:
+            raise TProtocolException(message='Required field reversed is 
unset!')
+        if self.count is None:
+            raise TProtocolException(message='Required field count is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class SlicePredicate(object):
+    """
+    A SlicePredicate is similar to a mathematic predicate (see 
http://en.wikipedia.org/wiki/Predicate_(mathematical_logic)),
+    which is described as "a property that the elements of a set have in 
common."
+
+    SlicePredicate's in Cassandra are described with either a list of 
column_names or a SliceRange.  If column_names is
+    specified, slice_range is ignored.
+
+    @param column_name. A list of column names to retrieve. This can be used 
similar to Memcached's "multi-get" feature
+                        to fetch N known column names. For instance, if you 
know you wish to fetch columns 'Joe', 'Jack',
+                        and 'Jim' you can pass those column names as a list to 
fetch all three at once.
+    @param slice_range. A SliceRange describing how to range, order, and/or 
limit the slice.
+
+    Attributes:
+     - column_names
+     - slice_range
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.LIST, 'column_names', (TType.STRING, 'BINARY', False), None, 
),  # 1
+        (2, TType.STRUCT, 'slice_range', (SliceRange, SliceRange.thrift_spec), 
None, ),  # 2
+    )
+
+    def __init__(self, column_names=None, slice_range=None,):
+        self.column_names = column_names
+        self.slice_range = slice_range
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.LIST:
+                    self.column_names = []
+                    (_etype17, _size14) = iprot.readListBegin()
+                    for _i18 in range(_size14):
+                        _elem19 = iprot.readBinary()
+                        self.column_names.append(_elem19)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.slice_range = SliceRange()
+                    self.slice_range.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('SlicePredicate')
+        if self.column_names is not None:
+            oprot.writeFieldBegin('column_names', TType.LIST, 1)
+            oprot.writeListBegin(TType.STRING, len(self.column_names))
+            for iter20 in self.column_names:
+                oprot.writeBinary(iter20)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.slice_range is not None:
+            oprot.writeFieldBegin('slice_range', TType.STRUCT, 2)
+            self.slice_range.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class IndexExpression(object):
+    """
+    Attributes:
+     - column_name
+     - op
+     - value
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'column_name', 'BINARY', None, ),  # 1
+        (2, TType.I32, 'op', None, None, ),  # 2
+        (3, TType.STRING, 'value', 'BINARY', None, ),  # 3
+    )
+
+    def __init__(self, column_name=None, op=None, value=None,):
+        self.column_name = column_name
+        self.op = op
+        self.value = value
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.column_name = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.I32:
+                    self.op = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.value = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('IndexExpression')
+        if self.column_name is not None:
+            oprot.writeFieldBegin('column_name', TType.STRING, 1)
+            oprot.writeBinary(self.column_name)
+            oprot.writeFieldEnd()
+        if self.op is not None:
+            oprot.writeFieldBegin('op', TType.I32, 2)
+            oprot.writeI32(self.op)
+            oprot.writeFieldEnd()
+        if self.value is not None:
+            oprot.writeFieldBegin('value', TType.STRING, 3)
+            oprot.writeBinary(self.value)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.column_name is None:
+            raise TProtocolException(message='Required field column_name is 
unset!')
+        if self.op is None:
+            raise TProtocolException(message='Required field op is unset!')
+        if self.value is None:
+            raise TProtocolException(message='Required field value is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class IndexClause(object):
+    """
+    @deprecated use a KeyRange with row_filter in get_range_slices instead
+
+    Attributes:
+     - expressions
+     - start_key
+     - count
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.LIST, 'expressions', (TType.STRUCT, (IndexExpression, 
IndexExpression.thrift_spec), False), None, ),  # 1
+        (2, TType.STRING, 'start_key', 'BINARY', None, ),  # 2
+        (3, TType.I32, 'count', None, 100, ),  # 3
+    )
+
+    def __init__(self, expressions=None, start_key=None, 
count=thrift_spec[3][4],):
+        self.expressions = expressions
+        self.start_key = start_key
+        self.count = count
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.LIST:
+                    self.expressions = []
+                    (_etype24, _size21) = iprot.readListBegin()
+                    for _i25 in range(_size21):
+                        _elem26 = IndexExpression()
+                        _elem26.read(iprot)
+                        self.expressions.append(_elem26)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.start_key = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.I32:
+                    self.count = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('IndexClause')
+        if self.expressions is not None:
+            oprot.writeFieldBegin('expressions', TType.LIST, 1)
+            oprot.writeListBegin(TType.STRUCT, len(self.expressions))
+            for iter27 in self.expressions:
+                iter27.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        if self.start_key is not None:
+            oprot.writeFieldBegin('start_key', TType.STRING, 2)
+            oprot.writeBinary(self.start_key)
+            oprot.writeFieldEnd()
+        if self.count is not None:
+            oprot.writeFieldBegin('count', TType.I32, 3)
+            oprot.writeI32(self.count)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.expressions is None:
+            raise TProtocolException(message='Required field expressions is 
unset!')
+        if self.start_key is None:
+            raise TProtocolException(message='Required field start_key is 
unset!')
+        if self.count is None:
+            raise TProtocolException(message='Required field count is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class KeyRange(object):
+    """
+    The semantics of start keys and tokens are slightly different.
+    Keys are start-inclusive; tokens are start-exclusive.  Token
+    ranges may also wrap -- that is, the end token may be less
+    than the start one.  Thus, a range from keyX to keyX is a
+    one-element range, but a range from tokenY to tokenY is the
+    full ring.
+
+    Attributes:
+     - start_key
+     - end_key
+     - start_token
+     - end_token
+     - row_filter
+     - count
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'start_key', 'BINARY', None, ),  # 1
+        (2, TType.STRING, 'end_key', 'BINARY', None, ),  # 2
+        (3, TType.STRING, 'start_token', 'UTF8', None, ),  # 3
+        (4, TType.STRING, 'end_token', 'UTF8', None, ),  # 4
+        (5, TType.I32, 'count', None, 100, ),  # 5
+        (6, TType.LIST, 'row_filter', (TType.STRUCT, (IndexExpression, 
IndexExpression.thrift_spec), False), None, ),  # 6
+    )
+
+    def __init__(self, start_key=None, end_key=None, start_token=None, 
end_token=None, row_filter=None, count=thrift_spec[5][4],):
+        self.start_key = start_key
+        self.end_key = end_key
+        self.start_token = start_token
+        self.end_token = end_token
+        self.row_filter = row_filter
+        self.count = count
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.start_key = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.end_key = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.start_token = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 4:
+                if ftype == TType.STRING:
+                    self.end_token = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 6:
+                if ftype == TType.LIST:
+                    self.row_filter = []
+                    (_etype31, _size28) = iprot.readListBegin()
+                    for _i32 in range(_size28):
+                        _elem33 = IndexExpression()
+                        _elem33.read(iprot)
+                        self.row_filter.append(_elem33)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 5:
+                if ftype == TType.I32:
+                    self.count = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('KeyRange')
+        if self.start_key is not None:
+            oprot.writeFieldBegin('start_key', TType.STRING, 1)
+            oprot.writeBinary(self.start_key)
+            oprot.writeFieldEnd()
+        if self.end_key is not None:
+            oprot.writeFieldBegin('end_key', TType.STRING, 2)
+            oprot.writeBinary(self.end_key)
+            oprot.writeFieldEnd()
+        if self.start_token is not None:
+            oprot.writeFieldBegin('start_token', TType.STRING, 3)
+            oprot.writeString(self.start_token.encode('utf-8') if 
sys.version_info[0] == 2 else self.start_token)
+            oprot.writeFieldEnd()
+        if self.end_token is not None:
+            oprot.writeFieldBegin('end_token', TType.STRING, 4)
+            oprot.writeString(self.end_token.encode('utf-8') if 
sys.version_info[0] == 2 else self.end_token)
+            oprot.writeFieldEnd()
+        if self.count is not None:
+            oprot.writeFieldBegin('count', TType.I32, 5)
+            oprot.writeI32(self.count)
+            oprot.writeFieldEnd()
+        if self.row_filter is not None:
+            oprot.writeFieldBegin('row_filter', TType.LIST, 6)
+            oprot.writeListBegin(TType.STRUCT, len(self.row_filter))
+            for iter34 in self.row_filter:
+                iter34.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.count is None:
+            raise TProtocolException(message='Required field count is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class KeySlice(object):
+    """
+    A KeySlice is key followed by the data it maps to. A collection of 
KeySlice is returned by the get_range_slice operation.
+
+    @param key. a row key
+    @param columns. List of data represented by the key. Typically, the list 
is pared down to only the columns specified by
+                    a SlicePredicate.
+
+    Attributes:
+     - key
+     - columns
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'key', 'BINARY', None, ),  # 1
+        (2, TType.LIST, 'columns', (TType.STRUCT, (ColumnOrSuperColumn, 
ColumnOrSuperColumn.thrift_spec), False), None, ),  # 2
+    )
+
+    def __init__(self, key=None, columns=None,):
+        self.key = key
+        self.columns = columns
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.key = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.columns = []
+                    (_etype38, _size35) = iprot.readListBegin()
+                    for _i39 in range(_size35):
+                        _elem40 = ColumnOrSuperColumn()
+                        _elem40.read(iprot)
+                        self.columns.append(_elem40)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('KeySlice')
+        if self.key is not None:
+            oprot.writeFieldBegin('key', TType.STRING, 1)
+            oprot.writeBinary(self.key)
+            oprot.writeFieldEnd()
+        if self.columns is not None:
+            oprot.writeFieldBegin('columns', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.columns))
+            for iter41 in self.columns:
+                iter41.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.key is None:
+            raise TProtocolException(message='Required field key is unset!')
+        if self.columns is None:
+            raise TProtocolException(message='Required field columns is 
unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class KeyCount(object):
+    """
+    Attributes:
+     - key
+     - count
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'key', 'BINARY', None, ),  # 1
+        (2, TType.I32, 'count', None, None, ),  # 2
+    )
+
+    def __init__(self, key=None, count=None,):
+        self.key = key
+        self.count = count
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.key = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.I32:
+                    self.count = iprot.readI32()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('KeyCount')
+        if self.key is not None:
+            oprot.writeFieldBegin('key', TType.STRING, 1)
+            oprot.writeBinary(self.key)
+            oprot.writeFieldEnd()
+        if self.count is not None:
+            oprot.writeFieldBegin('count', TType.I32, 2)
+            oprot.writeI32(self.count)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.key is None:
+            raise TProtocolException(message='Required field key is unset!')
+        if self.count is None:
+            raise TProtocolException(message='Required field count is unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class Deletion(object):
+    """
+    Note that the timestamp is only optional in case of counter deletion.
+
+    Attributes:
+     - timestamp
+     - super_column
+     - predicate
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.I64, 'timestamp', None, None, ),  # 1
+        (2, TType.STRING, 'super_column', 'BINARY', None, ),  # 2
+        (3, TType.STRUCT, 'predicate', (SlicePredicate, 
SlicePredicate.thrift_spec), None, ),  # 3
+    )
+
+    def __init__(self, timestamp=None, super_column=None, predicate=None,):
+        self.timestamp = timestamp
+        self.super_column = super_column
+        self.predicate = predicate
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.I64:
+                    self.timestamp = iprot.readI64()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.super_column = iprot.readBinary()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRUCT:
+                    self.predicate = SlicePredicate()
+                    self.predicate.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('Deletion')
+        if self.timestamp is not None:
+            oprot.writeFieldBegin('timestamp', TType.I64, 1)
+            oprot.writeI64(self.timestamp)
+            oprot.writeFieldEnd()
+        if self.super_column is not None:
+            oprot.writeFieldBegin('super_column', TType.STRING, 2)
+            oprot.writeBinary(self.super_column)
+            oprot.writeFieldEnd()
+        if self.predicate is not None:
+            oprot.writeFieldBegin('predicate', TType.STRUCT, 3)
+            self.predicate.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class Mutation(object):
+    """
+    A Mutation is either an insert (represented by filling 
column_or_supercolumn) or a deletion (represented by filling the deletion 
attribute).
+    @param column_or_supercolumn. An insert to a column or supercolumn 
(possibly counter column or supercolumn)
+    @param deletion. A deletion of a column or supercolumn
+
+    Attributes:
+     - column_or_supercolumn
+     - deletion
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRUCT, 'column_or_supercolumn', (ColumnOrSuperColumn, 
ColumnOrSuperColumn.thrift_spec), None, ),  # 1
+        (2, TType.STRUCT, 'deletion', (Deletion, Deletion.thrift_spec), None, 
),  # 2
+    )
+
+    def __init__(self, column_or_supercolumn=None, deletion=None,):
+        self.column_or_supercolumn = column_or_supercolumn
+        self.deletion = deletion
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRUCT:
+                    self.column_or_supercolumn = ColumnOrSuperColumn()
+                    self.column_or_supercolumn.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRUCT:
+                    self.deletion = Deletion()
+                    self.deletion.read(iprot)
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('Mutation')
+        if self.column_or_supercolumn is not None:
+            oprot.writeFieldBegin('column_or_supercolumn', TType.STRUCT, 1)
+            self.column_or_supercolumn.write(oprot)
+            oprot.writeFieldEnd()
+        if self.deletion is not None:
+            oprot.writeFieldBegin('deletion', TType.STRUCT, 2)
+            self.deletion.write(oprot)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class EndpointDetails(object):
+    """
+    Attributes:
+     - host
+     - datacenter
+     - rack
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'host', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'datacenter', 'UTF8', None, ),  # 2
+        (3, TType.STRING, 'rack', 'UTF8', None, ),  # 3
+    )
+
+    def __init__(self, host=None, datacenter=None, rack=None,):
+        self.host = host
+        self.datacenter = datacenter
+        self.rack = rack
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.host = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.datacenter = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 3:
+                if ftype == TType.STRING:
+                    self.rack = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('EndpointDetails')
+        if self.host is not None:
+            oprot.writeFieldBegin('host', TType.STRING, 1)
+            oprot.writeString(self.host.encode('utf-8') if sys.version_info[0] 
== 2 else self.host)
+            oprot.writeFieldEnd()
+        if self.datacenter is not None:
+            oprot.writeFieldBegin('datacenter', TType.STRING, 2)
+            oprot.writeString(self.datacenter.encode('utf-8') if 
sys.version_info[0] == 2 else self.datacenter)
+            oprot.writeFieldEnd()
+        if self.rack is not None:
+            oprot.writeFieldBegin('rack', TType.STRING, 3)
+            oprot.writeString(self.rack.encode('utf-8') if sys.version_info[0] 
== 2 else self.rack)
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class CASResult(object):
+    """
+    Attributes:
+     - success
+     - current_values
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.BOOL, 'success', None, None, ),  # 1
+        (2, TType.LIST, 'current_values', (TType.STRUCT, (Column, 
Column.thrift_spec), False), None, ),  # 2
+    )
+
+    def __init__(self, success=None, current_values=None,):
+        self.success = success
+        self.current_values = current_values
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.BOOL:
+                    self.success = iprot.readBool()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.LIST:
+                    self.current_values = []
+                    (_etype45, _size42) = iprot.readListBegin()
+                    for _i46 in range(_size42):
+                        _elem47 = Column()
+                        _elem47.read(iprot)
+                        self.current_values.append(_elem47)
+                    iprot.readListEnd()
+                else:
+                    iprot.skip(ftype)
+            else:
+                iprot.skip(ftype)
+            iprot.readFieldEnd()
+        iprot.readStructEnd()
+
+    def write(self, oprot):
+        if oprot._fast_encode is not None and self.thrift_spec is not None:
+            oprot.trans.write(oprot._fast_encode(self, (self.__class__, 
self.thrift_spec)))
+            return
+        oprot.writeStructBegin('CASResult')
+        if self.success is not None:
+            oprot.writeFieldBegin('success', TType.BOOL, 1)
+            oprot.writeBool(self.success)
+            oprot.writeFieldEnd()
+        if self.current_values is not None:
+            oprot.writeFieldBegin('current_values', TType.LIST, 2)
+            oprot.writeListBegin(TType.STRUCT, len(self.current_values))
+            for iter48 in self.current_values:
+                iter48.write(oprot)
+            oprot.writeListEnd()
+            oprot.writeFieldEnd()
+        oprot.writeFieldStop()
+        oprot.writeStructEnd()
+
+    def validate(self):
+        if self.success is None:
+            raise TProtocolException(message='Required field success is 
unset!')
+        return
+
+    def __repr__(self):
+        L = ['%s=%r' % (key, value)
+             for key, value in self.__dict__.items()]
+        return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
+
+    def __eq__(self, other):
+        return isinstance(other, self.__class__) and self.__dict__ == 
other.__dict__
+
+    def __ne__(self, other):
+        return not (self == other)
+
+
+class TokenRange(object):
+    """
+    A TokenRange describes part of the Cassandra ring, it is a mapping from a 
range to
+    endpoints responsible for that range.
+    @param start_token The first token in the range
+    @param end_token The last token in the range
+    @param endpoints The endpoints responsible for the range (listed by their 
configured listen_address)
+    @param rpc_endpoints The endpoints responsible for the range (listed by 
their configured rpc_address)
+
+    Attributes:
+     - start_token
+     - end_token
+     - endpoints
+     - rpc_endpoints
+     - endpoint_details
+    """
+
+    thrift_spec = (
+        None,  # 0
+        (1, TType.STRING, 'start_token', 'UTF8', None, ),  # 1
+        (2, TType.STRING, 'end_token', 'UTF8', None, ),  # 2
+        (3, TType.LIST, 'endpoints', (TType.STRING, 'UTF8', False), None, ),  
# 3
+        (4, TType.LIST, 'rpc_endpoints', (TType.STRING, 'UTF8', False), None, 
),  # 4
+        (5, TType.LIST, 'endpoint_details', (TType.STRUCT, (EndpointDetails, 
EndpointDetails.thrift_spec), False), None, ),  # 5
+    )
+
+    def __init__(self, start_token=None, end_token=None, endpoints=None, 
rpc_endpoints=None, endpoint_details=None,):
+        self.start_token = start_token
+        self.end_token = end_token
+        self.endpoints = endpoints
+        self.rpc_endpoints = rpc_endpoints
+        self.endpoint_details = endpoint_details
+
+    def read(self, iprot):
+        if iprot._fast_decode is not None and isinstance(iprot.trans, 
TTransport.CReadableTransport) and self.thrift_spec is not None:
+            iprot._fast_decode(self, iprot, (self.__class__, self.thrift_spec))
+            return
+        iprot.readStructBegin()
+        while True:
+            (fname, ftype, fid) = iprot.readFieldBegin()
+            if ftype == TType.STOP:
+                break
+            if fid == 1:
+                if ftype == TType.STRING:
+                    self.start_token = iprot.readString().decode('utf-8') if 
sys.version_info[0] == 2 else iprot.readString()
+                else:
+                    iprot.skip(ftype)
+            elif fid == 2:
+                if ftype == TType.STRING:
+                    self.end_token = iprot.readString().d

<TRUNCATED>

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to