kafka-python 3.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. kafka/__init__.py +34 -0
  2. kafka/__main__.py +5 -0
  3. kafka/admin/__init__.py +29 -0
  4. kafka/admin/__main__.py +5 -0
  5. kafka/admin/_acls.py +355 -0
  6. kafka/admin/_cluster.py +359 -0
  7. kafka/admin/_configs.py +479 -0
  8. kafka/admin/_groups.py +754 -0
  9. kafka/admin/_partitions.py +595 -0
  10. kafka/admin/_topics.py +281 -0
  11. kafka/admin/_transactions.py +450 -0
  12. kafka/admin/_users.py +194 -0
  13. kafka/admin/client.py +373 -0
  14. kafka/benchmarks/__init__.py +0 -0
  15. kafka/benchmarks/consumer_performance.py +138 -0
  16. kafka/benchmarks/load_example.py +109 -0
  17. kafka/benchmarks/producer_encode_path.py +201 -0
  18. kafka/benchmarks/producer_performance.py +161 -0
  19. kafka/benchmarks/profile_protocol.py +138 -0
  20. kafka/benchmarks/protocol_old_vs_new.py +447 -0
  21. kafka/benchmarks/record_batch_compose.py +77 -0
  22. kafka/benchmarks/record_batch_read.py +82 -0
  23. kafka/benchmarks/varint_speed.py +426 -0
  24. kafka/cli/__init__.py +36 -0
  25. kafka/cli/admin/__init__.py +117 -0
  26. kafka/cli/admin/acls/__init__.py +9 -0
  27. kafka/cli/admin/acls/common.py +76 -0
  28. kafka/cli/admin/acls/create.py +19 -0
  29. kafka/cli/admin/acls/delete.py +23 -0
  30. kafka/cli/admin/acls/describe.py +16 -0
  31. kafka/cli/admin/cluster/__init__.py +14 -0
  32. kafka/cli/admin/cluster/describe.py +11 -0
  33. kafka/cli/admin/cluster/describe_quorum.py +11 -0
  34. kafka/cli/admin/cluster/features.py +52 -0
  35. kafka/cli/admin/cluster/log_dirs.py +43 -0
  36. kafka/cli/admin/cluster/versions.py +33 -0
  37. kafka/cli/admin/configs/__init__.py +10 -0
  38. kafka/cli/admin/configs/alter.py +43 -0
  39. kafka/cli/admin/configs/common.py +17 -0
  40. kafka/cli/admin/configs/describe.py +30 -0
  41. kafka/cli/admin/configs/list.py +16 -0
  42. kafka/cli/admin/configs/reset.py +20 -0
  43. kafka/cli/admin/groups/__init__.py +16 -0
  44. kafka/cli/admin/groups/alter_offsets.py +30 -0
  45. kafka/cli/admin/groups/delete.py +11 -0
  46. kafka/cli/admin/groups/delete_offsets.py +29 -0
  47. kafka/cli/admin/groups/describe.py +11 -0
  48. kafka/cli/admin/groups/list.py +28 -0
  49. kafka/cli/admin/groups/list_offsets.py +29 -0
  50. kafka/cli/admin/groups/remove_members.py +40 -0
  51. kafka/cli/admin/groups/reset_offsets.py +139 -0
  52. kafka/cli/admin/partitions/__init__.py +21 -0
  53. kafka/cli/admin/partitions/alter_reassignments.py +37 -0
  54. kafka/cli/admin/partitions/create.py +27 -0
  55. kafka/cli/admin/partitions/delete_records.py +31 -0
  56. kafka/cli/admin/partitions/describe.py +36 -0
  57. kafka/cli/admin/partitions/elect_leaders.py +53 -0
  58. kafka/cli/admin/partitions/list_offsets.py +88 -0
  59. kafka/cli/admin/partitions/list_reassignments.py +35 -0
  60. kafka/cli/admin/topics/__init__.py +10 -0
  61. kafka/cli/admin/topics/create.py +13 -0
  62. kafka/cli/admin/topics/delete.py +19 -0
  63. kafka/cli/admin/topics/describe.py +18 -0
  64. kafka/cli/admin/topics/list.py +11 -0
  65. kafka/cli/admin/transactions/__init__.py +17 -0
  66. kafka/cli/admin/transactions/abort.py +38 -0
  67. kafka/cli/admin/transactions/describe.py +24 -0
  68. kafka/cli/admin/transactions/describe_producers.py +29 -0
  69. kafka/cli/admin/transactions/find_hanging.py +26 -0
  70. kafka/cli/admin/transactions/list.py +37 -0
  71. kafka/cli/admin/users/__init__.py +8 -0
  72. kafka/cli/admin/users/alter_user_scram_credentials.py +34 -0
  73. kafka/cli/admin/users/describe_user_scram_credentials.py +15 -0
  74. kafka/cli/common.py +95 -0
  75. kafka/cli/consumer/__init__.py +63 -0
  76. kafka/cli/producer/__init__.py +57 -0
  77. kafka/cluster.py +824 -0
  78. kafka/codec.py +325 -0
  79. kafka/consumer/__init__.py +5 -0
  80. kafka/consumer/__main__.py +5 -0
  81. kafka/consumer/fetcher.py +2012 -0
  82. kafka/consumer/group.py +1347 -0
  83. kafka/consumer/subscription_state.py +897 -0
  84. kafka/coordinator/__init__.py +0 -0
  85. kafka/coordinator/assignors/__init__.py +0 -0
  86. kafka/coordinator/assignors/abstract.py +90 -0
  87. kafka/coordinator/assignors/cooperative_sticky.py +167 -0
  88. kafka/coordinator/assignors/range.py +81 -0
  89. kafka/coordinator/assignors/roundrobin.py +101 -0
  90. kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +37 -0
  91. kafka/coordinator/assignors/sticky/__init__.py +0 -0
  92. kafka/coordinator/assignors/sticky/partition_movements.py +149 -0
  93. kafka/coordinator/assignors/sticky/sorted_set.py +63 -0
  94. kafka/coordinator/assignors/sticky/sticky_assignor.py +665 -0
  95. kafka/coordinator/assignors/sticky/user_data.py +8 -0
  96. kafka/coordinator/base.py +1215 -0
  97. kafka/coordinator/consumer.py +1224 -0
  98. kafka/coordinator/heartbeat.py +82 -0
  99. kafka/coordinator/subscription.py +34 -0
  100. kafka/errors.py +1004 -0
  101. kafka/future.py +166 -0
  102. kafka/metrics/__init__.py +13 -0
  103. kafka/metrics/compound_stat.py +33 -0
  104. kafka/metrics/dict_reporter.py +81 -0
  105. kafka/metrics/kafka_metric.py +36 -0
  106. kafka/metrics/measurable.py +27 -0
  107. kafka/metrics/measurable_stat.py +13 -0
  108. kafka/metrics/metric_config.py +33 -0
  109. kafka/metrics/metric_name.py +105 -0
  110. kafka/metrics/metrics.py +261 -0
  111. kafka/metrics/metrics_reporter.py +53 -0
  112. kafka/metrics/quota.py +41 -0
  113. kafka/metrics/stat.py +19 -0
  114. kafka/metrics/stats/__init__.py +15 -0
  115. kafka/metrics/stats/avg.py +24 -0
  116. kafka/metrics/stats/count.py +17 -0
  117. kafka/metrics/stats/histogram.py +99 -0
  118. kafka/metrics/stats/max_stat.py +17 -0
  119. kafka/metrics/stats/min_stat.py +19 -0
  120. kafka/metrics/stats/percentile.py +14 -0
  121. kafka/metrics/stats/percentiles.py +75 -0
  122. kafka/metrics/stats/rate.py +118 -0
  123. kafka/metrics/stats/sampled_stat.py +99 -0
  124. kafka/metrics/stats/sensor.py +136 -0
  125. kafka/metrics/stats/total.py +15 -0
  126. kafka/net/__init__.py +19 -0
  127. kafka/net/compat.py +165 -0
  128. kafka/net/connection.py +593 -0
  129. kafka/net/http_connect.py +144 -0
  130. kafka/net/inet.py +122 -0
  131. kafka/net/manager.py +451 -0
  132. kafka/net/metrics.py +149 -0
  133. kafka/net/sasl/__init__.py +32 -0
  134. kafka/net/sasl/abc.py +28 -0
  135. kafka/net/sasl/gssapi.py +95 -0
  136. kafka/net/sasl/msk.py +245 -0
  137. kafka/net/sasl/oauth.py +98 -0
  138. kafka/net/sasl/plain.py +42 -0
  139. kafka/net/sasl/scram.py +135 -0
  140. kafka/net/sasl/sspi.py +111 -0
  141. kafka/net/selector.py +644 -0
  142. kafka/net/socks5.py +262 -0
  143. kafka/net/transport.py +415 -0
  144. kafka/net/wakeup_notifier.py +72 -0
  145. kafka/partitioner/__init__.py +8 -0
  146. kafka/partitioner/abc.py +8 -0
  147. kafka/partitioner/default.py +89 -0
  148. kafka/partitioner/sticky.py +109 -0
  149. kafka/producer/__init__.py +5 -0
  150. kafka/producer/__main__.py +5 -0
  151. kafka/producer/future.py +101 -0
  152. kafka/producer/kafka.py +1123 -0
  153. kafka/producer/producer_batch.py +192 -0
  154. kafka/producer/record_accumulator.py +647 -0
  155. kafka/producer/sender.py +884 -0
  156. kafka/producer/transaction_manager.py +1326 -0
  157. kafka/protocol/__init__.py +0 -0
  158. kafka/protocol/admin/__init__.py +29 -0
  159. kafka/protocol/admin/acl.py +83 -0
  160. kafka/protocol/admin/acl.pyi +375 -0
  161. kafka/protocol/admin/client_quotas.py +14 -0
  162. kafka/protocol/admin/client_quotas.pyi +265 -0
  163. kafka/protocol/admin/cluster.py +31 -0
  164. kafka/protocol/admin/cluster.pyi +620 -0
  165. kafka/protocol/admin/configs.py +22 -0
  166. kafka/protocol/admin/configs.pyi +437 -0
  167. kafka/protocol/admin/groups.py +24 -0
  168. kafka/protocol/admin/groups.pyi +261 -0
  169. kafka/protocol/admin/topics.py +53 -0
  170. kafka/protocol/admin/topics.pyi +982 -0
  171. kafka/protocol/admin/transactions.py +18 -0
  172. kafka/protocol/admin/transactions.pyi +311 -0
  173. kafka/protocol/admin/users.py +14 -0
  174. kafka/protocol/admin/users.pyi +223 -0
  175. kafka/protocol/api_data.py +125 -0
  176. kafka/protocol/api_header.py +55 -0
  177. kafka/protocol/api_key.py +97 -0
  178. kafka/protocol/api_message.py +277 -0
  179. kafka/protocol/broker_version_data.py +246 -0
  180. kafka/protocol/consumer/__init__.py +13 -0
  181. kafka/protocol/consumer/fetch.py +16 -0
  182. kafka/protocol/consumer/fetch.pyi +298 -0
  183. kafka/protocol/consumer/group.py +38 -0
  184. kafka/protocol/consumer/group.pyi +824 -0
  185. kafka/protocol/consumer/metadata.py +30 -0
  186. kafka/protocol/consumer/metadata.pyi +89 -0
  187. kafka/protocol/consumer/offsets.py +75 -0
  188. kafka/protocol/consumer/offsets.pyi +288 -0
  189. kafka/protocol/data_container.py +166 -0
  190. kafka/protocol/frame.py +30 -0
  191. kafka/protocol/generate_stubs.py +468 -0
  192. kafka/protocol/metadata/__init__.py +10 -0
  193. kafka/protocol/metadata/api_versions.py +41 -0
  194. kafka/protocol/metadata/api_versions.pyi +128 -0
  195. kafka/protocol/metadata/find_coordinator.py +19 -0
  196. kafka/protocol/metadata/find_coordinator.pyi +105 -0
  197. kafka/protocol/metadata/metadata.py +34 -0
  198. kafka/protocol/metadata/metadata.pyi +160 -0
  199. kafka/protocol/old/__init__.py +0 -0
  200. kafka/protocol/old/abstract.py +17 -0
  201. kafka/protocol/old/add_offsets_to_txn.py +54 -0
  202. kafka/protocol/old/add_partitions_to_txn.py +71 -0
  203. kafka/protocol/old/admin.py +1086 -0
  204. kafka/protocol/old/api.py +205 -0
  205. kafka/protocol/old/api_versions.py +133 -0
  206. kafka/protocol/old/commit.py +355 -0
  207. kafka/protocol/old/consumer_protocol.py +36 -0
  208. kafka/protocol/old/end_txn.py +53 -0
  209. kafka/protocol/old/fetch.py +408 -0
  210. kafka/protocol/old/find_coordinator.py +72 -0
  211. kafka/protocol/old/group.py +451 -0
  212. kafka/protocol/old/init_producer_id.py +42 -0
  213. kafka/protocol/old/list_offsets.py +186 -0
  214. kafka/protocol/old/metadata.py +290 -0
  215. kafka/protocol/old/offset_for_leader_epoch.py +133 -0
  216. kafka/protocol/old/produce.py +247 -0
  217. kafka/protocol/old/sasl_authenticate.py +38 -0
  218. kafka/protocol/old/sasl_handshake.py +39 -0
  219. kafka/protocol/old/struct.py +87 -0
  220. kafka/protocol/old/txn_offset_commit.py +73 -0
  221. kafka/protocol/old/types.py +440 -0
  222. kafka/protocol/parser.py +191 -0
  223. kafka/protocol/producer/__init__.py +7 -0
  224. kafka/protocol/producer/produce.py +17 -0
  225. kafka/protocol/producer/produce.pyi +197 -0
  226. kafka/protocol/producer/transaction.py +30 -0
  227. kafka/protocol/producer/transaction.pyi +663 -0
  228. kafka/protocol/sasl.py +52 -0
  229. kafka/protocol/sasl.pyi +126 -0
  230. kafka/protocol/schemas/__init__.py +7 -0
  231. kafka/protocol/schemas/fields/__init__.py +7 -0
  232. kafka/protocol/schemas/fields/array.py +127 -0
  233. kafka/protocol/schemas/fields/base.py +156 -0
  234. kafka/protocol/schemas/fields/codecs/__init__.py +12 -0
  235. kafka/protocol/schemas/fields/codecs/encode_buffer.py +82 -0
  236. kafka/protocol/schemas/fields/codecs/tagged_fields.py +109 -0
  237. kafka/protocol/schemas/fields/codecs/types.py +505 -0
  238. kafka/protocol/schemas/fields/codegen.py +40 -0
  239. kafka/protocol/schemas/fields/simple.py +127 -0
  240. kafka/protocol/schemas/fields/struct.py +357 -0
  241. kafka/protocol/schemas/fields/struct_array.py +142 -0
  242. kafka/protocol/schemas/load_json.py +42 -0
  243. kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +40 -0
  244. kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +35 -0
  245. kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +65 -0
  246. kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +60 -0
  247. kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +47 -0
  248. kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +41 -0
  249. kafka/protocol/schemas/resources/AlterConfigsRequest.json +43 -0
  250. kafka/protocol/schemas/resources/AlterConfigsResponse.json +39 -0
  251. kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +42 -0
  252. kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +47 -0
  253. kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +41 -0
  254. kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +41 -0
  255. kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +45 -0
  256. kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +35 -0
  257. kafka/protocol/schemas/resources/ApiVersionsRequest.json +34 -0
  258. kafka/protocol/schemas/resources/ApiVersionsResponse.json +79 -0
  259. kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +42 -0
  260. kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +49 -0
  261. kafka/protocol/schemas/resources/CreateAclsRequest.json +46 -0
  262. kafka/protocol/schemas/resources/CreateAclsResponse.json +37 -0
  263. kafka/protocol/schemas/resources/CreatePartitionsRequest.json +47 -0
  264. kafka/protocol/schemas/resources/CreatePartitionsResponse.json +41 -0
  265. kafka/protocol/schemas/resources/CreateTopicsRequest.json +65 -0
  266. kafka/protocol/schemas/resources/CreateTopicsResponse.json +72 -0
  267. kafka/protocol/schemas/resources/DeleteAclsRequest.json +46 -0
  268. kafka/protocol/schemas/resources/DeleteAclsResponse.json +59 -0
  269. kafka/protocol/schemas/resources/DeleteGroupsRequest.json +30 -0
  270. kafka/protocol/schemas/resources/DeleteGroupsResponse.json +36 -0
  271. kafka/protocol/schemas/resources/DeleteRecordsRequest.json +42 -0
  272. kafka/protocol/schemas/resources/DeleteRecordsResponse.json +43 -0
  273. kafka/protocol/schemas/resources/DeleteTopicsRequest.json +43 -0
  274. kafka/protocol/schemas/resources/DeleteTopicsResponse.json +52 -0
  275. kafka/protocol/schemas/resources/DescribeAclsRequest.json +43 -0
  276. kafka/protocol/schemas/resources/DescribeAclsResponse.json +55 -0
  277. kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +37 -0
  278. kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +47 -0
  279. kafka/protocol/schemas/resources/DescribeClusterRequest.json +35 -0
  280. kafka/protocol/schemas/resources/DescribeClusterResponse.json +56 -0
  281. kafka/protocol/schemas/resources/DescribeConfigsRequest.json +42 -0
  282. kafka/protocol/schemas/resources/DescribeConfigsResponse.json +69 -0
  283. kafka/protocol/schemas/resources/DescribeGroupsRequest.json +38 -0
  284. kafka/protocol/schemas/resources/DescribeGroupsResponse.json +74 -0
  285. kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +38 -0
  286. kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +65 -0
  287. kafka/protocol/schemas/resources/DescribeProducersRequest.json +32 -0
  288. kafka/protocol/schemas/resources/DescribeProducersResponse.json +55 -0
  289. kafka/protocol/schemas/resources/DescribeQuorumRequest.json +39 -0
  290. kafka/protocol/schemas/resources/DescribeQuorumResponse.json +82 -0
  291. kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +40 -0
  292. kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +66 -0
  293. kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +27 -0
  294. kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +52 -0
  295. kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +30 -0
  296. kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +45 -0
  297. kafka/protocol/schemas/resources/ElectLeadersRequest.json +41 -0
  298. kafka/protocol/schemas/resources/ElectLeadersResponse.json +45 -0
  299. kafka/protocol/schemas/resources/EndTxnRequest.json +43 -0
  300. kafka/protocol/schemas/resources/EndTxnResponse.json +41 -0
  301. kafka/protocol/schemas/resources/FetchRequest.json +125 -0
  302. kafka/protocol/schemas/resources/FetchResponse.json +124 -0
  303. kafka/protocol/schemas/resources/FindCoordinatorRequest.json +43 -0
  304. kafka/protocol/schemas/resources/FindCoordinatorResponse.json +58 -0
  305. kafka/protocol/schemas/resources/HeartbeatRequest.json +39 -0
  306. kafka/protocol/schemas/resources/HeartbeatResponse.json +35 -0
  307. kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +44 -0
  308. kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +38 -0
  309. kafka/protocol/schemas/resources/InitProducerIdRequest.json +50 -0
  310. kafka/protocol/schemas/resources/InitProducerIdResponse.json +47 -0
  311. kafka/protocol/schemas/resources/JoinGroupRequest.json +63 -0
  312. kafka/protocol/schemas/resources/JoinGroupResponse.json +69 -0
  313. kafka/protocol/schemas/resources/LeaveGroupRequest.json +47 -0
  314. kafka/protocol/schemas/resources/LeaveGroupResponse.json +47 -0
  315. kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +31 -0
  316. kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +37 -0
  317. kafka/protocol/schemas/resources/ListGroupsRequest.json +36 -0
  318. kafka/protocol/schemas/resources/ListGroupsResponse.json +49 -0
  319. kafka/protocol/schemas/resources/ListOffsetsRequest.json +72 -0
  320. kafka/protocol/schemas/resources/ListOffsetsResponse.json +71 -0
  321. kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +34 -0
  322. kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +46 -0
  323. kafka/protocol/schemas/resources/ListTransactionsRequest.json +40 -0
  324. kafka/protocol/schemas/resources/ListTransactionsResponse.json +42 -0
  325. kafka/protocol/schemas/resources/MetadataRequest.json +56 -0
  326. kafka/protocol/schemas/resources/MetadataResponse.json +101 -0
  327. kafka/protocol/schemas/resources/OffsetCommitRequest.json +76 -0
  328. kafka/protocol/schemas/resources/OffsetCommitResponse.json +71 -0
  329. kafka/protocol/schemas/resources/OffsetDeleteRequest.json +39 -0
  330. kafka/protocol/schemas/resources/OffsetDeleteResponse.json +42 -0
  331. kafka/protocol/schemas/resources/OffsetFetchRequest.json +76 -0
  332. kafka/protocol/schemas/resources/OffsetFetchResponse.json +107 -0
  333. kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +52 -0
  334. kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +51 -0
  335. kafka/protocol/schemas/resources/ProduceRequest.json +73 -0
  336. kafka/protocol/schemas/resources/ProduceResponse.json +96 -0
  337. kafka/protocol/schemas/resources/RequestHeader.json +44 -0
  338. kafka/protocol/schemas/resources/ResponseHeader.json +26 -0
  339. kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +29 -0
  340. kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +34 -0
  341. kafka/protocol/schemas/resources/SaslHandshakeRequest.json +31 -0
  342. kafka/protocol/schemas/resources/SaslHandshakeResponse.json +32 -0
  343. kafka/protocol/schemas/resources/SyncGroupRequest.json +56 -0
  344. kafka/protocol/schemas/resources/SyncGroupResponse.json +46 -0
  345. kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +68 -0
  346. kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +47 -0
  347. kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +43 -0
  348. kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +39 -0
  349. kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +49 -0
  350. kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +45 -0
  351. kafka/protocol/schemas/resources/__init__.py +0 -0
  352. kafka/record/__init__.py +3 -0
  353. kafka/record/_crc32c.py +161 -0
  354. kafka/record/abc.py +144 -0
  355. kafka/record/default_records.py +782 -0
  356. kafka/record/legacy_records.py +587 -0
  357. kafka/record/memory_records.py +255 -0
  358. kafka/record/util.py +135 -0
  359. kafka/serializer/__init__.py +4 -0
  360. kafka/serializer/abstract.py +20 -0
  361. kafka/serializer/default.py +16 -0
  362. kafka/serializer/json.py +17 -0
  363. kafka/serializer/wrapper.py +21 -0
  364. kafka/structs.py +69 -0
  365. kafka/util.py +159 -0
  366. kafka/vendor/__init__.py +0 -0
  367. kafka/version.py +1 -0
  368. kafka_python-3.0.0.dist-info/METADATA +319 -0
  369. kafka_python-3.0.0.dist-info/RECORD +373 -0
  370. kafka_python-3.0.0.dist-info/WHEEL +5 -0
  371. kafka_python-3.0.0.dist-info/entry_points.txt +2 -0
  372. kafka_python-3.0.0.dist-info/licenses/LICENSE +202 -0
  373. kafka_python-3.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,290 @@
