class DeleteGroupsResponse_v0(Response): API_KEY = 42 API_VERSION = 0 SCHEMA = Schema( ("throttle_time_ms", Int32), ("results", Array(("group_id", String("utf-8")), ("error_code", Int16))), )
class SaslAuthenticateRequest_v0(Request): API_KEY = 36 API_VERSION = 0 RESPONSE_TYPE = SaslAuthenticateResponse_v0 SCHEMA = Schema( ('sasl_auth_bytes', Bytes) )
class Struct(AbstractType): SCHEMA = Schema() def __init__(self, *args, **kwargs): if len(args) == len(self.SCHEMA.fields): for i, name in enumerate(self.SCHEMA.names): self.__dict__[name] = args[i] elif len(args) > 0: raise ValueError("Args must be empty or mirror schema") else: for name in self.SCHEMA.names: self.__dict__[name] = kwargs.pop(name, None) if kwargs: raise ValueError( "Keyword(s) not in schema %s: %s" % (list(self.SCHEMA.names), ", ".join(kwargs.keys()))) # overloading encode() to support both class and instance # Without WeakMethod() this creates circular ref, which # causes instances to "leak" to garbage self.encode = WeakMethod(self._encode_self) @classmethod def encode(cls, item): # pylint: disable=E0202 bits = [] for i, field in enumerate(cls.SCHEMA.fields): bits.append(field.encode(item[i])) return b"".join(bits) def _encode_self(self): return self.SCHEMA.encode( [self.__dict__[name] for name in self.SCHEMA.names]) @classmethod def decode(cls, data): if isinstance(data, bytes): data = BytesIO(data) return cls(*[field.decode(data) for field in cls.SCHEMA.fields]) def get_item(self, name): if name not in self.SCHEMA.names: raise KeyError("%s is not in the schema" % name) return self.__dict__[name] def __repr__(self): key_vals = [] for name, field in zip(self.SCHEMA.names, self.SCHEMA.fields): key_vals.append("%s=%s" % (name, field.repr(self.__dict__[name]))) return self.__class__.__name__ + "(" + ", ".join(key_vals) + ")" def __hash__(self): return hash(self.encode()) def __eq__(self, other): if self.SCHEMA != other.SCHEMA: return False for attr in self.SCHEMA.names: if self.__dict__[attr] != other.__dict__[attr]: return False return True
class OffsetCommitRequest_v2(Request): API_KEY = 8 API_VERSION = 2 # added retention_time, dropped timestamp RESPONSE_TYPE = OffsetCommitResponse_v2 SCHEMA = Schema( ("consumer_group", String("utf-8")), ("consumer_group_generation_id", Int32), ("consumer_id", String("utf-8")), ("retention_time", Int64), ( "topics", Array( ("topic", String("utf-8")), ( "partitions", Array( ("partition", Int32), ("offset", Int64), ("metadata", String("utf-8")), ), ), ), ), ) DEFAULT_GENERATION_ID = -1 DEFAULT_RETENTION_TIME = -1
class FetchRequest_v11(Request): """ added rack ID to support read from followers (KIP-392) """ API_KEY = 1 API_VERSION = 11 RESPONSE_TYPE = FetchResponse_v11 SCHEMA = Schema( ('replica_id', Int32), ('max_wait_time', Int32), ('min_bytes', Int32), ('max_bytes', Int32), ('isolation_level', Int8), ('session_id', Int32), ('session_epoch', Int32), ('topics', Array(('topic', String('utf-8')), ('partitions', Array(('partition', Int32), ('current_leader_epoch', Int32), ('fetch_offset', Int64), ('log_start_offset', Int64), ('max_bytes', Int32))))), ('forgotten_topics_data', Array(('topic', String), ('partitions', Array(Int32)))), ('rack_id', String('utf-8')), )
class CreatePartitionsResponse_v0(Response): API_KEY = 37 API_VERSION = 0 SCHEMA = Schema(('throttle_time_ms', Int32), ('topic_errors', Array(('topic', String('utf-8')), ('error_code', Int16), ('error_message', String('utf-8')))))
class ApiVersionResponse_v0(Response): API_KEY = 18 API_VERSION = 0 SCHEMA = Schema(('error_code', Int16), ('api_versions', Array(('api_key', Int16), ('min_version', Int16), ('max_version', Int16))))
class DeleteAclsResponse_v1(Response): API_KEY = 31 API_VERSION = 1 SCHEMA = Schema( ("throttle_time_ms", Int32), ( "filter_responses", Array( ("error_code", Int16), ("error_message", String("utf-8")), ( "matching_acls", Array( ("error_code", Int16), ("error_message", String("utf-8")), ("resource_type", Int8), ("resource_name", String("utf-8")), ("resource_pattern_type", Int8), ("principal", String("utf-8")), ("host", String("utf-8")), ("operation", Int8), ("permission_type", Int8), ), ), ), ), )
class DescribeConfigsResponse_v2(Response): API_KEY = 32 API_VERSION = 2 SCHEMA = Schema( ("throttle_time_ms", Int32), ( "resources", Array( ("error_code", Int16), ("error_message", String("utf-8")), ("resource_type", Int8), ("resource_name", String("utf-8")), ( "config_entries", Array( ("config_names", String("utf-8")), ("config_value", String("utf-8")), ("read_only", Boolean), ("config_source", Int8), ("is_sensitive", Boolean), ( "config_synonyms", Array( ("config_name", String("utf-8")), ("config_value", String("utf-8")), ("config_source", Int8), ), ), ), ), ), ), )
class DescribeGroupsResponse_v3(Response): API_KEY = 15 API_VERSION = 3 SCHEMA = Schema( ("throttle_time_ms", Int32), ( "groups", Array( ("error_code", Int16), ("group", String("utf-8")), ("state", String("utf-8")), ("protocol_type", String("utf-8")), ("protocol", String("utf-8")), ( "members", Array( ("member_id", String("utf-8")), ("client_id", String("utf-8")), ("client_host", String("utf-8")), ("member_metadata", Bytes), ("member_assignment", Bytes), ), ), ), ("authorized_operations", Int32), ), )
class DescribeGroupsRequest_v3(Request): API_KEY = 15 API_VERSION = 3 RESPONSE_TYPE = DescribeGroupsResponse_v2 SCHEMA = Schema( ("groups", Array(String("utf-8"))), ("include_authorized_operations", Boolean) )
class DescribeGroupsResponse_v0(Response): API_KEY = 15 API_VERSION = 0 SCHEMA = Schema( ( "groups", Array( ("error_code", Int16), ("group", String("utf-8")), ("state", String("utf-8")), ("protocol_type", String("utf-8")), ("protocol", String("utf-8")), ( "members", Array( ("member_id", String("utf-8")), ("client_id", String("utf-8")), ("client_host", String("utf-8")), ("member_metadata", Bytes), ("member_assignment", Bytes), ), ), ), ) )
class DeleteTopicsResponse_v1(Response): API_KEY = 20 API_VERSION = 1 SCHEMA = Schema( ("throttle_time_ms", Int32), ("topic_error_codes", Array(("topic", String("utf-8")), ("error_code", Int16))), )
class CreateTopicsRequest_v1(Request): API_KEY = 19 API_VERSION = 1 RESPONSE_TYPE = CreateTopicsResponse_v1 SCHEMA = Schema( ( "create_topic_requests", Array( ("topic", String("utf-8")), ("num_partitions", Int32), ("replication_factor", Int16), ( "replica_assignment", Array(("partition_id", Int32), ("replicas", Array(Int32))), ), ( "configs", Array( ("config_key", String("utf-8")), ("config_value", String("utf-8")), ), ), ), ), ("timeout", Int32), ("validate_only", Boolean), )
class ListGroupsResponse_v1(Response): API_KEY = 16 API_VERSION = 1 SCHEMA = Schema(('throttle_time_ms', Int32), ('error_code', Int16), ('groups', Array(('group', String('utf-8')), ('protocol_type', String('utf-8')))))
class DeleteGroupsRequest_v0(Request): API_KEY = 42 API_VERSION = 0 RESPONSE_TYPE = DeleteGroupsResponse_v0 SCHEMA = Schema( ("groups_names", Array(String("utf-8"))) )
class CreateAclsResponse_v0(Response): API_KEY = 30 API_VERSION = 0 SCHEMA = Schema(('throttle_time_ms', Int32), ('creation_responses', Array(('error_code', Int16), ('error_message', String('utf-8')))))
class DescribeGroupsRequest_v0(Request): API_KEY = 15 API_VERSION = 0 RESPONSE_TYPE = DescribeGroupsResponse_v0 SCHEMA = Schema( ('groups', Array(String('utf-8'))) )
class CreateTopicsResponse_v2(Response): API_KEY = 19 API_VERSION = 2 SCHEMA = Schema(('throttle_time_ms', Int32), ('topic_errors', Array(('topic', String('utf-8')), ('error_code', Int16), ('error_message', String('utf-8')))))
class SaslHandShakeResponse_v0(Response): API_KEY = 17 API_VERSION = 0 SCHEMA = Schema( ('error_code', Int16), ('enabled_mechanisms', Array(String('utf-8'))) )
class OffsetFetchRequest_v0(Struct): API_KEY = API_KEY API_VERSION = 0 SCHEMA = Schema(('group_id', String('utf-8')), ('topics', Array(('topic', String('utf-8')), ('partitions', Array(Int32)))))
class SaslHandShakeRequest_v0(Request): API_KEY = 17 API_VERSION = 0 RESPONSE_TYPE = SaslHandShakeResponse_v0 SCHEMA = Schema( ('mechanism', String('utf-8')) )
class FetchRequest_v9(Request): """ adds the current leader epoch (see KIP-320) """ API_KEY = 1 API_VERSION = 9 RESPONSE_TYPE = FetchResponse_v9 SCHEMA = Schema( ('replica_id', Int32), ('max_wait_time', Int32), ('min_bytes', Int32), ('max_bytes', Int32), ('isolation_level', Int8), ('session_id', Int32), ('session_epoch', Int32), ('topics', Array(('topic', String('utf-8')), ('partitions', Array(('partition', Int32), ('current_leader_epoch', Int32), ('fetch_offset', Int64), ('log_start_offset', Int64), ('max_bytes', Int32))))), ('forgotten_topics_data', Array( ('topic', String), ('partitions', Array(Int32)), )), )
class ListGroupsResponse_v0(Response): API_KEY = 16 API_VERSION = 0 SCHEMA = Schema(('error_code', Int16), ('groups', Array(('group', String('utf-8')), ('protocol_type', String('utf-8')))))
class UpdateMetadataRequest_v2(Struct): API_KEY = API_KEY API_VERSION = 2 SCHEMA = Schema(('controller_id', Int32), ('controller_epoch', Int32), ('partition_states', Array( ('topic', String('utf-8')), ('partition', Int32), ('controller_epoch', Int32), ('leader', Int32), ('leader_epoch', Int32), ('isrs', Array(Int32)), ('zk_version', Int32), ('replicas', Array(Int32)), )), ('live_leaders', Array( ('id', Int32), ('end_points', Array( ('port', Int32), ('host', String('utf-8')), ('security_protocol_type', Int16), )), ('rack', String('utf-8')), )))
class GroupCoordinatorRequest_v1(Request): API_KEY = 10 API_VERSION = 1 RESPONSE_TYPE = GroupCoordinatorResponse_v1 SCHEMA = Schema( ('coordinator_key', String('utf-8')), ('coordinator_type', Int8) )
class DescribeConfigsRequest_v0(Request): API_KEY = 32 API_VERSION = 0 RESPONSE_TYPE = DescribeConfigsResponse_v0 SCHEMA = Schema( ('resources', Array(('resource_type', Int8), ('resource_name', String('utf-8')), ('config_names', Array(String('utf-8'))))))
class RequestHeader(Struct): SCHEMA = Schema(('api_key', Int16), ('api_version', Int16), ('correlation_id', Int32), ('client_id', String('utf-8'))) def __init__(self, request, correlation_id=0, client_id='kafka-python'): super(RequestHeader, self).__init__(request.API_KEY, request.API_VERSION, correlation_id, client_id)
class AlterConfigsResponse_v0(Response): API_KEY = 33 API_VERSION = 0 SCHEMA = Schema( ('throttle_time_ms', Int32), ('resources', Array(('error_code', Int16), ('error_message', String('utf-8')), ('resource_type', Int8), ('resource_name', String('utf-8')))))
class TestClass(superclass): API_KEY = 0 API_VERSION = 0 RESPONSE_TYPE = None # To satisfy the Request ABC SCHEMA = Schema(('myarray', Array(('subobject', Int16), ('othersubobject', String('utf-8')))), ('notarray', Int16))