#
# Autogenerated by Thrift Compiler (0.11.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
from thrift.TRecursive import fix_spec

import sys
import koverse.thriftgen.security.ttypes
import koverse.thriftgen.ttypes

from thrift.transport import TTransport
all_structs = []


class TExecutionMethod(object):
    INLINE = 0
    MAPREDUCE = 1
    RDBMS = 2

    _VALUES_TO_NAMES = {
        0: "INLINE",
        1: "MAPREDUCE",
        2: "RDBMS",
    }

    _NAMES_TO_VALUES = {
        "INLINE": 0,
        "MAPREDUCE": 1,
        "RDBMS": 2,
    }


class TJobType(object):
    IMPORT = 0
    TRANSFORM = 1
    EXPORT = 2
    DELETE = 3
    INDEXING = 4
    REINDEXING = 5
    SAMPLING = 6
    STATISTICS = 7
    SCHEMA = 8

    _VALUES_TO_NAMES = {
        0: "IMPORT",
        1: "TRANSFORM",
        2: "EXPORT",
        3: "DELETE",
        4: "INDEXING",
        5: "REINDEXING",
        6: "SAMPLING",
        7: "STATISTICS",
        8: "SCHEMA",
    }

    _NAMES_TO_VALUES = {
        "IMPORT": 0,
        "TRANSFORM": 1,
        "EXPORT": 2,
        "DELETE": 3,
        "INDEXING": 4,
        "REINDEXING": 5,
        "SAMPLING": 6,
        "STATISTICS": 7,
        "SCHEMA": 8,
    }


class TTransformStageType(object):
    COMBINE = 0
    KV_MAP = 1
    RECORD_MAP = 2
    REDUCE = 3
    PIG = 4

    _VALUES_TO_NAMES = {
        0: "COMBINE",
        1: "KV_MAP",
        2: "RECORD_MAP",
        3: "REDUCE",
        4: "PIG",
    }

    _NAMES_TO_VALUES = {
        "COMBINE": 0,
        "KV_MAP": 1,
        "RECORD_MAP": 2,
        "REDUCE": 3,
        "PIG": 4,
    }