1
+ from .api import Request, Response
2
+ from .types import Array, Boolean, Int16, Int32, Schema, String, BitField
3
+
4
+
5
+ class MetadataResponse_v0(Response):
6
+ API_KEY = 3
7
+ API_VERSION = 0
8
+ SCHEMA = Schema(
9
+ ('brokers', Array(
10
+ ('node_id', Int32),
11
+ ('host', String('utf-8')),
12
+ ('port', Int32))),
13
+ ('topics', Array(
14
+ ('error_code', Int16),
15
+ ('name', String('utf-8')),
16
+ ('partitions', Array(
17
+ ('error_code', Int16),
18
+ ('partition_index', Int32),
19
+ ('leader_id', Int32),
20
+ ('replica_nodes', Array(Int32)),
21
+ ('isr_nodes', Array(Int32))))))
22
+ )
23
+
24
+
25
+ class MetadataResponse_v1(Response):
26
+ API_KEY = 3
27
+ API_VERSION = 1
28
+ SCHEMA = Schema(
29
+ ('brokers', Array(
30
+ ('node_id', Int32),
31
+ ('host', String('utf-8')),
32
+ ('port', Int32),
33
+ ('rack', String('utf-8')))),
34
+ ('controller_id', Int32),
35
+ ('topics', Array(
36
+ ('error_code', Int16),
37
+ ('name', String('utf-8')),
38
+ ('is_internal', Boolean),
39
+ ('partitions', Array(
40
+ ('error_code', Int16),
41
+ ('partition_index', Int32),
42
+ ('leader_id', Int32),
43
+ ('replica_nodes', Array(Int32)),
44
+ ('isr_nodes', Array(Int32))))))
45
+ )
46
+
47
+
48
+ class MetadataResponse_v2(Response):
49
+ API_KEY = 3
50
+ API_VERSION = 2
51
+ SCHEMA = Schema(
52
+ ('brokers', Array(
53
+ ('node_id', Int32),
54
+ ('host', String('utf-8')),
55
+ ('port', Int32),
56
+ ('rack', String('utf-8')))),
57
+ ('cluster_id', String('utf-8')), # <-- Added cluster_id field in v2
58
+ ('controller_id', Int32),
59
+ ('topics', Array(
60
+ ('error_code', Int16),
61
+ ('name', String('utf-8')),
62
+ ('is_internal', Boolean),
63
+ ('partitions', Array(
64
+ ('error_code', Int16),
65
+ ('partition_index', Int32),
66
+ ('leader_id', Int32),
67
+ ('replica_nodes', Array(Int32)),
68
+ ('isr_nodes', Array(Int32))))))
69
+ )
70
+
71
+
72
+ class MetadataResponse_v3(Response):
73
+ API_KEY = 3
74
+ API_VERSION = 3
75
+ SCHEMA = Schema(
76
+ ('throttle_time_ms', Int32),
77
+ ('brokers', Array(
78
+ ('node_id', Int32),
79
+ ('host', String('utf-8')),
80
+ ('port', Int32),
81
+ ('rack', String('utf-8')))),
82
+ ('cluster_id', String('utf-8')),
83
+ ('controller_id', Int32),
84
+ ('topics', Array(
85
+ ('error_code', Int16),
86
+ ('name', String('utf-8')),
87
+ ('is_internal', Boolean),
88
+ ('partitions', Array(
89
+ ('error_code', Int16),
90
+ ('partition_index', Int32),
91
+ ('leader_id', Int32),
92
+ ('replica_nodes', Array(Int32)),
93
+ ('isr_nodes', Array(Int32))))))
94
+ )
95
+
96
+
97
+ class MetadataResponse_v4(Response):
98
+ API_KEY = 3
99
+ API_VERSION = 4
100
+ SCHEMA = MetadataResponse_v3.SCHEMA
101
+
102
+
103
+ class MetadataResponse_v5(Response):
104
+ API_KEY = 3
105
+ API_VERSION = 5
106
+ SCHEMA = Schema(
107
+ ('throttle_time_ms', Int32),
108
+ ('brokers', Array(
109
+ ('node_id', Int32),
110
+ ('host', String('utf-8')),
111
+ ('port', Int32),
112
+ ('rack', String('utf-8')))),
113
+ ('cluster_id', String('utf-8')),
114
+ ('controller_id', Int32),
115
+ ('topics', Array(
116
+ ('error_code', Int16),
117
+ ('name', String('utf-8')),
118
+ ('is_internal', Boolean),
119
+ ('partitions', Array(
120
+ ('error_code', Int16),
121
+ ('partition_index', Int32),
122
+ ('leader_id', Int32),
123
+ ('replica_nodes', Array(Int32)),
124
+ ('isr_nodes', Array(Int32)),
125
+ ('offline_replicas', Array(Int32))))))
126
+ )
127
+
128
+
129
+ class MetadataResponse_v6(Response):
130
+ """Metadata Request/Response v6 is the same as v5,
131
+ but on quota violation, brokers send out responses before throttling."""
132
+ API_KEY = 3
133
+ API_VERSION = 6
134
+ SCHEMA = MetadataResponse_v5.SCHEMA
135
+
136
+
137
+ class MetadataResponse_v7(Response):
138
+ """v7 adds per-partition leader_epoch field"""
139
+ API_KEY = 3
140
+ API_VERSION = 7
141
+ SCHEMA = Schema(
142
+ ('throttle_time_ms', Int32),
143
+ ('brokers', Array(
144
+ ('node_id', Int32),
145
+ ('host', String('utf-8')),
146
+ ('port', Int32),
147
+ ('rack', String('utf-8')))),
148
+ ('cluster_id', String('utf-8')),
149
+ ('controller_id', Int32),
150
+ ('topics', Array(
151
+ ('error_code', Int16),
152
+ ('name', String('utf-8')),
153
+ ('is_internal', Boolean),
154
+ ('partitions', Array(
155
+ ('error_code', Int16),
156
+ ('partition_index', Int32),
157
+ ('leader_id', Int32),
158
+ ('leader_epoch', Int32),
159
+ ('replica_nodes', Array(Int32)),
160
+ ('isr_nodes', Array(Int32)),
161
+ ('offline_replicas', Array(Int32))))))
162
+ )
163
+
164
+
165
+ class MetadataResponse_v8(Response):
166
+ """v8 adds authorized_operations fields"""
167
+ API_KEY = 3
168
+ API_VERSION = 8
169
+ SCHEMA = Schema(
170
+ ('throttle_time_ms', Int32),
171
+ ('brokers', Array(
172
+ ('node_id', Int32),
173
+ ('host', String('utf-8')),
174
+ ('port', Int32),
175
+ ('rack', String('utf-8')))),
176
+ ('cluster_id', String('utf-8')),
177
+ ('controller_id', Int32),
178
+ ('topics', Array(
179
+ ('error_code', Int16),
180
+ ('name', String('utf-8')),
181
+ ('is_internal', Boolean),
182
+ ('partitions', Array(
183
+ ('error_code', Int16),
184
+ ('partition_index', Int32),
185
+ ('leader_id', Int32),
186
+ ('leader_epoch', Int32),
187
+ ('replica_nodes', Array(Int32)),
188
+ ('isr_nodes', Array(Int32)),
189
+ ('offline_replicas', Array(Int32)))),
190
+ ('authorized_operations', BitField))),
191
+ ('authorized_operations', BitField)
192
+ )
193
+
194
+
195
+ class MetadataRequest_v0(Request):
196
+ API_KEY = 3
197
+ API_VERSION = 0
198
+ SCHEMA = Schema(
199
+ ('topics', Array(String('utf-8')))
200
+ )
201
+ ALL_TOPICS = [] # Empty Array (len 0) for topics returns all topics
202
+ NO_TOPICS = [] # v0 does not support a 'no topics' request, so we'll just ask for ALL
203
+
204
+
205
+ class MetadataRequest_v1(Request):
206
+ API_KEY = 3
207
+ API_VERSION = 1
208
+ SCHEMA = MetadataRequest_v0.SCHEMA
209
+ ALL_TOPICS = None # Null Array (len -1) for topics returns all topics
210
+ NO_TOPICS = [] # Empty array (len 0) for topics returns no topics
211
+
212
+
213
+ class MetadataRequest_v2(Request):
214
+ API_KEY = 3
215
+ API_VERSION = 2
216
+ SCHEMA = MetadataRequest_v1.SCHEMA
217
+ ALL_TOPICS = None
218
+ NO_TOPICS = []
219
+
220
+
221
+ class MetadataRequest_v3(Request):
222
+ API_KEY = 3
223
+ API_VERSION = 3
224
+ SCHEMA = MetadataRequest_v1.SCHEMA
225
+ ALL_TOPICS = None
226
+ NO_TOPICS = []
227
+
228
+
229
+ class MetadataRequest_v4(Request):
230
+ API_KEY = 3
231
+ API_VERSION = 4
232
+ SCHEMA = Schema(
233
+ ('topics', Array(String('utf-8'))),
234
+ ('allow_auto_topic_creation', Boolean)
235
+ )
236
+ ALL_TOPICS = None
237
+ NO_TOPICS = []
238
+
239
+
240
+ class MetadataRequest_v5(Request):
241
+ """
242
+ The v5 metadata request is the same as v4.
243
+ An additional field for offline_replicas has been added to the v5 metadata response
244
+ """
245
+ API_KEY = 3
246
+ API_VERSION = 5
247
+ SCHEMA = MetadataRequest_v4.SCHEMA
248
+ ALL_TOPICS = None
249
+ NO_TOPICS = []
250
+
251
+
252
+ class MetadataRequest_v6(Request):
253
+ API_KEY = 3
254
+ API_VERSION = 6
255
+ SCHEMA = MetadataRequest_v5.SCHEMA
256
+ ALL_TOPICS = None
257
+ NO_TOPICS = []
258
+
259
+
260
+ class MetadataRequest_v7(Request):
261
+ API_KEY = 3
262
+ API_VERSION = 7
263
+ SCHEMA = MetadataRequest_v6.SCHEMA
264
+ ALL_TOPICS = None
265
+ NO_TOPICS = []
266
+
267
+
268
+ class MetadataRequest_v8(Request):
269
+ API_KEY = 3
270
+ API_VERSION = 8
271
+ SCHEMA = Schema(
272
+ ('topics', Array(String('utf-8'))),
273
+ ('allow_auto_topic_creation', Boolean),
274
+ ('include_cluster_authorized_operations', Boolean),
275
+ ('include_topic_authorized_operations', Boolean)
276
+ )
277
+ ALL_TOPICS = None
278
+ NO_TOPICS = []
279
+
280
+
281
+ MetadataRequest = [
282
+ MetadataRequest_v0, MetadataRequest_v1, MetadataRequest_v2,
283
+ MetadataRequest_v3, MetadataRequest_v4, MetadataRequest_v5,
284
+ MetadataRequest_v6, MetadataRequest_v7, MetadataRequest_v8,
285
+ ]
286
+ MetadataResponse = [
287
+ MetadataResponse_v0, MetadataResponse_v1, MetadataResponse_v2,
288
+ MetadataResponse_v3, MetadataResponse_v4, MetadataResponse_v5,
289
+ MetadataResponse_v6, MetadataResponse_v7, MetadataResponse_v8,
290
+ ]
@@ -0,0 +1,133 @@
1
+ from .api import Request, Response
2
+ from .types import Array, CompactArray, CompactString, Int16, Int32, Int64, Schema, String, TaggedFields
3
+
4
+
5
+ class OffsetForLeaderEpochResponse_v0(Response):
6
+ API_KEY = 23
7
+ API_VERSION = 0
8
+ SCHEMA = Schema(
9
+ ('topics', Array(
10
+ ('topic', String('utf-8')),
11
+ ('partitions', Array(
12
+ ('error_code', Int16),
13
+ ('partition', Int32),
14
+ ('end_offset', Int64))))))
15
+
16
+
17
+ class OffsetForLeaderEpochResponse_v1(Response):
18
+ API_KEY = 23
19
+ API_VERSION = 1
20
+ SCHEMA = Schema(
21
+ ('topics', Array(
22
+ ('topic', String('utf-8')),
23
+ ('partitions', Array(
24
+ ('error_code', Int16),
25
+ ('partition', Int32),
26
+ ('leader_epoch', Int32),
27
+ ('end_offset', Int64))))))
28
+
29
+
30
+ class OffsetForLeaderEpochResponse_v2(Response):
31
+ API_KEY = 23
32
+ API_VERSION = 2
33
+ SCHEMA = Schema(
34
+ ('throttle_time_ms', Int32),
35
+ ('topics', Array(
36
+ ('topic', String('utf-8')),
37
+ ('partitions', Array(
38
+ ('error_code', Int16),
39
+ ('partition', Int32),
40
+ ('leader_epoch', Int32),
41
+ ('end_offset', Int64))))))
42
+
43
+
44
+ class OffsetForLeaderEpochResponse_v3(Response):
45
+ API_KEY = 23
46
+ API_VERSION = 3
47
+ SCHEMA = OffsetForLeaderEpochResponse_v2.SCHEMA
48
+
49
+
50
+ class OffsetForLeaderEpochResponse_v4(Response):
51
+ API_KEY = 23
52
+ API_VERSION = 4
53
+ SCHEMA = Schema(
54
+ ('throttle_time_ms', Int32),
55
+ ('topics', CompactArray(
56
+ ('topic', CompactString('utf-8')),
57
+ ('partitions', CompactArray(
58
+ ('error_code', Int16),
59
+ ('partition', Int32),
60
+ ('leader_epoch', Int32),
61
+ ('end_offset', Int64),
62
+ ('tags', TaggedFields))),
63
+ ('tags', TaggedFields))),
64
+ ('tags', TaggedFields))
65
+
66
+
67
+ class OffsetForLeaderEpochRequest_v0(Request):
68
+ API_KEY = 23
69
+ API_VERSION = 0
70
+ SCHEMA = Schema(
71
+ ('topics', Array(
72
+ ('topic', String('utf-8')),
73
+ ('partitions', Array(
74
+ ('partition', Int32),
75
+ ('leader_epoch', Int32))))))
76
+
77
+
78
+ class OffsetForLeaderEpochRequest_v1(Request):
79
+ API_KEY = 23
80
+ API_VERSION = 1
81
+ SCHEMA = OffsetForLeaderEpochRequest_v0.SCHEMA
82
+
83
+
84
+ class OffsetForLeaderEpochRequest_v2(Request):
85
+ API_KEY = 23
86
+ API_VERSION = 2
87
+ SCHEMA = Schema(
88
+ ('topics', Array(
89
+ ('topic', String('utf-8')),
90
+ ('partitions', Array(
91
+ ('partition', Int32),
92
+ ('current_leader_epoch', Int32),
93
+ ('leader_epoch', Int32))))))
94
+
95
+
96
+ class OffsetForLeaderEpochRequest_v3(Request):
97
+ API_KEY = 23
98
+ API_VERSION = 3
99
+ SCHEMA = Schema(
100
+ ('replica_id', Int32),
101
+ ('topics', Array(
102
+ ('topic', String('utf-8')),
103
+ ('partitions', Array(
104
+ ('partition', Int32),
105
+ ('current_leader_epoch', Int32),
106
+ ('leader_epoch', Int32))))))
107
+
108
+
109
+ class OffsetForLeaderEpochRequest_v4(Request):
110
+ API_KEY = 23
111
+ API_VERSION = 4
112
+ SCHEMA = Schema(
113
+ ('replica_id', Int32),
114
+ ('topics', CompactArray(
115
+ ('topic', CompactString('utf-8')),
116
+ ('partitions', CompactArray(
117
+ ('partition', Int32),
118
+ ('current_leader_epoch', Int32),
119
+ ('leader_epoch', Int32),
120
+ ('tags', TaggedFields))),
121
+ ('tags', TaggedFields))),
122
+ ('tags', TaggedFields))
123
+
124
+ OffsetForLeaderEpochRequest = [
125
+ OffsetForLeaderEpochRequest_v0, OffsetForLeaderEpochRequest_v1,
126
+ OffsetForLeaderEpochRequest_v2, OffsetForLeaderEpochRequest_v3,
127
+ OffsetForLeaderEpochRequest_v4,
128
+ ]
129
+ OffsetForLeaderEpochResponse = [
130
+ OffsetForLeaderEpochResponse_v0, OffsetForLeaderEpochResponse_v1,
131
+ OffsetForLeaderEpochResponse_v2, OffsetForLeaderEpochResponse_v3,
132
+ OffsetForLeaderEpochResponse_v4,
133
+ ]
@@ -0,0 +1,247 @@
1
+ from .api import Request, Response
2
+ from .types import Int16, Int32, Int64, String, Array, Schema, Bytes
3
+
4
+
5
+ class ProduceResponse_v0(Response):
6
+ API_KEY = 0
7
+ API_VERSION = 0
8
+ SCHEMA = Schema(
9
+ ('responses', Array(
10
+ ('name', String('utf-8')),
11
+ ('partition_responses', Array(
12
+ ('index', Int32),
13
+ ('error_code', Int16),
14
+ ('base_offset', Int64)))))
15
+ )
16
+ ALIASES = {
17
+ 'topics': 'responses',
18
+ }
19
+
20
+
21
+ class ProduceResponse_v1(Response):
22
+ API_KEY = 0
23
+ API_VERSION = 1
24
+ SCHEMA = Schema(
25
+ ('responses', Array(
26
+ ('name', String('utf-8')),
27
+ ('partition_responses', Array(
28
+ ('index', Int32),
29
+ ('error_code', Int16),
30
+ ('base_offset', Int64))))),
31
+ ('throttle_time_ms', Int32)
32
+ )
33
+ ALIASES = ProduceResponse_v0.ALIASES
34
+
35
+
36
+ class ProduceResponse_v2(Response):
37
+ API_KEY = 0
38
+ API_VERSION = 2
39
+ SCHEMA = Schema(
40
+ ('responses', Array(
41
+ ('name', String('utf-8')),
42
+ ('partition_responses', Array(
43
+ ('index', Int32),
44
+ ('error_code', Int16),
45
+ ('base_offset', Int64),
46
+ ('log_append_time_ms', Int64))))),
47
+ ('throttle_time_ms', Int32)
48
+ )
49
+ ALIASES = ProduceResponse_v1.ALIASES
50
+
51
+
52
+ class ProduceResponse_v3(Response):
53
+ # Adds support for message format v2
54
+ API_KEY = 0
55
+ API_VERSION = 3
56
+ SCHEMA = ProduceResponse_v2.SCHEMA
57
+ ALIASES = ProduceResponse_v2.ALIASES
58
+
59
+
60
+ class ProduceResponse_v4(Response):
61
+ """
62
+ The version number is bumped up to indicate that the client supports KafkaStorageException.
63
+ The KafkaStorageException will be translated to NotLeaderForPartitionException in the response if version <= 3
64
+ """
65
+ API_KEY = 0
66
+ API_VERSION = 4
67
+ SCHEMA = ProduceResponse_v3.SCHEMA
68
+ ALIASES = ProduceResponse_v3.ALIASES
69
+
70
+
71
+ class ProduceResponse_v5(Response):
72
+ API_KEY = 0
73
+ API_VERSION = 5
74
+ SCHEMA = Schema(
75
+ ('responses', Array(
76
+ ('name', String('utf-8')),
77
+ ('partition_responses', Array(
78
+ ('index', Int32),
79
+ ('error_code', Int16),
80
+ ('base_offset', Int64),
81
+ ('log_append_time_ms', Int64),
82
+ ('log_start_offset', Int64))))),
83
+ ('throttle_time_ms', Int32)
84
+ )
85
+ ALIASES = ProduceResponse_v4.ALIASES
86
+
87
+
88
+ class ProduceResponse_v6(Response):
89
+ """
90
+ The version number is bumped to indicate that on quota violation brokers send out responses before throttling.
91
+ """
92
+ API_KEY = 0
93
+ API_VERSION = 6
94
+ SCHEMA = ProduceResponse_v5.SCHEMA
95
+ ALIASES = ProduceResponse_v5.ALIASES
96
+
97
+
98
+ class ProduceResponse_v7(Response):
99
+ """
100
+ V7 bumped up to indicate ZStandard capability. (see KIP-110)
101
+ """
102
+ API_KEY = 0
103
+ API_VERSION = 7
104
+ SCHEMA = ProduceResponse_v6.SCHEMA
105
+ ALIASES = ProduceResponse_v6.ALIASES
106
+
107
+
108
+ class ProduceResponse_v8(Response):
109
+ """
110
+ V8 bumped up to add two new fields record_errors offset list and error_message
111
+ (See KIP-467)
112
+ """
113
+ API_KEY = 0
114
+ API_VERSION = 8
115
+ SCHEMA = Schema(
116
+ ('responses', Array(
117
+ ('name', String('utf-8')),
118
+ ('partition_responses', Array(
119
+ ('index', Int32),
120
+ ('error_code', Int16),
121
+ ('base_offset', Int64),
122
+ ('log_append_time_ms', Int64),
123
+ ('log_start_offset', Int64),
124
+ ('record_errors', (Array(
125
+ ('batch_index', Int32),
126
+ ('batch_index_error_message', String('utf-8'))
127
+ ))),
128
+ ('error_message', String('utf-8')))
129
+ ))),
130
+ ('throttle_time_ms', Int32)
131
+ )
132
+ ALIASES = ProduceResponse_v7.ALIASES
133
+
134
+
135
+ class ProduceRequest(Request):
136
+ API_KEY = 0
137
+
138
+ def expect_response(self):
139
+ if self.acks == 0: # pylint: disable=no-member
140
+ return False
141
+ return True
142
+
143
+
144
+ class ProduceRequest_v0(ProduceRequest):
145
+ API_VERSION = 0
146
+ SCHEMA = Schema(
147
+ ('acks', Int16),
148
+ ('timeout_ms', Int32),
149
+ ('topic_data', Array(
150
+ ('name', String('utf-8')),
151
+ ('partition_data', Array(
152
+ ('index', Int32),
153
+ ('records', Bytes)))))
154
+ )
155
+ ALIASES = {
156
+ 'required_acks': 'acks',
157
+ 'timeout': 'timeout_ms',
158
+ 'topics': 'topic_data',
159
+ }
160
+
161
+
162
+ class ProduceRequest_v1(ProduceRequest):
163
+ API_VERSION = 1
164
+ SCHEMA = ProduceRequest_v0.SCHEMA
165
+ ALIASES = ProduceRequest_v0.ALIASES
166
+
167
+
168
+ class ProduceRequest_v2(ProduceRequest):
169
+ API_VERSION = 2
170
+ SCHEMA = ProduceRequest_v1.SCHEMA
171
+ ALIASES = ProduceRequest_v1.ALIASES
172
+
173
+
174
+ class ProduceRequest_v3(ProduceRequest):
175
+ # Adds support for message format v2
176
+ API_VERSION = 3
177
+ SCHEMA = Schema(
178
+ ('transactional_id', String('utf-8')),
179
+ ('acks', Int16),
180
+ ('timeout_ms', Int32),
181
+ ('topic_data', Array(
182
+ ('name', String('utf-8')),
183
+ ('partition_data', Array(
184
+ ('index', Int32),
185
+ ('records', Bytes)))))
186
+ )
187
+ ALIASES = ProduceRequest_v2.ALIASES
188
+
189
+
190
+ class ProduceRequest_v4(ProduceRequest):
191
+ """
192
+ The version number is bumped up to indicate that the client supports KafkaStorageException.
193
+ The KafkaStorageException will be translated to NotLeaderForPartitionException in the response if version <= 3
194
+ """
195
+ API_VERSION = 4
196
+ SCHEMA = ProduceRequest_v3.SCHEMA
197
+ ALIASES = ProduceRequest_v3.ALIASES
198
+
199
+
200
+ class ProduceRequest_v5(ProduceRequest):
201
+ """
202
+ Same as v4. The version number is bumped since the v5 response includes an additional
203
+ partition level field: the log_start_offset.
204
+ """
205
+ API_VERSION = 5
206
+ SCHEMA = ProduceRequest_v4.SCHEMA
207
+ ALIASES = ProduceRequest_v4.ALIASES
208
+
209
+
210
+ class ProduceRequest_v6(ProduceRequest):
211
+ """
212
+ The version number is bumped to indicate that on quota violation brokers send out responses before throttling.
213
+ """
214
+ API_VERSION = 6
215
+ SCHEMA = ProduceRequest_v5.SCHEMA
216
+ ALIASES = ProduceRequest_v5.ALIASES
217
+
218
+
219
+ class ProduceRequest_v7(ProduceRequest):
220
+ """
221
+ V7 bumped up to indicate ZStandard capability. (see KIP-110)
222
+ """
223
+ API_VERSION = 7
224
+ SCHEMA = ProduceRequest_v6.SCHEMA
225
+ ALIASES = ProduceRequest_v6.ALIASES
226
+
227
+
228
+ class ProduceRequest_v8(ProduceRequest):
229
+ """
230
+ V8 bumped up to add two new fields record_errors offset list and error_message to PartitionResponse
231
+ (See KIP-467)
232
+ """
233
+ API_VERSION = 8
234
+ SCHEMA = ProduceRequest_v7.SCHEMA
235
+ ALIASES = ProduceRequest_v7.ALIASES
236
+
237
+
238
+ ProduceRequest = [
239
+ ProduceRequest_v0, ProduceRequest_v1, ProduceRequest_v2,
240
+ ProduceRequest_v3, ProduceRequest_v4, ProduceRequest_v5,
241
+ ProduceRequest_v6, ProduceRequest_v7, ProduceRequest_v8,
242
+ ]
243
+ ProduceResponse = [
244
+ ProduceResponse_v0, ProduceResponse_v1, ProduceResponse_v2,
245
+ ProduceResponse_v3, ProduceResponse_v4, ProduceResponse_v5,
246
+ ProduceResponse_v6, ProduceResponse_v7, ProduceResponse_v8,
247
+ ]
@@ -0,0 +1,38 @@
1
+ from .api import Request, Response
2
+ from .types import Bytes, Int16, Int64, Schema, String
3
+
4
+
5
+ class SaslAuthenticateResponse_v0(Response):
6
+ API_KEY = 36
7
+ API_VERSION = 0
8
+ SCHEMA = Schema(
9
+ ('error_code', Int16),
10
+ ('error_message', String('utf-8')),
11
+ ('auth_bytes', Bytes))
12
+
13
+
14
+ class SaslAuthenticateResponse_v1(Response):
15
+ API_KEY = 36
16
+ API_VERSION = 1
17
+ SCHEMA = Schema(
18
+ ('error_code', Int16),
19
+ ('error_message', String('utf-8')),
20
+ ('auth_bytes', Bytes),
21
+ ('session_lifetime_ms', Int64))
22
+
23
+
24
+ class SaslAuthenticateRequest_v0(Request):
25
+ API_KEY = 36
26
+ API_VERSION = 0
27
+ SCHEMA = Schema(
28
+ ('auth_bytes', Bytes))
29
+
30
+
31
+ class SaslAuthenticateRequest_v1(Request):
32
+ API_KEY = 36
33
+ API_VERSION = 1
34
+ SCHEMA = SaslAuthenticateRequest_v0.SCHEMA
35
+
36
+
37
+ SaslAuthenticateRequest = [SaslAuthenticateRequest_v0, SaslAuthenticateRequest_v1]
38
+ SaslAuthenticateResponse = [SaslAuthenticateResponse_v0, SaslAuthenticateResponse_v1]