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,36 @@
1
+ from .struct import Struct
2
+ from .types import Array, Bytes, Int16, Int32, Schema, String
3
+ from kafka.structs import TopicPartition
4
+
5
+
6
+ class ConsumerProtocolMemberMetadata_v0(Struct):
7
+ SCHEMA = Schema(
8
+ ('version', Int16),
9
+ ('topics', Array(String('utf-8'))),
10
+ ('user_data', Bytes))
11
+
12
+
13
+ class ConsumerProtocolMemberAssignment_v0(Struct):
14
+ SCHEMA = Schema(
15
+ ('version', Int16),
16
+ ('assigned_partitions', Array(
17
+ ('topic', String('utf-8')),
18
+ ('partitions', Array(Int32)))),
19
+ ('user_data', Bytes))
20
+ ALIASES = {
21
+ 'assignment': 'assigned_partitions',
22
+ }
23
+
24
+ def partitions(self):
25
+ return [TopicPartition(topic, partition)
26
+ for topic, partitions in self.assigned_partitions
27
+ for partition in partitions]
28
+
29
+
30
+ class ConsumerProtocol_v0:
31
+ PROTOCOL_TYPE = 'consumer'
32
+ METADATA = ConsumerProtocolMemberMetadata_v0
33
+ ASSIGNMENT = ConsumerProtocolMemberAssignment_v0
34
+
35
+
36
+ ConsumerProtocol = [ConsumerProtocol_v0]
@@ -0,0 +1,53 @@
1
+ from .api import Request, Response
2
+ from .types import Boolean, Int16, Int32, Int64, Schema, String
3
+
4
+
5
+ class EndTxnResponse_v0(Response):
6
+ API_KEY = 26
7
+ API_VERSION = 0
8
+ SCHEMA = Schema(
9
+ ('throttle_time_ms', Int32),
10
+ ('error_code', Int16),
11
+ )
12
+
13
+
14
+ class EndTxnResponse_v1(Response):
15
+ API_KEY = 26
16
+ API_VERSION = 1
17
+ SCHEMA = EndTxnResponse_v0.SCHEMA
18
+
19
+
20
+ class EndTxnResponse_v2(Response):
21
+ API_KEY = 26
22
+ API_VERSION = 2
23
+ SCHEMA = EndTxnResponse_v1.SCHEMA
24
+
25
+
26
+ class EndTxnRequest_v0(Request):
27
+ API_KEY = 26
28
+ API_VERSION = 0
29
+ SCHEMA = Schema(
30
+ ('transactional_id', String('utf-8')),
31
+ ('producer_id', Int64),
32
+ ('producer_epoch', Int16),
33
+ ('committed', Boolean))
34
+
35
+
36
+ class EndTxnRequest_v1(Request):
37
+ API_KEY = 26
38
+ API_VERSION = 1
39
+ SCHEMA = EndTxnRequest_v0.SCHEMA
40
+
41
+
42
+ class EndTxnRequest_v2(Request):
43
+ API_KEY = 26
44
+ API_VERSION = 2
45
+ SCHEMA = EndTxnRequest_v1.SCHEMA
46
+
47
+
48
+ EndTxnRequest = [
49
+ EndTxnRequest_v0, EndTxnRequest_v1, EndTxnRequest_v2,
50
+ ]
51
+ EndTxnResponse = [
52
+ EndTxnResponse_v0, EndTxnResponse_v1, EndTxnResponse_v2,
53
+ ]
@@ -0,0 +1,408 @@
1
+ import collections
2
+
3
+ from .api import Request, Response
4
+ from .types import Array, Int8, Int16, Int32, Int64, Schema, String, Bytes
5
+
6
+
7
+ AbortedTransaction = collections.namedtuple("AbortedTransaction",
8
+ ["producer_id", "first_offset"])
9
+
10
+
11
+ class FetchResponse_v0(Response):
12
+ API_KEY = 1
13
+ API_VERSION = 0
14
+ SCHEMA = Schema(
15
+ ('responses', Array(
16
+ ('topic', String('utf-8')),
17
+ ('partitions', Array(
18
+ ('partition_index', Int32),
19
+ ('error_code', Int16),
20
+ ('high_watermark', Int64),
21
+ ('records', Bytes)))))
22
+ )
23
+ ALIASES = {
24
+ 'topics': 'responses',
25
+ }
26
+
27
+
28
+ class FetchResponse_v1(Response):
29
+ API_KEY = 1
30
+ API_VERSION = 1
31
+ SCHEMA = Schema(
32
+ ('throttle_time_ms', Int32),
33
+ ('responses', Array(
34
+ ('topic', String('utf-8')),
35
+ ('partitions', Array(
36
+ ('partition_index', Int32),
37
+ ('error_code', Int16),
38
+ ('high_watermark', Int64),
39
+ ('records', Bytes)))))
40
+ )
41
+ ALIASES = FetchResponse_v0.ALIASES
42
+
43
+
44
+ class FetchResponse_v2(Response):
45
+ API_KEY = 1
46
+ API_VERSION = 2
47
+ SCHEMA = FetchResponse_v1.SCHEMA # message format changed internally
48
+ ALIASES = FetchResponse_v1.ALIASES
49
+
50
+
51
+ class FetchResponse_v3(Response):
52
+ API_KEY = 1
53
+ API_VERSION = 3
54
+ SCHEMA = FetchResponse_v2.SCHEMA
55
+ ALIASES = FetchResponse_v2.ALIASES
56
+
57
+
58
+ class FetchResponse_v4(Response):
59
+ # Adds message format v2
60
+ API_KEY = 1
61
+ API_VERSION = 4
62
+ SCHEMA = Schema(
63
+ ('throttle_time_ms', Int32),
64
+ ('responses', Array(
65
+ ('topic', String('utf-8')),
66
+ ('partitions', Array(
67
+ ('partition_index', Int32),
68
+ ('error_code', Int16),
69
+ ('high_watermark', Int64),
70
+ ('last_stable_offset', Int64),
71
+ ('aborted_transactions', Array(
72
+ ('producer_id', Int64),
73
+ ('first_offset', Int64))),
74
+ ('records', Bytes)))))
75
+ )
76
+ ALIASES = FetchResponse_v3.ALIASES
77
+
78
+
79
+ class FetchResponse_v5(Response):
80
+ API_KEY = 1
81
+ API_VERSION = 5
82
+ SCHEMA = Schema(
83
+ ('throttle_time_ms', Int32),
84
+ ('responses', Array(
85
+ ('topic', String('utf-8')),
86
+ ('partitions', Array(
87
+ ('partition_index', Int32),
88
+ ('error_code', Int16),
89
+ ('high_watermark', Int64),
90
+ ('last_stable_offset', Int64),
91
+ ('log_start_offset', Int64),
92
+ ('aborted_transactions', Array(
93
+ ('producer_id', Int64),
94
+ ('first_offset', Int64))),
95
+ ('records', Bytes)))))
96
+ )
97
+ ALIASES = FetchResponse_v4.ALIASES
98
+
99
+
100
+ class FetchResponse_v6(Response):
101
+ """
102
+ Same as FetchResponse_v5. The version number is bumped up to indicate that the client supports KafkaStorageException.
103
+ The KafkaStorageException will be translated to NotLeaderForPartitionException in the response if version <= 5
104
+ """
105
+ API_KEY = 1
106
+ API_VERSION = 6
107
+ SCHEMA = FetchResponse_v5.SCHEMA
108
+ ALIASES = FetchResponse_v5.ALIASES
109
+
110
+
111
+ class FetchResponse_v7(Response):
112
+ """
113
+ Add error_code and session_id to response
114
+ """
115
+ API_KEY = 1
116
+ API_VERSION = 7
117
+ SCHEMA = Schema(
118
+ ('throttle_time_ms', Int32),
119
+ ('error_code', Int16),
120
+ ('session_id', Int32),
121
+ ('responses', Array(
122
+ ('topic', String('utf-8')),
123
+ ('partitions', Array(
124
+ ('partition_index', Int32),
125
+ ('error_code', Int16),
126
+ ('high_watermark', Int64),
127
+ ('last_stable_offset', Int64),
128
+ ('log_start_offset', Int64),
129
+ ('aborted_transactions', Array(
130
+ ('producer_id', Int64),
131
+ ('first_offset', Int64))),
132
+ ('records', Bytes)))))
133
+ )
134
+ ALIASES = FetchResponse_v6.ALIASES
135
+
136
+
137
+ class FetchResponse_v8(Response):
138
+ API_KEY = 1
139
+ API_VERSION = 8
140
+ SCHEMA = FetchResponse_v7.SCHEMA
141
+ ALIASES = FetchResponse_v7.ALIASES
142
+
143
+
144
+ class FetchResponse_v9(Response):
145
+ API_KEY = 1
146
+ API_VERSION = 9
147
+ SCHEMA = FetchResponse_v8.SCHEMA
148
+ ALIASES = FetchResponse_v8.ALIASES
149
+
150
+
151
+ class FetchResponse_v10(Response):
152
+ API_KEY = 1
153
+ API_VERSION = 10
154
+ SCHEMA = FetchResponse_v9.SCHEMA
155
+ ALIASES = FetchResponse_v9.ALIASES
156
+
157
+
158
+ class FetchResponse_v11(Response):
159
+ API_KEY = 1
160
+ API_VERSION = 11
161
+ SCHEMA = Schema(
162
+ ('throttle_time_ms', Int32),
163
+ ('error_code', Int16),
164
+ ('session_id', Int32),
165
+ ('responses', Array(
166
+ ('topic', String('utf-8')),
167
+ ('partitions', Array(
168
+ ('partition_index', Int32),
169
+ ('error_code', Int16),
170
+ ('high_watermark', Int64),
171
+ ('last_stable_offset', Int64),
172
+ ('log_start_offset', Int64),
173
+ ('aborted_transactions', Array(
174
+ ('producer_id', Int64),
175
+ ('first_offset', Int64))),
176
+ ('preferred_read_replica', Int32),
177
+ ('records', Bytes)))))
178
+ )
179
+ ALIASES = FetchResponse_v10.ALIASES
180
+
181
+
182
+ class FetchRequest_v0(Request):
183
+ API_KEY = 1
184
+ API_VERSION = 0
185
+ SCHEMA = Schema(
186
+ ('replica_id', Int32),
187
+ ('max_wait_ms', Int32),
188
+ ('min_bytes', Int32),
189
+ ('topics', Array(
190
+ ('topic', String('utf-8')),
191
+ ('partitions', Array(
192
+ ('partition', Int32),
193
+ ('fetch_offset', Int64),
194
+ ('partition_max_bytes', Int32)))))
195
+ )
196
+ ALIASES = {
197
+ 'max_wait_time': 'max_wait_ms',
198
+ }
199
+
200
+
201
+ class FetchRequest_v1(Request):
202
+ API_KEY = 1
203
+ API_VERSION = 1
204
+ SCHEMA = FetchRequest_v0.SCHEMA
205
+ ALIASES = FetchRequest_v0.ALIASES
206
+
207
+
208
+ class FetchRequest_v2(Request):
209
+ API_KEY = 1
210
+ API_VERSION = 2
211
+ SCHEMA = FetchRequest_v1.SCHEMA
212
+ ALIASES = FetchRequest_v1.ALIASES
213
+
214
+
215
+ class FetchRequest_v3(Request):
216
+ API_KEY = 1
217
+ API_VERSION = 3
218
+ SCHEMA = Schema(
219
+ ('replica_id', Int32),
220
+ ('max_wait_ms', Int32),
221
+ ('min_bytes', Int32),
222
+ ('max_bytes', Int32), # This new field is only difference from FR_v2
223
+ ('topics', Array(
224
+ ('topic', String('utf-8')),
225
+ ('partitions', Array(
226
+ ('partition', Int32),
227
+ ('fetch_offset', Int64),
228
+ ('partition_max_bytes', Int32)))))
229
+ )
230
+ ALIASES = FetchRequest_v2.ALIASES
231
+
232
+
233
+ class FetchRequest_v4(Request):
234
+ # Adds isolation_level field
235
+ # Adds message format v2
236
+ API_KEY = 1
237
+ API_VERSION = 4
238
+ SCHEMA = Schema(
239
+ ('replica_id', Int32),
240
+ ('max_wait_ms', Int32),
241
+ ('min_bytes', Int32),
242
+ ('max_bytes', Int32),
243
+ ('isolation_level', Int8),
244
+ ('topics', Array(
245
+ ('topic', String('utf-8')),
246
+ ('partitions', Array(
247
+ ('partition', Int32),
248
+ ('fetch_offset', Int64),
249
+ ('partition_max_bytes', Int32)))))
250
+ )
251
+ ALIASES = FetchRequest_v3.ALIASES
252
+
253
+
254
+ class FetchRequest_v5(Request):
255
+ # This may only be used in broker-broker api calls
256
+ API_KEY = 1
257
+ API_VERSION = 5
258
+ SCHEMA = Schema(
259
+ ('replica_id', Int32),
260
+ ('max_wait_ms', Int32),
261
+ ('min_bytes', Int32),
262
+ ('max_bytes', Int32),
263
+ ('isolation_level', Int8),
264
+ ('topics', Array(
265
+ ('topic', String('utf-8')),
266
+ ('partitions', Array(
267
+ ('partition', Int32),
268
+ ('fetch_offset', Int64),
269
+ ('log_start_offset', Int64),
270
+ ('partition_max_bytes', Int32)))))
271
+ )
272
+ ALIASES = FetchRequest_v4.ALIASES
273
+
274
+
275
+ class FetchRequest_v6(Request):
276
+ """
277
+ The body of FETCH_REQUEST_V6 is the same as FETCH_REQUEST_V5.
278
+ The version number is bumped up to indicate that the client supports KafkaStorageException.
279
+ The KafkaStorageException will be translated to NotLeaderForPartitionException in the response if version <= 5
280
+ """
281
+ API_KEY = 1
282
+ API_VERSION = 6
283
+ SCHEMA = FetchRequest_v5.SCHEMA
284
+ ALIASES = FetchRequest_v5.ALIASES
285
+
286
+
287
+ class FetchRequest_v7(Request):
288
+ """
289
+ Add incremental fetch requests (see KIP-227)
290
+ """
291
+ API_KEY = 1
292
+ API_VERSION = 7
293
+ SCHEMA = Schema(
294
+ ('replica_id', Int32),
295
+ ('max_wait_ms', Int32),
296
+ ('min_bytes', Int32),
297
+ ('max_bytes', Int32),
298
+ ('isolation_level', Int8),
299
+ ('session_id', Int32),
300
+ ('session_epoch', Int32),
301
+ ('topics', Array(
302
+ ('topic', String('utf-8')),
303
+ ('partitions', Array(
304
+ ('partition', Int32),
305
+ ('fetch_offset', Int64),
306
+ ('log_start_offset', Int64),
307
+ ('partition_max_bytes', Int32))))),
308
+ ('forgotten_topics_data', Array(
309
+ ('topic', String('utf-8')),
310
+ ('partitions', Array(Int32))
311
+ )),
312
+ )
313
+ ALIASES = FetchRequest_v6.ALIASES
314
+
315
+
316
+ class FetchRequest_v8(Request):
317
+ """
318
+ bump used to indicate that on quota violation brokers send out responses before throttling.
319
+ """
320
+ API_KEY = 1
321
+ API_VERSION = 8
322
+ SCHEMA = FetchRequest_v7.SCHEMA
323
+ ALIASES = FetchRequest_v7.ALIASES
324
+
325
+
326
+ class FetchRequest_v9(Request):
327
+ """
328
+ adds the current leader epoch (see KIP-320)
329
+ """
330
+ API_KEY = 1
331
+ API_VERSION = 9
332
+ SCHEMA = Schema(
333
+ ('replica_id', Int32),
334
+ ('max_wait_ms', Int32),
335
+ ('min_bytes', Int32),
336
+ ('max_bytes', Int32),
337
+ ('isolation_level', Int8),
338
+ ('session_id', Int32),
339
+ ('session_epoch', Int32),
340
+ ('topics', Array(
341
+ ('topic', String('utf-8')),
342
+ ('partitions', Array(
343
+ ('partition', Int32),
344
+ ('current_leader_epoch', Int32),
345
+ ('fetch_offset', Int64),
346
+ ('log_start_offset', Int64),
347
+ ('partition_max_bytes', Int32))))),
348
+ ('forgotten_topics_data', Array(
349
+ ('topic', String('utf-8')),
350
+ ('partitions', Array(Int32)),
351
+ )),
352
+ )
353
+ ALIASES = FetchRequest_v8.ALIASES
354
+
355
+
356
+ class FetchRequest_v10(Request):
357
+ """
358
+ bumped up to indicate ZStandard capability. (see KIP-110)
359
+ """
360
+ API_KEY = 1
361
+ API_VERSION = 10
362
+ SCHEMA = FetchRequest_v9.SCHEMA
363
+ ALIASES = FetchRequest_v9.ALIASES
364
+
365
+
366
+ class FetchRequest_v11(Request):
367
+ """
368
+ added rack ID to support read from followers (KIP-392)
369
+ """
370
+ API_KEY = 1
371
+ API_VERSION = 11
372
+ SCHEMA = Schema(
373
+ ('replica_id', Int32),
374
+ ('max_wait_ms', Int32),
375
+ ('min_bytes', Int32),
376
+ ('max_bytes', Int32),
377
+ ('isolation_level', Int8),
378
+ ('session_id', Int32),
379
+ ('session_epoch', Int32),
380
+ ('topics', Array(
381
+ ('topic', String('utf-8')),
382
+ ('partitions', Array(
383
+ ('partition', Int32),
384
+ ('current_leader_epoch', Int32),
385
+ ('fetch_offset', Int64),
386
+ ('log_start_offset', Int64),
387
+ ('partition_max_bytes', Int32))))),
388
+ ('forgotten_topics_data', Array(
389
+ ('topic', String('utf-8')),
390
+ ('partitions', Array(Int32))
391
+ )),
392
+ ('rack_id', String('utf-8')),
393
+ )
394
+ ALIASES = FetchRequest_v10.ALIASES
395
+
396
+
397
+ FetchRequest = [
398
+ FetchRequest_v0, FetchRequest_v1, FetchRequest_v2,
399
+ FetchRequest_v3, FetchRequest_v4, FetchRequest_v5,
400
+ FetchRequest_v6, FetchRequest_v7, FetchRequest_v8,
401
+ FetchRequest_v9, FetchRequest_v10, FetchRequest_v11,
402
+ ]
403
+ FetchResponse = [
404
+ FetchResponse_v0, FetchResponse_v1, FetchResponse_v2,
405
+ FetchResponse_v3, FetchResponse_v4, FetchResponse_v5,
406
+ FetchResponse_v6, FetchResponse_v7, FetchResponse_v8,
407
+ FetchResponse_v9, FetchResponse_v10, FetchResponse_v11,
408
+ ]
@@ -0,0 +1,72 @@
1
+ from .api import Request, Response
2
+ from .types import Int8, Int16, Int32, Schema, String
3
+
4
+
5
+ class FindCoordinatorResponse_v0(Response):
6
+ API_KEY = 10
7
+ API_VERSION = 0
8
+ SCHEMA = Schema(
9
+ ('error_code', Int16),
10
+ ('node_id', Int32),
11
+ ('host', String('utf-8')),
12
+ ('port', Int32)
13
+ )
14
+ ALIASES = {
15
+ 'coordinator_id': 'node_id',
16
+ }
17
+
18
+
19
+ class FindCoordinatorResponse_v1(Response):
20
+ API_KEY = 10
21
+ API_VERSION = 1
22
+ SCHEMA = Schema(
23
+ ('throttle_time_ms', Int32),
24
+ ('error_code', Int16),
25
+ ('error_message', String('utf-8')),
26
+ ('node_id', Int32),
27
+ ('host', String('utf-8')),
28
+ ('port', Int32)
29
+ )
30
+ ALIASES = FindCoordinatorResponse_v0.ALIASES
31
+
32
+
33
+ class FindCoordinatorResponse_v2(Response):
34
+ API_KEY = 10
35
+ API_VERSION = 2
36
+ SCHEMA = FindCoordinatorResponse_v1.SCHEMA
37
+ ALIASES = FindCoordinatorResponse_v1.ALIASES
38
+
39
+
40
+ class FindCoordinatorRequest_v0(Request):
41
+ API_KEY = 10
42
+ API_VERSION = 0
43
+ SCHEMA = Schema(
44
+ ('key', String('utf-8'))
45
+ )
46
+ ALIASES = {
47
+ 'consumer_group': 'key',
48
+ }
49
+
50
+
51
+ class FindCoordinatorRequest_v1(Request):
52
+ API_KEY = 10
53
+ API_VERSION = 1
54
+ SCHEMA = Schema(
55
+ ('key', String('utf-8')),
56
+ ('key_type', Int8) # 0: consumer, 1: transaction
57
+ )
58
+ ALIASES = {
59
+ 'coordinator_key': 'key',
60
+ 'coordinator_type': 'key_type',
61
+ }
62
+
63
+
64
+ class FindCoordinatorRequest_v2(Request):
65
+ API_KEY = 10
66
+ API_VERSION = 2
67
+ SCHEMA = FindCoordinatorRequest_v1.SCHEMA
68
+ ALIASES = FindCoordinatorRequest_v1.ALIASES
69
+
70
+
71
+ FindCoordinatorRequest = [FindCoordinatorRequest_v0, FindCoordinatorRequest_v1, FindCoordinatorRequest_v2]
72
+ FindCoordinatorResponse = [FindCoordinatorResponse_v0, FindCoordinatorResponse_v1, FindCoordinatorResponse_v2]