class TJobError(object):
    """
    Attributes:
     - text
    """


    def __init__(self, text=None,):
        self.text = text

    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.text = 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('TJobError')
        if self.text is not None:
            oprot.writeFieldBegin('text', TType.STRING, 1)
            oprot.writeString(self.text.encode('utf-8') if sys.version_info[0] == 2 else self.text)
            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 TJobAbstract(object):
    """
    Attributes:
     - id
     - userId
     - creationDate
     - startedDate
     - endedDate
     - status
     - errorDetail
     - statusMessage
     - userAcknowledged
     - origin
     - overrideBlockedStatus
     - type
     - progress
     - dataSetId
     - inputDataSetIds
     - outputDataSetId
     - errors
     - backendUserInterfaceUrl
     - recordCount
     - name
    """


    def __init__(self, id=None, userId=None, creationDate=None, startedDate=None, endedDate=None, status=None, errorDetail=None, statusMessage=None, userAcknowledged=None, origin=None, overrideBlockedStatus=None, type=None, progress=None, dataSetId=None, inputDataSetIds=None, outputDataSetId=None, errors=None, backendUserInterfaceUrl=None, recordCount=None, name=None,):
        self.id = id
        self.userId = userId
        self.creationDate = creationDate
        self.startedDate = startedDate
        self.endedDate = endedDate
        self.status = status
        self.errorDetail = errorDetail
        self.statusMessage = statusMessage
        self.userAcknowledged = userAcknowledged
        self.origin = origin
        self.overrideBlockedStatus = overrideBlockedStatus
        self.type = type
        self.progress = progress
        self.dataSetId = dataSetId
        self.inputDataSetIds = inputDataSetIds
        self.outputDataSetId = outputDataSetId
        self.errors = errors
        self.backendUserInterfaceUrl = backendUserInterfaceUrl
        self.recordCount = recordCount
        self.name = name

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.userId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.creationDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.startedDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.endedDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.status = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.errorDetail = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.statusMessage = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.BOOL:
                    self.userAcknowledged = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.STRING:
                    self.origin = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.BOOL:
                    self.overrideBlockedStatus = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.I32:
                    self.type = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.DOUBLE:
                    self.progress = iprot.readDouble()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.STRING:
                    self.dataSetId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.LIST:
                    self.inputDataSetIds = []
                    (_etype3, _size0) = iprot.readListBegin()
                    for _i4 in range(_size0):
                        _elem5 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.inputDataSetIds.append(_elem5)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.STRING:
                    self.outputDataSetId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 17:
                if ftype == TType.LIST:
                    self.errors = []
                    (_etype9, _size6) = iprot.readListBegin()
                    for _i10 in range(_size6):
                        _elem11 = TJobError()
                        _elem11.read(iprot)
                        self.errors.append(_elem11)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 18:
                if ftype == TType.STRING:
                    self.backendUserInterfaceUrl = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 19:
                if ftype == TType.I64:
                    self.recordCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 20:
                if ftype == TType.STRING:
                    self.name = 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('TJobAbstract')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.userId is not None:
            oprot.writeFieldBegin('userId', TType.I64, 2)
            oprot.writeI64(self.userId)
            oprot.writeFieldEnd()
        if self.creationDate is not None:
            oprot.writeFieldBegin('creationDate', TType.I64, 3)
            oprot.writeI64(self.creationDate)
            oprot.writeFieldEnd()
        if self.startedDate is not None:
            oprot.writeFieldBegin('startedDate', TType.I64, 4)
            oprot.writeI64(self.startedDate)
            oprot.writeFieldEnd()
        if self.endedDate is not None:
            oprot.writeFieldBegin('endedDate', TType.I64, 5)
            oprot.writeI64(self.endedDate)
            oprot.writeFieldEnd()
        if self.status is not None:
            oprot.writeFieldBegin('status', TType.STRING, 6)
            oprot.writeString(self.status.encode('utf-8') if sys.version_info[0] == 2 else self.status)
            oprot.writeFieldEnd()
        if self.errorDetail is not None:
            oprot.writeFieldBegin('errorDetail', TType.STRING, 7)
            oprot.writeString(self.errorDetail.encode('utf-8') if sys.version_info[0] == 2 else self.errorDetail)
            oprot.writeFieldEnd()
        if self.statusMessage is not None:
            oprot.writeFieldBegin('statusMessage', TType.STRING, 8)
            oprot.writeString(self.statusMessage.encode('utf-8') if sys.version_info[0] == 2 else self.statusMessage)
            oprot.writeFieldEnd()
        if self.userAcknowledged is not None:
            oprot.writeFieldBegin('userAcknowledged', TType.BOOL, 9)
            oprot.writeBool(self.userAcknowledged)
            oprot.writeFieldEnd()
        if self.origin is not None:
            oprot.writeFieldBegin('origin', TType.STRING, 10)
            oprot.writeString(self.origin.encode('utf-8') if sys.version_info[0] == 2 else self.origin)
            oprot.writeFieldEnd()
        if self.overrideBlockedStatus is not None:
            oprot.writeFieldBegin('overrideBlockedStatus', TType.BOOL, 11)
            oprot.writeBool(self.overrideBlockedStatus)
            oprot.writeFieldEnd()
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.I32, 12)
            oprot.writeI32(self.type)
            oprot.writeFieldEnd()
        if self.progress is not None:
            oprot.writeFieldBegin('progress', TType.DOUBLE, 13)
            oprot.writeDouble(self.progress)
            oprot.writeFieldEnd()
        if self.dataSetId is not None:
            oprot.writeFieldBegin('dataSetId', TType.STRING, 14)
            oprot.writeString(self.dataSetId.encode('utf-8') if sys.version_info[0] == 2 else self.dataSetId)
            oprot.writeFieldEnd()
        if self.inputDataSetIds is not None:
            oprot.writeFieldBegin('inputDataSetIds', TType.LIST, 15)
            oprot.writeListBegin(TType.STRING, len(self.inputDataSetIds))
            for iter12 in self.inputDataSetIds:
                oprot.writeString(iter12.encode('utf-8') if sys.version_info[0] == 2 else iter12)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.outputDataSetId is not None:
            oprot.writeFieldBegin('outputDataSetId', TType.STRING, 16)
            oprot.writeString(self.outputDataSetId.encode('utf-8') if sys.version_info[0] == 2 else self.outputDataSetId)
            oprot.writeFieldEnd()
        if self.errors is not None:
            oprot.writeFieldBegin('errors', TType.LIST, 17)
            oprot.writeListBegin(TType.STRUCT, len(self.errors))
            for iter13 in self.errors:
                iter13.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.backendUserInterfaceUrl is not None:
            oprot.writeFieldBegin('backendUserInterfaceUrl', TType.STRING, 18)
            oprot.writeString(self.backendUserInterfaceUrl.encode('utf-8') if sys.version_info[0] == 2 else self.backendUserInterfaceUrl)
            oprot.writeFieldEnd()
        if self.recordCount is not None:
            oprot.writeFieldBegin('recordCount', TType.I64, 19)
            oprot.writeI64(self.recordCount)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 20)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            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 TBatchId(object):
    """
    Attributes:
     - timestampSeconds
     - jobId
     - jobType
    """


    def __init__(self, timestampSeconds=None, jobId=None, jobType=None,):
        self.timestampSeconds = timestampSeconds
        self.jobId = jobId
        self.jobType = jobType

    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.timestampSeconds = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.jobId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.BYTE:
                    self.jobType = iprot.readByte()
                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('TBatchId')
        if self.timestampSeconds is not None:
            oprot.writeFieldBegin('timestampSeconds', TType.I64, 1)
            oprot.writeI64(self.timestampSeconds)
            oprot.writeFieldEnd()
        if self.jobId is not None:
            oprot.writeFieldBegin('jobId', TType.I64, 2)
            oprot.writeI64(self.jobId)
            oprot.writeFieldEnd()
        if self.jobType is not None:
            oprot.writeFieldBegin('jobType', TType.BYTE, 3)
            oprot.writeByte(self.jobType)
            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 TBatchJob(object):
    """
    Attributes:
     - jobAbstract
     - minInputBatchId
     - maxInputBatchId
     - minOutputBatchId
     - maxOutputBatchId
    """


    def __init__(self, jobAbstract=None, minInputBatchId=None, maxInputBatchId=None, minOutputBatchId=None, maxOutputBatchId=None,):
        self.jobAbstract = jobAbstract
        self.minInputBatchId = minInputBatchId
        self.maxInputBatchId = maxInputBatchId
        self.minOutputBatchId = minOutputBatchId
        self.maxOutputBatchId = maxOutputBatchId

    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.jobAbstract = TJobAbstract()
                    self.jobAbstract.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRUCT:
                    self.minInputBatchId = TBatchId()
                    self.minInputBatchId.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.STRUCT:
                    self.maxInputBatchId = TBatchId()
                    self.maxInputBatchId.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRUCT:
                    self.minOutputBatchId = TBatchId()
                    self.minOutputBatchId.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRUCT:
                    self.maxOutputBatchId = TBatchId()
                    self.maxOutputBatchId.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('TBatchJob')
        if self.jobAbstract is not None:
            oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
            self.jobAbstract.write(oprot)
            oprot.writeFieldEnd()
        if self.minInputBatchId is not None:
            oprot.writeFieldBegin('minInputBatchId', TType.STRUCT, 2)
            self.minInputBatchId.write(oprot)
            oprot.writeFieldEnd()
        if self.maxInputBatchId is not None:
            oprot.writeFieldBegin('maxInputBatchId', TType.STRUCT, 3)
            self.maxInputBatchId.write(oprot)
            oprot.writeFieldEnd()
        if self.minOutputBatchId is not None:
            oprot.writeFieldBegin('minOutputBatchId', TType.STRUCT, 4)
            self.minOutputBatchId.write(oprot)
            oprot.writeFieldEnd()
        if self.maxOutputBatchId is not None:
            oprot.writeFieldBegin('maxOutputBatchId', TType.STRUCT, 5)
            self.maxOutputBatchId.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 TSourcePermission(object):
    """
    Attributes:
     - id
     - groupId
     - permissionsTypes
    """


    def __init__(self, id=None, groupId=None, permissionsTypes=None,):
        self.id = id
        self.groupId = groupId
        self.permissionsTypes = permissionsTypes

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.groupId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.permissionsTypes = []
                    (_etype17, _size14) = iprot.readListBegin()
                    for _i18 in range(_size14):
                        _elem19 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.permissionsTypes.append(_elem19)
                    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('TSourcePermission')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.groupId is not None:
            oprot.writeFieldBegin('groupId', TType.I64, 2)
            oprot.writeI64(self.groupId)
            oprot.writeFieldEnd()
        if self.permissionsTypes is not None:
            oprot.writeFieldBegin('permissionsTypes', TType.LIST, 3)
            oprot.writeListBegin(TType.STRING, len(self.permissionsTypes))
            for iter20 in self.permissionsTypes:
                oprot.writeString(iter20.encode('utf-8') if sys.version_info[0] == 2 else iter20)
            oprot.writeListEnd()
            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 TSourceTypeDescription(object):
    """
    Attributes:
     - sourceTypeDescriptionId
     - name
     - version
     - executionMethod
     - implementationClassName
     - sourceTypeId
     - customParameterFormJavascriptPath
     - parameters
     - addOnId
     - disabled
     - flowParameters
    """


    def __init__(self, sourceTypeDescriptionId=None, name=None, version=None, executionMethod=None, implementationClassName=None, sourceTypeId=None, customParameterFormJavascriptPath=None, parameters=None, addOnId=None, disabled=None, flowParameters=None,):
        self.sourceTypeDescriptionId = sourceTypeDescriptionId
        self.name = name
        self.version = version
        self.executionMethod = executionMethod
        self.implementationClassName = implementationClassName
        self.sourceTypeId = sourceTypeId
        self.customParameterFormJavascriptPath = customParameterFormJavascriptPath
        self.parameters = parameters
        self.addOnId = addOnId
        self.disabled = disabled
        self.flowParameters = flowParameters

    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.sourceTypeDescriptionId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = 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.version = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I32:
                    self.executionMethod = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.implementationClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.sourceTypeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.customParameterFormJavascriptPath = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.LIST:
                    self.parameters = []
                    (_etype24, _size21) = iprot.readListBegin()
                    for _i25 in range(_size21):
                        _elem26 = koverse.thriftgen.ttypes.TParameter()
                        _elem26.read(iprot)
                        self.parameters.append(_elem26)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.addOnId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.LIST:
                    self.flowParameters = []
                    (_etype30, _size27) = iprot.readListBegin()
                    for _i31 in range(_size27):
                        _elem32 = koverse.thriftgen.ttypes.TParameter()
                        _elem32.read(iprot)
                        self.flowParameters.append(_elem32)
                    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('TSourceTypeDescription')
        if self.sourceTypeDescriptionId is not None:
            oprot.writeFieldBegin('sourceTypeDescriptionId', TType.I64, 1)
            oprot.writeI64(self.sourceTypeDescriptionId)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 3)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            oprot.writeFieldEnd()
        if self.executionMethod is not None:
            oprot.writeFieldBegin('executionMethod', TType.I32, 4)
            oprot.writeI32(self.executionMethod)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 5)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.sourceTypeId is not None:
            oprot.writeFieldBegin('sourceTypeId', TType.STRING, 6)
            oprot.writeString(self.sourceTypeId.encode('utf-8') if sys.version_info[0] == 2 else self.sourceTypeId)
            oprot.writeFieldEnd()
        if self.customParameterFormJavascriptPath is not None:
            oprot.writeFieldBegin('customParameterFormJavascriptPath', TType.STRING, 7)
            oprot.writeString(self.customParameterFormJavascriptPath.encode('utf-8') if sys.version_info[0] == 2 else self.customParameterFormJavascriptPath)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.LIST, 8)
            oprot.writeListBegin(TType.STRUCT, len(self.parameters))
            for iter33 in self.parameters:
                iter33.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.addOnId is not None:
            oprot.writeFieldBegin('addOnId', TType.I64, 9)
            oprot.writeI64(self.addOnId)
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 10)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.flowParameters is not None:
            oprot.writeFieldBegin('flowParameters', TType.LIST, 11)
            oprot.writeListBegin(TType.STRUCT, len(self.flowParameters))
            for iter34 in self.flowParameters:
                iter34.write(oprot)
            oprot.writeListEnd()
            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 TImportTransformConfiguration(object):
    """
    Attributes:
     - typeId
     - implementationClassName
     - config
     - importFlowId
     - id
     - position
     - enabled
    """


    def __init__(self, typeId=None, implementationClassName=None, config=None, importFlowId=None, id=None, position=None, enabled=None,):
        self.typeId = typeId
        self.implementationClassName = implementationClassName
        self.config = config
        self.importFlowId = importFlowId
        self.id = id
        self.position = position
        self.enabled = enabled

    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.typeId = 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.implementationClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.MAP:
                    self.config = {}
                    (_ktype36, _vtype37, _size35) = iprot.readMapBegin()
                    for _i39 in range(_size35):
                        _key40 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val41 = koverse.thriftgen.ttypes.TConfigValue()
                        _val41.read(iprot)
                        self.config[_key40] = _val41
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.importFlowId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.position = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.BOOL:
                    self.enabled = 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('TImportTransformConfiguration')
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 1)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 2)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.config is not None:
            oprot.writeFieldBegin('config', TType.MAP, 3)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.config))
            for kiter42, viter43 in self.config.items():
                oprot.writeString(kiter42.encode('utf-8') if sys.version_info[0] == 2 else kiter42)
                viter43.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.importFlowId is not None:
            oprot.writeFieldBegin('importFlowId', TType.I64, 4)
            oprot.writeI64(self.importFlowId)
            oprot.writeFieldEnd()
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 5)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.position is not None:
            oprot.writeFieldBegin('position', TType.I64, 6)
            oprot.writeI64(self.position)
            oprot.writeFieldEnd()
        if self.enabled is not None:
            oprot.writeFieldBegin('enabled', TType.BOOL, 7)
            oprot.writeBool(self.enabled)
            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 TSource(object):
    """
    Attributes:
     - sourceId
     - name
     - typeId
     - parameters
     - disabled
     - userId
     - importFlowId
     - clearOutputDataSet
    """


    def __init__(self, sourceId=None, name=None, typeId=None, parameters=None, disabled=None, userId=None, importFlowId=None, clearOutputDataSet=None,):
        self.sourceId = sourceId
        self.name = name
        self.typeId = typeId
        self.parameters = parameters
        self.disabled = disabled
        self.userId = userId
        self.importFlowId = importFlowId
        self.clearOutputDataSet = clearOutputDataSet

    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.sourceId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = 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.typeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.MAP:
                    self.parameters = {}
                    (_ktype45, _vtype46, _size44) = iprot.readMapBegin()
                    for _i48 in range(_size44):
                        _key49 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val50 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.parameters[_key49] = _val50
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.userId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.importFlowId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.BOOL:
                    self.clearOutputDataSet = 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('TSource')
        if self.sourceId is not None:
            oprot.writeFieldBegin('sourceId', TType.I64, 1)
            oprot.writeI64(self.sourceId)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 3)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.MAP, 4)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
            for kiter51, viter52 in self.parameters.items():
                oprot.writeString(kiter51.encode('utf-8') if sys.version_info[0] == 2 else kiter51)
                oprot.writeString(viter52.encode('utf-8') if sys.version_info[0] == 2 else viter52)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 5)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.userId is not None:
            oprot.writeFieldBegin('userId', TType.I64, 6)
            oprot.writeI64(self.userId)
            oprot.writeFieldEnd()
        if self.importFlowId is not None:
            oprot.writeFieldBegin('importFlowId', TType.I64, 7)
            oprot.writeI64(self.importFlowId)
            oprot.writeFieldEnd()
        if self.clearOutputDataSet is not None:
            oprot.writeFieldBegin('clearOutputDataSet', TType.BOOL, 8)
            oprot.writeBool(self.clearOutputDataSet)
            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 TImportTransformDescription(object):
    """
    Attributes:
     - displayName
     - typeId
     - description
     - implementationClassName
     - parameters
    """


    def __init__(self, displayName=None, typeId=None, description=None, implementationClassName=None, parameters=None,):
        self.displayName = displayName
        self.typeId = typeId
        self.description = description
        self.implementationClassName = implementationClassName
        self.parameters = parameters

    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.displayName = 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.typeId = 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.description = 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.implementationClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.parameters = []
                    (_etype56, _size53) = iprot.readListBegin()
                    for _i57 in range(_size53):
                        _elem58 = koverse.thriftgen.ttypes.TParameter()
                        _elem58.read(iprot)
                        self.parameters.append(_elem58)
                    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('TImportTransformDescription')
        if self.displayName is not None:
            oprot.writeFieldBegin('displayName', TType.STRING, 1)
            oprot.writeString(self.displayName.encode('utf-8') if sys.version_info[0] == 2 else self.displayName)
            oprot.writeFieldEnd()
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 2)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 3)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.LIST, 5)
            oprot.writeListBegin(TType.STRUCT, len(self.parameters))
            for iter59 in self.parameters:
                iter59.write(oprot)
            oprot.writeListEnd()
            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 TImportJob(object):
    """
    Attributes:
     - jobAbstract
     - hadoopName
     - sourceId
     - collectionId
     - className
     - jobType
     - recordCount
     - transforms
     - responsibleUserId
    """


    def __init__(self, jobAbstract=None, hadoopName=None, sourceId=None, collectionId=None, className=None, jobType=None, recordCount=None, transforms=None, responsibleUserId=None,):
        self.jobAbstract = jobAbstract
        self.hadoopName = hadoopName
        self.sourceId = sourceId
        self.collectionId = collectionId
        self.className = className
        self.jobType = jobType
        self.recordCount = recordCount
        self.transforms = transforms
        self.responsibleUserId = responsibleUserId

    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.jobAbstract = TJobAbstract()
                    self.jobAbstract.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.hadoopName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.sourceId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.collectionId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.className = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I32:
                    self.jobType = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.recordCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.LIST:
                    self.transforms = []
                    (_etype63, _size60) = iprot.readListBegin()
                    for _i64 in range(_size60):
                        _elem65 = TImportTransformConfiguration()
                        _elem65.read(iprot)
                        self.transforms.append(_elem65)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.responsibleUserId = 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('TImportJob')
        if self.jobAbstract is not None:
            oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
            self.jobAbstract.write(oprot)
            oprot.writeFieldEnd()
        if self.hadoopName is not None:
            oprot.writeFieldBegin('hadoopName', TType.STRING, 2)
            oprot.writeString(self.hadoopName.encode('utf-8') if sys.version_info[0] == 2 else self.hadoopName)
            oprot.writeFieldEnd()
        if self.sourceId is not None:
            oprot.writeFieldBegin('sourceId', TType.I64, 3)
            oprot.writeI64(self.sourceId)
            oprot.writeFieldEnd()
        if self.collectionId is not None:
            oprot.writeFieldBegin('collectionId', TType.STRING, 4)
            oprot.writeString(self.collectionId.encode('utf-8') if sys.version_info[0] == 2 else self.collectionId)
            oprot.writeFieldEnd()
        if self.className is not None:
            oprot.writeFieldBegin('className', TType.STRING, 5)
            oprot.writeString(self.className.encode('utf-8') if sys.version_info[0] == 2 else self.className)
            oprot.writeFieldEnd()
        if self.jobType is not None:
            oprot.writeFieldBegin('jobType', TType.I32, 6)
            oprot.writeI32(self.jobType)
            oprot.writeFieldEnd()
        if self.recordCount is not None:
            oprot.writeFieldBegin('recordCount', TType.I64, 7)
            oprot.writeI64(self.recordCount)
            oprot.writeFieldEnd()
        if self.transforms is not None:
            oprot.writeFieldBegin('transforms', TType.LIST, 8)
            oprot.writeListBegin(TType.STRUCT, len(self.transforms))
            for iter66 in self.transforms:
                iter66.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.responsibleUserId is not None:
            oprot.writeFieldBegin('responsibleUserId', TType.I64, 9)
            oprot.writeI64(self.responsibleUserId)
            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 TTransformSchedule(object):
    """
    Attributes:
     - schedule
     - transformId
    """


    def __init__(self, schedule=None, transformId=None,):
        self.schedule = schedule
        self.transformId = transformId

    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.schedule = koverse.thriftgen.ttypes.TSchedule()
                    self.schedule.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.transformId = 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('TTransformSchedule')
        if self.schedule is not None:
            oprot.writeFieldBegin('schedule', TType.STRUCT, 1)
            self.schedule.write(oprot)
            oprot.writeFieldEnd()
        if self.transformId is not None:
            oprot.writeFieldBegin('transformId', TType.I64, 2)
            oprot.writeI64(self.transformId)
            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 TExportSchedule(object):
    """
    Attributes:
     - schedule
     - sinkId
    """


    def __init__(self, schedule=None, sinkId=None,):
        self.schedule = schedule
        self.sinkId = sinkId

    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.schedule = koverse.thriftgen.ttypes.TSchedule()
                    self.schedule.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.sinkId = 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('TExportSchedule')
        if self.schedule is not None:
            oprot.writeFieldBegin('schedule', TType.STRUCT, 1)
            self.schedule.write(oprot)
            oprot.writeFieldEnd()
        if self.sinkId is not None:
            oprot.writeFieldBegin('sinkId', TType.I64, 2)
            oprot.writeI64(self.sinkId)
            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 TImportFlowSchedule(object):
    """
    Attributes:
     - schedule
     - importFlowId
    """


    def __init__(self, schedule=None, importFlowId=None,):
        self.schedule = schedule
        self.importFlowId = importFlowId

    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.schedule = koverse.thriftgen.ttypes.TSchedule()
                    self.schedule.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.importFlowId = 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('TImportFlowSchedule')
        if self.schedule is not None:
            oprot.writeFieldBegin('schedule', TType.STRUCT, 1)
            self.schedule.write(oprot)
            oprot.writeFieldEnd()
        if self.importFlowId is not None:
            oprot.writeFieldBegin('importFlowId', TType.I64, 2)
            oprot.writeI64(self.importFlowId)
            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 TImportFlow(object):
    """
    Attributes:
     - importFlowId
     - creationDate
     - disabledDate
     - lastUpdatedDate
     - executionCount
     - lastExecutionDate
     - sourceId
     - dataCollectionId
     - responsibleUserId
     - type
     - disabled
     - schedules
     - transforms
     - configurationOptions
     - ingestState
    """


    def __init__(self, importFlowId=None, creationDate=None, disabledDate=None, lastUpdatedDate=None, executionCount=None, lastExecutionDate=None, sourceId=None, dataCollectionId=None, responsibleUserId=None, type=None, disabled=None, schedules=None, transforms=None, configurationOptions=None, ingestState=None,):
        self.importFlowId = importFlowId
        self.creationDate = creationDate
        self.disabledDate = disabledDate
        self.lastUpdatedDate = lastUpdatedDate
        self.executionCount = executionCount
        self.lastExecutionDate = lastExecutionDate
        self.sourceId = sourceId
        self.dataCollectionId = dataCollectionId
        self.responsibleUserId = responsibleUserId
        self.type = type
        self.disabled = disabled
        self.schedules = schedules
        self.transforms = transforms
        self.configurationOptions = configurationOptions
        self.ingestState = ingestState

    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.importFlowId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.creationDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.disabledDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.lastUpdatedDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.executionCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.lastExecutionDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.sourceId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.dataCollectionId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.responsibleUserId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.STRING:
                    self.type = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.LIST:
                    self.schedules = []
                    (_etype70, _size67) = iprot.readListBegin()
                    for _i71 in range(_size67):
                        _elem72 = TImportFlowSchedule()
                        _elem72.read(iprot)
                        self.schedules.append(_elem72)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.LIST:
                    self.transforms = []
                    (_etype76, _size73) = iprot.readListBegin()
                    for _i77 in range(_size73):
                        _elem78 = TImportTransformConfiguration()
                        _elem78.read(iprot)
                        self.transforms.append(_elem78)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.MAP:
                    self.configurationOptions = {}
                    (_ktype80, _vtype81, _size79) = iprot.readMapBegin()
                    for _i83 in range(_size79):
                        _key84 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val85 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.configurationOptions[_key84] = _val85
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.MAP:
                    self.ingestState = {}
                    (_ktype87, _vtype88, _size86) = iprot.readMapBegin()
                    for _i90 in range(_size86):
                        _key91 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val92 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.ingestState[_key91] = _val92
                    iprot.readMapEnd()
                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('TImportFlow')
        if self.importFlowId is not None:
            oprot.writeFieldBegin('importFlowId', TType.I64, 1)
            oprot.writeI64(self.importFlowId)
            oprot.writeFieldEnd()
        if self.creationDate is not None:
            oprot.writeFieldBegin('creationDate', TType.I64, 2)
            oprot.writeI64(self.creationDate)
            oprot.writeFieldEnd()
        if self.disabledDate is not None:
            oprot.writeFieldBegin('disabledDate', TType.I64, 3)
            oprot.writeI64(self.disabledDate)
            oprot.writeFieldEnd()
        if self.lastUpdatedDate is not None:
            oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 4)
            oprot.writeI64(self.lastUpdatedDate)
            oprot.writeFieldEnd()
        if self.executionCount is not None:
            oprot.writeFieldBegin('executionCount', TType.I64, 5)
            oprot.writeI64(self.executionCount)
            oprot.writeFieldEnd()
        if self.lastExecutionDate is not None:
            oprot.writeFieldBegin('lastExecutionDate', TType.I64, 6)
            oprot.writeI64(self.lastExecutionDate)
            oprot.writeFieldEnd()
        if self.sourceId is not None:
            oprot.writeFieldBegin('sourceId', TType.I64, 7)
            oprot.writeI64(self.sourceId)
            oprot.writeFieldEnd()
        if self.dataCollectionId is not None:
            oprot.writeFieldBegin('dataCollectionId', TType.STRING, 8)
            oprot.writeString(self.dataCollectionId.encode('utf-8') if sys.version_info[0] == 2 else self.dataCollectionId)
            oprot.writeFieldEnd()
        if self.responsibleUserId is not None:
            oprot.writeFieldBegin('responsibleUserId', TType.I64, 9)
            oprot.writeI64(self.responsibleUserId)
            oprot.writeFieldEnd()
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.STRING, 10)
            oprot.writeString(self.type.encode('utf-8') if sys.version_info[0] == 2 else self.type)
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 11)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.schedules is not None:
            oprot.writeFieldBegin('schedules', TType.LIST, 12)
            oprot.writeListBegin(TType.STRUCT, len(self.schedules))
            for iter93 in self.schedules:
                iter93.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.transforms is not None:
            oprot.writeFieldBegin('transforms', TType.LIST, 13)
            oprot.writeListBegin(TType.STRUCT, len(self.transforms))
            for iter94 in self.transforms:
                iter94.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.configurationOptions is not None:
            oprot.writeFieldBegin('configurationOptions', TType.MAP, 14)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.configurationOptions))
            for kiter95, viter96 in self.configurationOptions.items():
                oprot.writeString(kiter95.encode('utf-8') if sys.version_info[0] == 2 else kiter95)
                oprot.writeString(viter96.encode('utf-8') if sys.version_info[0] == 2 else viter96)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.ingestState is not None:
            oprot.writeFieldBegin('ingestState', TType.MAP, 15)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.ingestState))
            for kiter97, viter98 in self.ingestState.items():
                oprot.writeString(kiter97.encode('utf-8') if sys.version_info[0] == 2 else kiter97)
                oprot.writeString(viter98.encode('utf-8') if sys.version_info[0] == 2 else viter98)
            oprot.writeMapEnd()
            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 TTransformTypeStageDescription(object):
    """
    Attributes:
     - options
     - className
     - stageType
     - mapInputKeyClassName
     - mapInputValueClassName
     - mapOutputKeyClassName
     - mapOutputValueClassName
    """


    def __init__(self, options=None, className=None, stageType=None, mapInputKeyClassName=None, mapInputValueClassName=None, mapOutputKeyClassName=None, mapOutputValueClassName=None,):
        self.options = options
        self.className = className
        self.stageType = stageType
        self.mapInputKeyClassName = mapInputKeyClassName
        self.mapInputValueClassName = mapInputValueClassName
        self.mapOutputKeyClassName = mapOutputKeyClassName
        self.mapOutputValueClassName = mapOutputValueClassName

    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.MAP:
                    self.options = {}
                    (_ktype100, _vtype101, _size99) = iprot.readMapBegin()
                    for _i103 in range(_size99):
                        _key104 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val105 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.options[_key104] = _val105
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.className = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I32:
                    self.stageType = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.mapInputKeyClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.mapInputValueClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.mapOutputKeyClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.mapOutputValueClassName = 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('TTransformTypeStageDescription')
        if self.options is not None:
            oprot.writeFieldBegin('options', TType.MAP, 1)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.options))
            for kiter106, viter107 in self.options.items():
                oprot.writeString(kiter106.encode('utf-8') if sys.version_info[0] == 2 else kiter106)
                oprot.writeString(viter107.encode('utf-8') if sys.version_info[0] == 2 else viter107)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.className is not None:
            oprot.writeFieldBegin('className', TType.STRING, 2)
            oprot.writeString(self.className.encode('utf-8') if sys.version_info[0] == 2 else self.className)
            oprot.writeFieldEnd()
        if self.stageType is not None:
            oprot.writeFieldBegin('stageType', TType.I32, 3)
            oprot.writeI32(self.stageType)
            oprot.writeFieldEnd()
        if self.mapInputKeyClassName is not None:
            oprot.writeFieldBegin('mapInputKeyClassName', TType.STRING, 4)
            oprot.writeString(self.mapInputKeyClassName.encode('utf-8') if sys.version_info[0] == 2 else self.mapInputKeyClassName)
            oprot.writeFieldEnd()
        if self.mapInputValueClassName is not None:
            oprot.writeFieldBegin('mapInputValueClassName', TType.STRING, 5)
            oprot.writeString(self.mapInputValueClassName.encode('utf-8') if sys.version_info[0] == 2 else self.mapInputValueClassName)
            oprot.writeFieldEnd()
        if self.mapOutputKeyClassName is not None:
            oprot.writeFieldBegin('mapOutputKeyClassName', TType.STRING, 6)
            oprot.writeString(self.mapOutputKeyClassName.encode('utf-8') if sys.version_info[0] == 2 else self.mapOutputKeyClassName)
            oprot.writeFieldEnd()
        if self.mapOutputValueClassName is not None:
            oprot.writeFieldBegin('mapOutputValueClassName', TType.STRING, 7)
            oprot.writeString(self.mapOutputValueClassName.encode('utf-8') if sys.version_info[0] == 2 else self.mapOutputValueClassName)
            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 TTransform(object):
    """
    Attributes:
     - transformId
     - name
     - type
     - userId
     - jobIds
     - parameters
     - backend
     - disabled
     - creationDate
     - lastUpdatedDate
     - replaceOutputData
     - scheduleType
     - minimumExecutionPeriod
     - inputDataWindowType
     - inputDataSlidingWindowSizeSeconds
     - inputDataSlidingWindowOffsetSeconds
    """


    def __init__(self, transformId=None, name=None, type=None, userId=None, jobIds=None, parameters=None, backend=None, disabled=None, creationDate=None, lastUpdatedDate=None, replaceOutputData=None, scheduleType=None, minimumExecutionPeriod=None, inputDataWindowType=None, inputDataSlidingWindowSizeSeconds=None, inputDataSlidingWindowOffsetSeconds=None,):
        self.transformId = transformId
        self.name = name
        self.type = type
        self.userId = userId
        self.jobIds = jobIds
        self.parameters = parameters
        self.backend = backend
        self.disabled = disabled
        self.creationDate = creationDate
        self.lastUpdatedDate = lastUpdatedDate
        self.replaceOutputData = replaceOutputData
        self.scheduleType = scheduleType
        self.minimumExecutionPeriod = minimumExecutionPeriod
        self.inputDataWindowType = inputDataWindowType
        self.inputDataSlidingWindowSizeSeconds = inputDataSlidingWindowSizeSeconds
        self.inputDataSlidingWindowOffsetSeconds = inputDataSlidingWindowOffsetSeconds

    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.transformId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = 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.type = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.I64:
                    self.userId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.jobIds = []
                    (_etype111, _size108) = iprot.readListBegin()
                    for _i112 in range(_size108):
                        _elem113 = iprot.readI64()
                        self.jobIds.append(_elem113)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.MAP:
                    self.parameters = {}
                    (_ktype115, _vtype116, _size114) = iprot.readMapBegin()
                    for _i118 in range(_size114):
                        _key119 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val120 = koverse.thriftgen.ttypes.TConfigValue()
                        _val120.read(iprot)
                        self.parameters[_key119] = _val120
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.backend = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.creationDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.I64:
                    self.lastUpdatedDate = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.BOOL:
                    self.replaceOutputData = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.STRING:
                    self.scheduleType = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.I64:
                    self.minimumExecutionPeriod = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 14:
                if ftype == TType.STRING:
                    self.inputDataWindowType = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 15:
                if ftype == TType.I64:
                    self.inputDataSlidingWindowSizeSeconds = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 16:
                if ftype == TType.I64:
                    self.inputDataSlidingWindowOffsetSeconds = 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('TTransform')
        if self.transformId is not None:
            oprot.writeFieldBegin('transformId', TType.I64, 1)
            oprot.writeI64(self.transformId)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.STRING, 3)
            oprot.writeString(self.type.encode('utf-8') if sys.version_info[0] == 2 else self.type)
            oprot.writeFieldEnd()
        if self.userId is not None:
            oprot.writeFieldBegin('userId', TType.I64, 4)
            oprot.writeI64(self.userId)
            oprot.writeFieldEnd()
        if self.jobIds is not None:
            oprot.writeFieldBegin('jobIds', TType.LIST, 5)
            oprot.writeListBegin(TType.I64, len(self.jobIds))
            for iter121 in self.jobIds:
                oprot.writeI64(iter121)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.MAP, 6)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.parameters))
            for kiter122, viter123 in self.parameters.items():
                oprot.writeString(kiter122.encode('utf-8') if sys.version_info[0] == 2 else kiter122)
                viter123.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.backend is not None:
            oprot.writeFieldBegin('backend', TType.STRING, 7)
            oprot.writeString(self.backend.encode('utf-8') if sys.version_info[0] == 2 else self.backend)
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 8)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.creationDate is not None:
            oprot.writeFieldBegin('creationDate', TType.I64, 9)
            oprot.writeI64(self.creationDate)
            oprot.writeFieldEnd()
        if self.lastUpdatedDate is not None:
            oprot.writeFieldBegin('lastUpdatedDate', TType.I64, 10)
            oprot.writeI64(self.lastUpdatedDate)
            oprot.writeFieldEnd()
        if self.replaceOutputData is not None:
            oprot.writeFieldBegin('replaceOutputData', TType.BOOL, 11)
            oprot.writeBool(self.replaceOutputData)
            oprot.writeFieldEnd()
        if self.scheduleType is not None:
            oprot.writeFieldBegin('scheduleType', TType.STRING, 12)
            oprot.writeString(self.scheduleType.encode('utf-8') if sys.version_info[0] == 2 else self.scheduleType)
            oprot.writeFieldEnd()
        if self.minimumExecutionPeriod is not None:
            oprot.writeFieldBegin('minimumExecutionPeriod', TType.I64, 13)
            oprot.writeI64(self.minimumExecutionPeriod)
            oprot.writeFieldEnd()
        if self.inputDataWindowType is not None:
            oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 14)
            oprot.writeString(self.inputDataWindowType.encode('utf-8') if sys.version_info[0] == 2 else self.inputDataWindowType)
            oprot.writeFieldEnd()
        if self.inputDataSlidingWindowSizeSeconds is not None:
            oprot.writeFieldBegin('inputDataSlidingWindowSizeSeconds', TType.I64, 15)
            oprot.writeI64(self.inputDataSlidingWindowSizeSeconds)
            oprot.writeFieldEnd()
        if self.inputDataSlidingWindowOffsetSeconds is not None:
            oprot.writeFieldBegin('inputDataSlidingWindowOffsetSeconds', TType.I64, 16)
            oprot.writeI64(self.inputDataSlidingWindowOffsetSeconds)
            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 TTransformJob(object):
    """
    Attributes:
     - batchJob
     - transformId
     - parameters
     - stages
     - transformTypeId
     - requestedWorkers
     - backend
     - replaceOutputData
     - minimumExecutionPeriod
     - inputDataWindowType
     - inputDataSlidingWindowSizeSeconds
     - hadoopName
     - mapreduceJobIds
    """


    def __init__(self, batchJob=None, transformId=None, parameters=None, stages=None, transformTypeId=None, requestedWorkers=None, backend=None, replaceOutputData=None, minimumExecutionPeriod=None, inputDataWindowType=None, inputDataSlidingWindowSizeSeconds=None, hadoopName=None, mapreduceJobIds=None,):
        self.batchJob = batchJob
        self.transformId = transformId
        self.parameters = parameters
        self.stages = stages
        self.transformTypeId = transformTypeId
        self.requestedWorkers = requestedWorkers
        self.backend = backend
        self.replaceOutputData = replaceOutputData
        self.minimumExecutionPeriod = minimumExecutionPeriod
        self.inputDataWindowType = inputDataWindowType
        self.inputDataSlidingWindowSizeSeconds = inputDataSlidingWindowSizeSeconds
        self.hadoopName = hadoopName
        self.mapreduceJobIds = mapreduceJobIds

    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.batchJob = TBatchJob()
                    self.batchJob.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.I64:
                    self.transformId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.MAP:
                    self.parameters = {}
                    (_ktype125, _vtype126, _size124) = iprot.readMapBegin()
                    for _i128 in range(_size124):
                        _key129 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val130 = koverse.thriftgen.ttypes.TConfigValue()
                        _val130.read(iprot)
                        self.parameters[_key129] = _val130
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.stages = []
                    (_etype134, _size131) = iprot.readListBegin()
                    for _i135 in range(_size131):
                        _elem136 = TTransformTypeStageDescription()
                        _elem136.read(iprot)
                        self.stages.append(_elem136)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.I64:
                    self.transformTypeId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I32:
                    self.requestedWorkers = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.backend = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.BOOL:
                    self.replaceOutputData = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.minimumExecutionPeriod = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.STRING:
                    self.inputDataWindowType = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.I64:
                    self.inputDataSlidingWindowSizeSeconds = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 12:
                if ftype == TType.STRING:
                    self.hadoopName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 13:
                if ftype == TType.SET:
                    self.mapreduceJobIds = set()
                    (_etype140, _size137) = iprot.readSetBegin()
                    for _i141 in range(_size137):
                        _elem142 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.mapreduceJobIds.add(_elem142)
                    iprot.readSetEnd()
                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('TTransformJob')
        if self.batchJob is not None:
            oprot.writeFieldBegin('batchJob', TType.STRUCT, 1)
            self.batchJob.write(oprot)
            oprot.writeFieldEnd()
        if self.transformId is not None:
            oprot.writeFieldBegin('transformId', TType.I64, 2)
            oprot.writeI64(self.transformId)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.MAP, 3)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.parameters))
            for kiter143, viter144 in self.parameters.items():
                oprot.writeString(kiter143.encode('utf-8') if sys.version_info[0] == 2 else kiter143)
                viter144.write(oprot)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.stages is not None:
            oprot.writeFieldBegin('stages', TType.LIST, 4)
            oprot.writeListBegin(TType.STRUCT, len(self.stages))
            for iter145 in self.stages:
                iter145.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.transformTypeId is not None:
            oprot.writeFieldBegin('transformTypeId', TType.I64, 5)
            oprot.writeI64(self.transformTypeId)
            oprot.writeFieldEnd()
        if self.requestedWorkers is not None:
            oprot.writeFieldBegin('requestedWorkers', TType.I32, 6)
            oprot.writeI32(self.requestedWorkers)
            oprot.writeFieldEnd()
        if self.backend is not None:
            oprot.writeFieldBegin('backend', TType.STRING, 7)
            oprot.writeString(self.backend.encode('utf-8') if sys.version_info[0] == 2 else self.backend)
            oprot.writeFieldEnd()
        if self.replaceOutputData is not None:
            oprot.writeFieldBegin('replaceOutputData', TType.BOOL, 8)
            oprot.writeBool(self.replaceOutputData)
            oprot.writeFieldEnd()
        if self.minimumExecutionPeriod is not None:
            oprot.writeFieldBegin('minimumExecutionPeriod', TType.I64, 9)
            oprot.writeI64(self.minimumExecutionPeriod)
            oprot.writeFieldEnd()
        if self.inputDataWindowType is not None:
            oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 10)
            oprot.writeString(self.inputDataWindowType.encode('utf-8') if sys.version_info[0] == 2 else self.inputDataWindowType)
            oprot.writeFieldEnd()
        if self.inputDataSlidingWindowSizeSeconds is not None:
            oprot.writeFieldBegin('inputDataSlidingWindowSizeSeconds', TType.I64, 11)
            oprot.writeI64(self.inputDataSlidingWindowSizeSeconds)
            oprot.writeFieldEnd()
        if self.hadoopName is not None:
            oprot.writeFieldBegin('hadoopName', TType.STRING, 12)
            oprot.writeString(self.hadoopName.encode('utf-8') if sys.version_info[0] == 2 else self.hadoopName)
            oprot.writeFieldEnd()
        if self.mapreduceJobIds is not None:
            oprot.writeFieldBegin('mapreduceJobIds', TType.SET, 13)
            oprot.writeSetBegin(TType.STRING, len(self.mapreduceJobIds))
            for iter146 in self.mapreduceJobIds:
                oprot.writeString(iter146.encode('utf-8') if sys.version_info[0] == 2 else iter146)
            oprot.writeSetEnd()
            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 TTransformType(object):
    """
    Attributes:
     - id
     - jobTypeId
     - name
     - parameters
     - disabled
     - addOnId
     - transformClassName
     - version
     - supportsIncrementalProcessing
     - stages
     - description
    """


    def __init__(self, id=None, jobTypeId=None, name=None, parameters=None, disabled=None, addOnId=None, transformClassName=None, version=None, supportsIncrementalProcessing=None, stages=None, description=None,):
        self.id = id
        self.jobTypeId = jobTypeId
        self.name = name
        self.parameters = parameters
        self.disabled = disabled
        self.addOnId = addOnId
        self.transformClassName = transformClassName
        self.version = version
        self.supportsIncrementalProcessing = supportsIncrementalProcessing
        self.stages = stages
        self.description = description

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.jobTypeId = 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.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.parameters = []
                    (_etype150, _size147) = iprot.readListBegin()
                    for _i151 in range(_size147):
                        _elem152 = koverse.thriftgen.ttypes.TParameter()
                        _elem152.read(iprot)
                        self.parameters.append(_elem152)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.I64:
                    self.addOnId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.transformClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.version = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.BOOL:
                    self.supportsIncrementalProcessing = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.LIST:
                    self.stages = []
                    (_etype156, _size153) = iprot.readListBegin()
                    for _i157 in range(_size153):
                        _elem158 = TTransformTypeStageDescription()
                        _elem158.read(iprot)
                        self.stages.append(_elem158)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.description = 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('TTransformType')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.jobTypeId is not None:
            oprot.writeFieldBegin('jobTypeId', TType.STRING, 2)
            oprot.writeString(self.jobTypeId.encode('utf-8') if sys.version_info[0] == 2 else self.jobTypeId)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 3)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.LIST, 4)
            oprot.writeListBegin(TType.STRUCT, len(self.parameters))
            for iter159 in self.parameters:
                iter159.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 5)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.addOnId is not None:
            oprot.writeFieldBegin('addOnId', TType.I64, 6)
            oprot.writeI64(self.addOnId)
            oprot.writeFieldEnd()
        if self.transformClassName is not None:
            oprot.writeFieldBegin('transformClassName', TType.STRING, 7)
            oprot.writeString(self.transformClassName.encode('utf-8') if sys.version_info[0] == 2 else self.transformClassName)
            oprot.writeFieldEnd()
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 8)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            oprot.writeFieldEnd()
        if self.supportsIncrementalProcessing is not None:
            oprot.writeFieldBegin('supportsIncrementalProcessing', TType.BOOL, 9)
            oprot.writeBool(self.supportsIncrementalProcessing)
            oprot.writeFieldEnd()
        if self.stages is not None:
            oprot.writeFieldBegin('stages', TType.LIST, 10)
            oprot.writeListBegin(TType.STRUCT, len(self.stages))
            for iter160 in self.stages:
                iter160.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 11)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            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 TExportTransformDescription(object):
    """
    Attributes:
     - displayName
     - typeId
     - description
     - implementationClassName
     - parameters
    """


    def __init__(self, displayName=None, typeId=None, description=None, implementationClassName=None, parameters=None,):
        self.displayName = displayName
        self.typeId = typeId
        self.description = description
        self.implementationClassName = implementationClassName
        self.parameters = parameters

    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.displayName = 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.typeId = 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.description = 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.implementationClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.parameters = []
                    (_etype164, _size161) = iprot.readListBegin()
                    for _i165 in range(_size161):
                        _elem166 = koverse.thriftgen.ttypes.TParameter()
                        _elem166.read(iprot)
                        self.parameters.append(_elem166)
                    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('TExportTransformDescription')
        if self.displayName is not None:
            oprot.writeFieldBegin('displayName', TType.STRING, 1)
            oprot.writeString(self.displayName.encode('utf-8') if sys.version_info[0] == 2 else self.displayName)
            oprot.writeFieldEnd()
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 2)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 3)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.LIST, 5)
            oprot.writeListBegin(TType.STRUCT, len(self.parameters))
            for iter167 in self.parameters:
                iter167.write(oprot)
            oprot.writeListEnd()
            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 TExportTransformConfiguration(object):
    """
    Attributes:
     - typeId
     - implementationClassName
     - config
    """


    def __init__(self, typeId=None, implementationClassName=None, config=None,):
        self.typeId = typeId
        self.implementationClassName = implementationClassName
        self.config = config

    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.typeId = 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.implementationClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.MAP:
                    self.config = {}
                    (_ktype169, _vtype170, _size168) = iprot.readMapBegin()
                    for _i172 in range(_size168):
                        _key173 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val174 = koverse.thriftgen.ttypes.TConfigValue()
                        _val174.read(iprot)
                        self.config[_key173] = _val174
                    iprot.readMapEnd()
                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('TExportTransformConfiguration')
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 1)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 2)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.config is not None:
            oprot.writeFieldBegin('config', TType.MAP, 3)
            oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.config))
            for kiter175, viter176 in self.config.items():
                oprot.writeString(kiter175.encode('utf-8') if sys.version_info[0] == 2 else kiter175)
                viter176.write(oprot)
            oprot.writeMapEnd()
            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 TSink(object):
    """
    Attributes:
     - id
     - name
     - type
     - parameters
     - disabled
     - scheduleType
     - transforms
     - inputDataWindowType
    """


    def __init__(self, id=None, name=None, type=None, parameters=None, disabled=None, scheduleType=None, transforms=None, inputDataWindowType=None,):
        self.id = id
        self.name = name
        self.type = type
        self.parameters = parameters
        self.disabled = disabled
        self.scheduleType = scheduleType
        self.transforms = transforms
        self.inputDataWindowType = inputDataWindowType

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = 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.type = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.MAP:
                    self.parameters = {}
                    (_ktype178, _vtype179, _size177) = iprot.readMapBegin()
                    for _i181 in range(_size177):
                        _key182 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val183 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.parameters[_key182] = _val183
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.scheduleType = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.LIST:
                    self.transforms = []
                    (_etype187, _size184) = iprot.readListBegin()
                    for _i188 in range(_size184):
                        _elem189 = TExportTransformConfiguration()
                        _elem189.read(iprot)
                        self.transforms.append(_elem189)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.inputDataWindowType = 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('TSink')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.type is not None:
            oprot.writeFieldBegin('type', TType.STRING, 3)
            oprot.writeString(self.type.encode('utf-8') if sys.version_info[0] == 2 else self.type)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.MAP, 4)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
            for kiter190, viter191 in self.parameters.items():
                oprot.writeString(kiter190.encode('utf-8') if sys.version_info[0] == 2 else kiter190)
                oprot.writeString(viter191.encode('utf-8') if sys.version_info[0] == 2 else viter191)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 5)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.scheduleType is not None:
            oprot.writeFieldBegin('scheduleType', TType.STRING, 6)
            oprot.writeString(self.scheduleType.encode('utf-8') if sys.version_info[0] == 2 else self.scheduleType)
            oprot.writeFieldEnd()
        if self.transforms is not None:
            oprot.writeFieldBegin('transforms', TType.LIST, 7)
            oprot.writeListBegin(TType.STRUCT, len(self.transforms))
            for iter192 in self.transforms:
                iter192.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.inputDataWindowType is not None:
            oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 8)
            oprot.writeString(self.inputDataWindowType.encode('utf-8') if sys.version_info[0] == 2 else self.inputDataWindowType)
            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 TSinkTypeDescription(object):
    """
    Attributes:
     - id
     - name
     - executionMethod
     - implementationClassName
     - sinkTypeId
     - sinkParameters
     - addOnId
     - disabled
     - version
    """


    def __init__(self, id=None, name=None, executionMethod=None, implementationClassName=None, sinkTypeId=None, sinkParameters=None, addOnId=None, disabled=None, version=None,):
        self.id = id
        self.name = name
        self.executionMethod = executionMethod
        self.implementationClassName = implementationClassName
        self.sinkTypeId = sinkTypeId
        self.sinkParameters = sinkParameters
        self.addOnId = addOnId
        self.disabled = disabled
        self.version = version

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I32:
                    self.executionMethod = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.implementationClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.sinkTypeId = 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.sinkParameters = []
                    (_etype196, _size193) = iprot.readListBegin()
                    for _i197 in range(_size193):
                        _elem198 = koverse.thriftgen.ttypes.TParameter()
                        _elem198.read(iprot)
                        self.sinkParameters.append(_elem198)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.addOnId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.STRING:
                    self.version = 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('TSinkTypeDescription')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.executionMethod is not None:
            oprot.writeFieldBegin('executionMethod', TType.I32, 3)
            oprot.writeI32(self.executionMethod)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 4)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.sinkTypeId is not None:
            oprot.writeFieldBegin('sinkTypeId', TType.STRING, 5)
            oprot.writeString(self.sinkTypeId.encode('utf-8') if sys.version_info[0] == 2 else self.sinkTypeId)
            oprot.writeFieldEnd()
        if self.sinkParameters is not None:
            oprot.writeFieldBegin('sinkParameters', TType.LIST, 6)
            oprot.writeListBegin(TType.STRUCT, len(self.sinkParameters))
            for iter199 in self.sinkParameters:
                iter199.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.addOnId is not None:
            oprot.writeFieldBegin('addOnId', TType.I64, 7)
            oprot.writeI64(self.addOnId)
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 8)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 9)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            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 TExportJob(object):
    """
    Attributes:
     - jobAbstract
     - hadoopName
     - sinkId
     - sourceCollectionId
     - parameters
     - className
     - timeField
     - timeFormat
     - recordCount
     - transforms
     - inputDataWindowType
    """


    def __init__(self, jobAbstract=None, hadoopName=None, sinkId=None, sourceCollectionId=None, parameters=None, className=None, timeField=None, timeFormat=None, recordCount=None, transforms=None, inputDataWindowType=None,):
        self.jobAbstract = jobAbstract
        self.hadoopName = hadoopName
        self.sinkId = sinkId
        self.sourceCollectionId = sourceCollectionId
        self.parameters = parameters
        self.className = className
        self.timeField = timeField
        self.timeFormat = timeFormat
        self.recordCount = recordCount
        self.transforms = transforms
        self.inputDataWindowType = inputDataWindowType

    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.jobAbstract = TJobAbstract()
                    self.jobAbstract.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.hadoopName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.I64:
                    self.sinkId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.sourceCollectionId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.MAP:
                    self.parameters = {}
                    (_ktype201, _vtype202, _size200) = iprot.readMapBegin()
                    for _i204 in range(_size200):
                        _key205 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        _val206 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.parameters[_key205] = _val206
                    iprot.readMapEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.STRING:
                    self.className = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.STRING:
                    self.timeField = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.STRING:
                    self.timeFormat = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.recordCount = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.LIST:
                    self.transforms = []
                    (_etype210, _size207) = iprot.readListBegin()
                    for _i211 in range(_size207):
                        _elem212 = TExportTransformConfiguration()
                        _elem212.read(iprot)
                        self.transforms.append(_elem212)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.STRING:
                    self.inputDataWindowType = 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('TExportJob')
        if self.jobAbstract is not None:
            oprot.writeFieldBegin('jobAbstract', TType.STRUCT, 1)
            self.jobAbstract.write(oprot)
            oprot.writeFieldEnd()
        if self.hadoopName is not None:
            oprot.writeFieldBegin('hadoopName', TType.STRING, 2)
            oprot.writeString(self.hadoopName.encode('utf-8') if sys.version_info[0] == 2 else self.hadoopName)
            oprot.writeFieldEnd()
        if self.sinkId is not None:
            oprot.writeFieldBegin('sinkId', TType.I64, 3)
            oprot.writeI64(self.sinkId)
            oprot.writeFieldEnd()
        if self.sourceCollectionId is not None:
            oprot.writeFieldBegin('sourceCollectionId', TType.STRING, 4)
            oprot.writeString(self.sourceCollectionId.encode('utf-8') if sys.version_info[0] == 2 else self.sourceCollectionId)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.MAP, 5)
            oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
            for kiter213, viter214 in self.parameters.items():
                oprot.writeString(kiter213.encode('utf-8') if sys.version_info[0] == 2 else kiter213)
                oprot.writeString(viter214.encode('utf-8') if sys.version_info[0] == 2 else viter214)
            oprot.writeMapEnd()
            oprot.writeFieldEnd()
        if self.className is not None:
            oprot.writeFieldBegin('className', TType.STRING, 6)
            oprot.writeString(self.className.encode('utf-8') if sys.version_info[0] == 2 else self.className)
            oprot.writeFieldEnd()
        if self.timeField is not None:
            oprot.writeFieldBegin('timeField', TType.STRING, 7)
            oprot.writeString(self.timeField.encode('utf-8') if sys.version_info[0] == 2 else self.timeField)
            oprot.writeFieldEnd()
        if self.timeFormat is not None:
            oprot.writeFieldBegin('timeFormat', TType.STRING, 8)
            oprot.writeString(self.timeFormat.encode('utf-8') if sys.version_info[0] == 2 else self.timeFormat)
            oprot.writeFieldEnd()
        if self.recordCount is not None:
            oprot.writeFieldBegin('recordCount', TType.I64, 9)
            oprot.writeI64(self.recordCount)
            oprot.writeFieldEnd()
        if self.transforms is not None:
            oprot.writeFieldBegin('transforms', TType.LIST, 10)
            oprot.writeListBegin(TType.STRUCT, len(self.transforms))
            for iter215 in self.transforms:
                iter215.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.inputDataWindowType is not None:
            oprot.writeFieldBegin('inputDataWindowType', TType.STRING, 11)
            oprot.writeString(self.inputDataWindowType.encode('utf-8') if sys.version_info[0] == 2 else self.inputDataWindowType)
            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 TExportFileFormatDescription(object):
    """
    Attributes:
     - id
     - name
     - implementationClassName
     - typeId
     - description
     - parameters
     - addOnId
     - disabled
     - version
    """


    def __init__(self, id=None, name=None, implementationClassName=None, typeId=None, description=None, parameters=None, addOnId=None, disabled=None, version=None,):
        self.id = id
        self.name = name
        self.implementationClassName = implementationClassName
        self.typeId = typeId
        self.description = description
        self.parameters = parameters
        self.addOnId = addOnId
        self.disabled = disabled
        self.version = version

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = 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.implementationClassName = 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.typeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.description = 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.parameters = []
                    (_etype219, _size216) = iprot.readListBegin()
                    for _i220 in range(_size216):
                        _elem221 = koverse.thriftgen.ttypes.TParameter()
                        _elem221.read(iprot)
                        self.parameters.append(_elem221)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.addOnId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.STRING:
                    self.version = 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('TExportFileFormatDescription')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 3)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 4)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 5)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.LIST, 6)
            oprot.writeListBegin(TType.STRUCT, len(self.parameters))
            for iter222 in self.parameters:
                iter222.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.addOnId is not None:
            oprot.writeFieldBegin('addOnId', TType.I64, 7)
            oprot.writeI64(self.addOnId)
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 8)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 9)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            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 TRecordsProviderDescription(object):
    """
    Attributes:
     - id
     - name
     - implementationClassName
     - typeId
     - description
     - parameters
     - addOnId
     - disabled
     - version
     - priority
     - extensions
    """


    def __init__(self, id=None, name=None, implementationClassName=None, typeId=None, description=None, parameters=None, addOnId=None, disabled=None, version=None, priority=None, extensions=None,):
        self.id = id
        self.name = name
        self.implementationClassName = implementationClassName
        self.typeId = typeId
        self.description = description
        self.parameters = parameters
        self.addOnId = addOnId
        self.disabled = disabled
        self.version = version
        self.priority = priority
        self.extensions = extensions

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = 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.implementationClassName = 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.typeId = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.STRING:
                    self.description = 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.parameters = []
                    (_etype226, _size223) = iprot.readListBegin()
                    for _i227 in range(_size223):
                        _elem228 = koverse.thriftgen.ttypes.TParameter()
                        _elem228.read(iprot)
                        self.parameters.append(_elem228)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.addOnId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.BOOL:
                    self.disabled = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.STRING:
                    self.version = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 10:
                if ftype == TType.I32:
                    self.priority = iprot.readI32()
                else:
                    iprot.skip(ftype)
            elif fid == 11:
                if ftype == TType.SET:
                    self.extensions = set()
                    (_etype232, _size229) = iprot.readSetBegin()
                    for _i233 in range(_size229):
                        _elem234 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.extensions.add(_elem234)
                    iprot.readSetEnd()
                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('TRecordsProviderDescription')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.implementationClassName is not None:
            oprot.writeFieldBegin('implementationClassName', TType.STRING, 3)
            oprot.writeString(self.implementationClassName.encode('utf-8') if sys.version_info[0] == 2 else self.implementationClassName)
            oprot.writeFieldEnd()
        if self.typeId is not None:
            oprot.writeFieldBegin('typeId', TType.STRING, 4)
            oprot.writeString(self.typeId.encode('utf-8') if sys.version_info[0] == 2 else self.typeId)
            oprot.writeFieldEnd()
        if self.description is not None:
            oprot.writeFieldBegin('description', TType.STRING, 5)
            oprot.writeString(self.description.encode('utf-8') if sys.version_info[0] == 2 else self.description)
            oprot.writeFieldEnd()
        if self.parameters is not None:
            oprot.writeFieldBegin('parameters', TType.LIST, 6)
            oprot.writeListBegin(TType.STRUCT, len(self.parameters))
            for iter235 in self.parameters:
                iter235.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.addOnId is not None:
            oprot.writeFieldBegin('addOnId', TType.I64, 7)
            oprot.writeI64(self.addOnId)
            oprot.writeFieldEnd()
        if self.disabled is not None:
            oprot.writeFieldBegin('disabled', TType.BOOL, 8)
            oprot.writeBool(self.disabled)
            oprot.writeFieldEnd()
        if self.version is not None:
            oprot.writeFieldBegin('version', TType.STRING, 9)
            oprot.writeString(self.version.encode('utf-8') if sys.version_info[0] == 2 else self.version)
            oprot.writeFieldEnd()
        if self.priority is not None:
            oprot.writeFieldBegin('priority', TType.I32, 10)
            oprot.writeI32(self.priority)
            oprot.writeFieldEnd()
        if self.extensions is not None:
            oprot.writeFieldBegin('extensions', TType.SET, 11)
            oprot.writeSetBegin(TType.STRING, len(self.extensions))
            for iter236 in self.extensions:
                oprot.writeString(iter236.encode('utf-8') if sys.version_info[0] == 2 else iter236)
            oprot.writeSetEnd()
            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 TDataCollectionBatchJob(object):
    """
    Attributes:
     - batchJob
     - collectionId
     - hadoopJobName
     - mapProgress
     - reduceProgress
    """


    def __init__(self, batchJob=None, collectionId=None, hadoopJobName=None, mapProgress=None, reduceProgress=None,):
        self.batchJob = batchJob
        self.collectionId = collectionId
        self.hadoopJobName = hadoopJobName
        self.mapProgress = mapProgress
        self.reduceProgress = reduceProgress

    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.batchJob = TBatchJob()
                    self.batchJob.read(iprot)
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.collectionId = 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.hadoopJobName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.DOUBLE:
                    self.mapProgress = iprot.readDouble()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.DOUBLE:
                    self.reduceProgress = iprot.readDouble()
                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('TDataCollectionBatchJob')
        if self.batchJob is not None:
            oprot.writeFieldBegin('batchJob', TType.STRUCT, 1)
            self.batchJob.write(oprot)
            oprot.writeFieldEnd()
        if self.collectionId is not None:
            oprot.writeFieldBegin('collectionId', TType.STRING, 2)
            oprot.writeString(self.collectionId.encode('utf-8') if sys.version_info[0] == 2 else self.collectionId)
            oprot.writeFieldEnd()
        if self.hadoopJobName is not None:
            oprot.writeFieldBegin('hadoopJobName', TType.STRING, 3)
            oprot.writeString(self.hadoopJobName.encode('utf-8') if sys.version_info[0] == 2 else self.hadoopJobName)
            oprot.writeFieldEnd()
        if self.mapProgress is not None:
            oprot.writeFieldBegin('mapProgress', TType.DOUBLE, 4)
            oprot.writeDouble(self.mapProgress)
            oprot.writeFieldEnd()
        if self.reduceProgress is not None:
            oprot.writeFieldBegin('reduceProgress', TType.DOUBLE, 5)
            oprot.writeDouble(self.reduceProgress)
            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 TImportSample(object):
    """
    Attributes:
     - problems
     - records
     - flatSchema
     - parserClassName
     - problemDetails
    """


    def __init__(self, problems=None, records=None, flatSchema=None, parserClassName=None, problemDetails=None,):
        self.problems = problems
        self.records = records
        self.flatSchema = flatSchema
        self.parserClassName = parserClassName
        self.problemDetails = problemDetails

    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.problems = []
                    (_etype240, _size237) = iprot.readListBegin()
                    for _i241 in range(_size237):
                        _elem242 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.problems.append(_elem242)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.LIST:
                    self.records = []
                    (_etype246, _size243) = iprot.readListBegin()
                    for _i247 in range(_size243):
                        _elem248 = koverse.thriftgen.ttypes.TSimpleRecord()
                        _elem248.read(iprot)
                        self.records.append(_elem248)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.BOOL:
                    self.flatSchema = iprot.readBool()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.STRING:
                    self.parserClassName = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.problemDetails = []
                    (_etype252, _size249) = iprot.readListBegin()
                    for _i253 in range(_size249):
                        _elem254 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.problemDetails.append(_elem254)
                    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('TImportSample')
        if self.problems is not None:
            oprot.writeFieldBegin('problems', TType.LIST, 1)
            oprot.writeListBegin(TType.STRING, len(self.problems))
            for iter255 in self.problems:
                oprot.writeString(iter255.encode('utf-8') if sys.version_info[0] == 2 else iter255)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.records is not None:
            oprot.writeFieldBegin('records', TType.LIST, 2)
            oprot.writeListBegin(TType.STRUCT, len(self.records))
            for iter256 in self.records:
                iter256.write(oprot)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.flatSchema is not None:
            oprot.writeFieldBegin('flatSchema', TType.BOOL, 3)
            oprot.writeBool(self.flatSchema)
            oprot.writeFieldEnd()
        if self.parserClassName is not None:
            oprot.writeFieldBegin('parserClassName', TType.STRING, 4)
            oprot.writeString(self.parserClassName.encode('utf-8') if sys.version_info[0] == 2 else self.parserClassName)
            oprot.writeFieldEnd()
        if self.problemDetails is not None:
            oprot.writeFieldBegin('problemDetails', TType.LIST, 5)
            oprot.writeListBegin(TType.STRING, len(self.problemDetails))
            for iter257 in self.problemDetails:
                oprot.writeString(iter257.encode('utf-8') if sys.version_info[0] == 2 else iter257)
            oprot.writeListEnd()
            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 TWorkflow(object):
    """
    Attributes:
     - id
     - name
     - notificationEmails
     - importFlowIds
     - transformIds
     - sinkIds
     - successImportFlowId
     - successTransformId
     - successSinkId
    """


    def __init__(self, id=None, name=None, notificationEmails=None, importFlowIds=None, transformIds=None, sinkIds=None, successImportFlowId=None, successTransformId=None, successSinkId=None,):
        self.id = id
        self.name = name
        self.notificationEmails = notificationEmails
        self.importFlowIds = importFlowIds
        self.transformIds = transformIds
        self.sinkIds = sinkIds
        self.successImportFlowId = successImportFlowId
        self.successTransformId = successTransformId
        self.successSinkId = successSinkId

    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.id = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 2:
                if ftype == TType.STRING:
                    self.name = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                else:
                    iprot.skip(ftype)
            elif fid == 3:
                if ftype == TType.LIST:
                    self.notificationEmails = []
                    (_etype261, _size258) = iprot.readListBegin()
                    for _i262 in range(_size258):
                        _elem263 = iprot.readString().decode('utf-8') if sys.version_info[0] == 2 else iprot.readString()
                        self.notificationEmails.append(_elem263)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 4:
                if ftype == TType.LIST:
                    self.importFlowIds = []
                    (_etype267, _size264) = iprot.readListBegin()
                    for _i268 in range(_size264):
                        _elem269 = iprot.readI64()
                        self.importFlowIds.append(_elem269)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 5:
                if ftype == TType.LIST:
                    self.transformIds = []
                    (_etype273, _size270) = iprot.readListBegin()
                    for _i274 in range(_size270):
                        _elem275 = iprot.readI64()
                        self.transformIds.append(_elem275)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 6:
                if ftype == TType.LIST:
                    self.sinkIds = []
                    (_etype279, _size276) = iprot.readListBegin()
                    for _i280 in range(_size276):
                        _elem281 = iprot.readI64()
                        self.sinkIds.append(_elem281)
                    iprot.readListEnd()
                else:
                    iprot.skip(ftype)
            elif fid == 7:
                if ftype == TType.I64:
                    self.successImportFlowId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 8:
                if ftype == TType.I64:
                    self.successTransformId = iprot.readI64()
                else:
                    iprot.skip(ftype)
            elif fid == 9:
                if ftype == TType.I64:
                    self.successSinkId = 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('TWorkflow')
        if self.id is not None:
            oprot.writeFieldBegin('id', TType.I64, 1)
            oprot.writeI64(self.id)
            oprot.writeFieldEnd()
        if self.name is not None:
            oprot.writeFieldBegin('name', TType.STRING, 2)
            oprot.writeString(self.name.encode('utf-8') if sys.version_info[0] == 2 else self.name)
            oprot.writeFieldEnd()
        if self.notificationEmails is not None:
            oprot.writeFieldBegin('notificationEmails', TType.LIST, 3)
            oprot.writeListBegin(TType.STRING, len(self.notificationEmails))
            for iter282 in self.notificationEmails:
                oprot.writeString(iter282.encode('utf-8') if sys.version_info[0] == 2 else iter282)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.importFlowIds is not None:
            oprot.writeFieldBegin('importFlowIds', TType.LIST, 4)
            oprot.writeListBegin(TType.I64, len(self.importFlowIds))
            for iter283 in self.importFlowIds:
                oprot.writeI64(iter283)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.transformIds is not None:
            oprot.writeFieldBegin('transformIds', TType.LIST, 5)
            oprot.writeListBegin(TType.I64, len(self.transformIds))
            for iter284 in self.transformIds:
                oprot.writeI64(iter284)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.sinkIds is not None:
            oprot.writeFieldBegin('sinkIds', TType.LIST, 6)
            oprot.writeListBegin(TType.I64, len(self.sinkIds))
            for iter285 in self.sinkIds:
                oprot.writeI64(iter285)
            oprot.writeListEnd()
            oprot.writeFieldEnd()
        if self.successImportFlowId is not None:
            oprot.writeFieldBegin('successImportFlowId', TType.I64, 7)
            oprot.writeI64(self.successImportFlowId)
            oprot.writeFieldEnd()
        if self.successTransformId is not None:
            oprot.writeFieldBegin('successTransformId', TType.I64, 8)
            oprot.writeI64(self.successTransformId)
            oprot.writeFieldEnd()
        if self.successSinkId is not None:
            oprot.writeFieldBegin('successSinkId', TType.I64, 9)
            oprot.writeI64(self.successSinkId)
            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)
all_structs.append(TJobError)
TJobError.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'text', 'UTF8', None, ),  # 1
)
all_structs.append(TJobAbstract)
TJobAbstract.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.I64, 'userId', None, None, ),  # 2
    (3, TType.I64, 'creationDate', None, None, ),  # 3
    (4, TType.I64, 'startedDate', None, None, ),  # 4
    (5, TType.I64, 'endedDate', None, None, ),  # 5
    (6, TType.STRING, 'status', 'UTF8', None, ),  # 6
    (7, TType.STRING, 'errorDetail', 'UTF8', None, ),  # 7
    (8, TType.STRING, 'statusMessage', 'UTF8', None, ),  # 8
    (9, TType.BOOL, 'userAcknowledged', None, None, ),  # 9
    (10, TType.STRING, 'origin', 'UTF8', None, ),  # 10
    (11, TType.BOOL, 'overrideBlockedStatus', None, None, ),  # 11
    (12, TType.I32, 'type', None, None, ),  # 12
    (13, TType.DOUBLE, 'progress', None, None, ),  # 13
    (14, TType.STRING, 'dataSetId', 'UTF8', None, ),  # 14
    (15, TType.LIST, 'inputDataSetIds', (TType.STRING, 'UTF8', False), None, ),  # 15
    (16, TType.STRING, 'outputDataSetId', 'UTF8', None, ),  # 16
    (17, TType.LIST, 'errors', (TType.STRUCT, [TJobError, None], False), None, ),  # 17
    (18, TType.STRING, 'backendUserInterfaceUrl', 'UTF8', None, ),  # 18
    (19, TType.I64, 'recordCount', None, None, ),  # 19
    (20, TType.STRING, 'name', 'UTF8', None, ),  # 20
)
all_structs.append(TBatchId)
TBatchId.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'timestampSeconds', None, None, ),  # 1
    (2, TType.I64, 'jobId', None, None, ),  # 2
    (3, TType.BYTE, 'jobType', None, None, ),  # 3
)
all_structs.append(TBatchJob)
TBatchJob.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'jobAbstract', [TJobAbstract, None], None, ),  # 1
    (2, TType.STRUCT, 'minInputBatchId', [TBatchId, None], None, ),  # 2
    (3, TType.STRUCT, 'maxInputBatchId', [TBatchId, None], None, ),  # 3
    (4, TType.STRUCT, 'minOutputBatchId', [TBatchId, None], None, ),  # 4
    (5, TType.STRUCT, 'maxOutputBatchId', [TBatchId, None], None, ),  # 5
)
all_structs.append(TSourcePermission)
TSourcePermission.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.I64, 'groupId', None, None, ),  # 2
    (3, TType.LIST, 'permissionsTypes', (TType.STRING, 'UTF8', False), None, ),  # 3
)
all_structs.append(TSourceTypeDescription)
TSourceTypeDescription.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'sourceTypeDescriptionId', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'version', 'UTF8', None, ),  # 3
    (4, TType.I32, 'executionMethod', None, None, ),  # 4
    (5, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 5
    (6, TType.STRING, 'sourceTypeId', 'UTF8', None, ),  # 6
    (7, TType.STRING, 'customParameterFormJavascriptPath', 'UTF8', None, ),  # 7
    (8, TType.LIST, 'parameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 8
    (9, TType.I64, 'addOnId', None, None, ),  # 9
    (10, TType.BOOL, 'disabled', None, None, ),  # 10
    (11, TType.LIST, 'flowParameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 11
)
all_structs.append(TImportTransformConfiguration)
TImportTransformConfiguration.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'typeId', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 2
    (3, TType.MAP, 'config', (TType.STRING, 'UTF8', TType.STRUCT, [koverse.thriftgen.ttypes.TConfigValue, None], False), None, ),  # 3
    (4, TType.I64, 'importFlowId', None, None, ),  # 4
    (5, TType.I64, 'id', None, None, ),  # 5
    (6, TType.I64, 'position', None, None, ),  # 6
    (7, TType.BOOL, 'enabled', None, None, ),  # 7
)
all_structs.append(TSource)
TSource.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'sourceId', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'typeId', 'UTF8', None, ),  # 3
    (4, TType.MAP, 'parameters', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 4
    (5, TType.BOOL, 'disabled', None, None, ),  # 5
    (6, TType.I64, 'userId', None, None, ),  # 6
    (7, TType.I64, 'importFlowId', None, None, ),  # 7
    (8, TType.BOOL, 'clearOutputDataSet', None, None, ),  # 8
)
all_structs.append(TImportTransformDescription)
TImportTransformDescription.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'displayName', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'typeId', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'description', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 4
    (5, TType.LIST, 'parameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 5
)
all_structs.append(TImportJob)
TImportJob.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'jobAbstract', [TJobAbstract, None], None, ),  # 1
    (2, TType.STRING, 'hadoopName', 'UTF8', None, ),  # 2
    (3, TType.I64, 'sourceId', None, None, ),  # 3
    (4, TType.STRING, 'collectionId', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'className', 'UTF8', None, ),  # 5
    (6, TType.I32, 'jobType', None, None, ),  # 6
    (7, TType.I64, 'recordCount', None, None, ),  # 7
    (8, TType.LIST, 'transforms', (TType.STRUCT, [TImportTransformConfiguration, None], False), None, ),  # 8
    (9, TType.I64, 'responsibleUserId', None, None, ),  # 9
)
all_structs.append(TTransformSchedule)
TTransformSchedule.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'schedule', [koverse.thriftgen.ttypes.TSchedule, None], None, ),  # 1
    (2, TType.I64, 'transformId', None, None, ),  # 2
)
all_structs.append(TExportSchedule)
TExportSchedule.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'schedule', [koverse.thriftgen.ttypes.TSchedule, None], None, ),  # 1
    (2, TType.I64, 'sinkId', None, None, ),  # 2
)
all_structs.append(TImportFlowSchedule)
TImportFlowSchedule.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'schedule', [koverse.thriftgen.ttypes.TSchedule, None], None, ),  # 1
    (2, TType.I64, 'importFlowId', None, None, ),  # 2
)
all_structs.append(TImportFlow)
TImportFlow.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'importFlowId', None, None, ),  # 1
    (2, TType.I64, 'creationDate', None, None, ),  # 2
    (3, TType.I64, 'disabledDate', None, None, ),  # 3
    (4, TType.I64, 'lastUpdatedDate', None, None, ),  # 4
    (5, TType.I64, 'executionCount', None, None, ),  # 5
    (6, TType.I64, 'lastExecutionDate', None, None, ),  # 6
    (7, TType.I64, 'sourceId', None, None, ),  # 7
    (8, TType.STRING, 'dataCollectionId', 'UTF8', None, ),  # 8
    (9, TType.I64, 'responsibleUserId', None, None, ),  # 9
    (10, TType.STRING, 'type', 'UTF8', None, ),  # 10
    (11, TType.BOOL, 'disabled', None, None, ),  # 11
    (12, TType.LIST, 'schedules', (TType.STRUCT, [TImportFlowSchedule, None], False), None, ),  # 12
    (13, TType.LIST, 'transforms', (TType.STRUCT, [TImportTransformConfiguration, None], False), None, ),  # 13
    (14, TType.MAP, 'configurationOptions', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 14
    (15, TType.MAP, 'ingestState', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 15
)
all_structs.append(TTransformTypeStageDescription)
TTransformTypeStageDescription.thrift_spec = (
    None,  # 0
    (1, TType.MAP, 'options', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.STRING, 'className', 'UTF8', None, ),  # 2
    (3, TType.I32, 'stageType', None, None, ),  # 3
    (4, TType.STRING, 'mapInputKeyClassName', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'mapInputValueClassName', 'UTF8', None, ),  # 5
    (6, TType.STRING, 'mapOutputKeyClassName', 'UTF8', None, ),  # 6
    (7, TType.STRING, 'mapOutputValueClassName', 'UTF8', None, ),  # 7
)
all_structs.append(TTransform)
TTransform.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'transformId', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'type', 'UTF8', None, ),  # 3
    (4, TType.I64, 'userId', None, None, ),  # 4
    (5, TType.LIST, 'jobIds', (TType.I64, None, False), None, ),  # 5
    (6, TType.MAP, 'parameters', (TType.STRING, 'UTF8', TType.STRUCT, [koverse.thriftgen.ttypes.TConfigValue, None], False), None, ),  # 6
    (7, TType.STRING, 'backend', 'UTF8', None, ),  # 7
    (8, TType.BOOL, 'disabled', None, None, ),  # 8
    (9, TType.I64, 'creationDate', None, None, ),  # 9
    (10, TType.I64, 'lastUpdatedDate', None, None, ),  # 10
    (11, TType.BOOL, 'replaceOutputData', None, None, ),  # 11
    (12, TType.STRING, 'scheduleType', 'UTF8', None, ),  # 12
    (13, TType.I64, 'minimumExecutionPeriod', None, None, ),  # 13
    (14, TType.STRING, 'inputDataWindowType', 'UTF8', None, ),  # 14
    (15, TType.I64, 'inputDataSlidingWindowSizeSeconds', None, None, ),  # 15
    (16, TType.I64, 'inputDataSlidingWindowOffsetSeconds', None, None, ),  # 16
)
all_structs.append(TTransformJob)
TTransformJob.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'batchJob', [TBatchJob, None], None, ),  # 1
    (2, TType.I64, 'transformId', None, None, ),  # 2
    (3, TType.MAP, 'parameters', (TType.STRING, 'UTF8', TType.STRUCT, [koverse.thriftgen.ttypes.TConfigValue, None], False), None, ),  # 3
    (4, TType.LIST, 'stages', (TType.STRUCT, [TTransformTypeStageDescription, None], False), None, ),  # 4
    (5, TType.I64, 'transformTypeId', None, None, ),  # 5
    (6, TType.I32, 'requestedWorkers', None, None, ),  # 6
    (7, TType.STRING, 'backend', 'UTF8', None, ),  # 7
    (8, TType.BOOL, 'replaceOutputData', None, None, ),  # 8
    (9, TType.I64, 'minimumExecutionPeriod', None, None, ),  # 9
    (10, TType.STRING, 'inputDataWindowType', 'UTF8', None, ),  # 10
    (11, TType.I64, 'inputDataSlidingWindowSizeSeconds', None, None, ),  # 11
    (12, TType.STRING, 'hadoopName', 'UTF8', None, ),  # 12
    (13, TType.SET, 'mapreduceJobIds', (TType.STRING, 'UTF8', False), None, ),  # 13
)
all_structs.append(TTransformType)
TTransformType.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'jobTypeId', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'name', 'UTF8', None, ),  # 3
    (4, TType.LIST, 'parameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 4
    (5, TType.BOOL, 'disabled', None, None, ),  # 5
    (6, TType.I64, 'addOnId', None, None, ),  # 6
    (7, TType.STRING, 'transformClassName', 'UTF8', None, ),  # 7
    (8, TType.STRING, 'version', 'UTF8', None, ),  # 8
    (9, TType.BOOL, 'supportsIncrementalProcessing', None, None, ),  # 9
    (10, TType.LIST, 'stages', (TType.STRUCT, [TTransformTypeStageDescription, None], False), None, ),  # 10
    (11, TType.STRING, 'description', 'UTF8', None, ),  # 11
)
all_structs.append(TExportTransformDescription)
TExportTransformDescription.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'displayName', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'typeId', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'description', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 4
    (5, TType.LIST, 'parameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 5
)
all_structs.append(TExportTransformConfiguration)
TExportTransformConfiguration.thrift_spec = (
    None,  # 0
    (1, TType.STRING, 'typeId', 'UTF8', None, ),  # 1
    (2, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 2
    (3, TType.MAP, 'config', (TType.STRING, 'UTF8', TType.STRUCT, [koverse.thriftgen.ttypes.TConfigValue, None], False), None, ),  # 3
)
all_structs.append(TSink)
TSink.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'type', 'UTF8', None, ),  # 3
    (4, TType.MAP, 'parameters', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 4
    (5, TType.BOOL, 'disabled', None, None, ),  # 5
    (6, TType.STRING, 'scheduleType', 'UTF8', None, ),  # 6
    (7, TType.LIST, 'transforms', (TType.STRUCT, [TExportTransformConfiguration, None], False), None, ),  # 7
    (8, TType.STRING, 'inputDataWindowType', 'UTF8', None, ),  # 8
)
all_structs.append(TSinkTypeDescription)
TSinkTypeDescription.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.I32, 'executionMethod', None, None, ),  # 3
    (4, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'sinkTypeId', 'UTF8', None, ),  # 5
    (6, TType.LIST, 'sinkParameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 6
    (7, TType.I64, 'addOnId', None, None, ),  # 7
    (8, TType.BOOL, 'disabled', None, None, ),  # 8
    (9, TType.STRING, 'version', 'UTF8', None, ),  # 9
)
all_structs.append(TExportJob)
TExportJob.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'jobAbstract', [TJobAbstract, None], None, ),  # 1
    (2, TType.STRING, 'hadoopName', 'UTF8', None, ),  # 2
    (3, TType.I64, 'sinkId', None, None, ),  # 3
    (4, TType.STRING, 'sourceCollectionId', 'UTF8', None, ),  # 4
    (5, TType.MAP, 'parameters', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ),  # 5
    (6, TType.STRING, 'className', 'UTF8', None, ),  # 6
    (7, TType.STRING, 'timeField', 'UTF8', None, ),  # 7
    (8, TType.STRING, 'timeFormat', 'UTF8', None, ),  # 8
    (9, TType.I64, 'recordCount', None, None, ),  # 9
    (10, TType.LIST, 'transforms', (TType.STRUCT, [TExportTransformConfiguration, None], False), None, ),  # 10
    (11, TType.STRING, 'inputDataWindowType', 'UTF8', None, ),  # 11
)
all_structs.append(TExportFileFormatDescription)
TExportFileFormatDescription.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'typeId', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'description', 'UTF8', None, ),  # 5
    (6, TType.LIST, 'parameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 6
    (7, TType.I64, 'addOnId', None, None, ),  # 7
    (8, TType.BOOL, 'disabled', None, None, ),  # 8
    (9, TType.STRING, 'version', 'UTF8', None, ),  # 9
)
all_structs.append(TRecordsProviderDescription)
TRecordsProviderDescription.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'implementationClassName', 'UTF8', None, ),  # 3
    (4, TType.STRING, 'typeId', 'UTF8', None, ),  # 4
    (5, TType.STRING, 'description', 'UTF8', None, ),  # 5
    (6, TType.LIST, 'parameters', (TType.STRUCT, [koverse.thriftgen.ttypes.TParameter, None], False), None, ),  # 6
    (7, TType.I64, 'addOnId', None, None, ),  # 7
    (8, TType.BOOL, 'disabled', None, None, ),  # 8
    (9, TType.STRING, 'version', 'UTF8', None, ),  # 9
    (10, TType.I32, 'priority', None, None, ),  # 10
    (11, TType.SET, 'extensions', (TType.STRING, 'UTF8', False), None, ),  # 11
)
all_structs.append(TDataCollectionBatchJob)
TDataCollectionBatchJob.thrift_spec = (
    None,  # 0
    (1, TType.STRUCT, 'batchJob', [TBatchJob, None], None, ),  # 1
    (2, TType.STRING, 'collectionId', 'UTF8', None, ),  # 2
    (3, TType.STRING, 'hadoopJobName', 'UTF8', None, ),  # 3
    (4, TType.DOUBLE, 'mapProgress', None, None, ),  # 4
    (5, TType.DOUBLE, 'reduceProgress', None, None, ),  # 5
)
all_structs.append(TImportSample)
TImportSample.thrift_spec = (
    None,  # 0
    (1, TType.LIST, 'problems', (TType.STRING, 'UTF8', False), None, ),  # 1
    (2, TType.LIST, 'records', (TType.STRUCT, [koverse.thriftgen.ttypes.TSimpleRecord, None], False), None, ),  # 2
    (3, TType.BOOL, 'flatSchema', None, None, ),  # 3
    (4, TType.STRING, 'parserClassName', 'UTF8', None, ),  # 4
    (5, TType.LIST, 'problemDetails', (TType.STRING, 'UTF8', False), None, ),  # 5
)
all_structs.append(TWorkflow)
TWorkflow.thrift_spec = (
    None,  # 0
    (1, TType.I64, 'id', None, None, ),  # 1
    (2, TType.STRING, 'name', 'UTF8', None, ),  # 2
    (3, TType.LIST, 'notificationEmails', (TType.STRING, 'UTF8', False), None, ),  # 3
    (4, TType.LIST, 'importFlowIds', (TType.I64, None, False), None, ),  # 4
    (5, TType.LIST, 'transformIds', (TType.I64, None, False), None, ),  # 5
    (6, TType.LIST, 'sinkIds', (TType.I64, None, False), None, ),  # 6
    (7, TType.I64, 'successImportFlowId', None, None, ),  # 7
    (8, TType.I64, 'successTransformId', None, None, ),  # 8
    (9, TType.I64, 'successSinkId', None, None, ),  # 9
)
fix_spec(all_structs)
del all_structs
