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,663 @@
1
+ # Generated by generate_stubs.py (Python 3.14)
2
+ import uuid
3
+ from typing import Any, Self
4
+
5
+ from kafka.protocol.api_message import ApiMessage
6
+ from kafka.protocol.data_container import DataContainer
7
+
8
+ __all__ = ['InitProducerIdRequest', 'InitProducerIdResponse', 'AddPartitionsToTxnRequest', 'AddPartitionsToTxnResponse', 'AddOffsetsToTxnRequest', 'AddOffsetsToTxnResponse', 'EndTxnRequest', 'EndTxnResponse', 'TxnOffsetCommitRequest', 'TxnOffsetCommitResponse', 'WriteTxnMarkersRequest', 'WriteTxnMarkersResponse']
9
+
10
+ class InitProducerIdRequest(ApiMessage):
11
+ transactional_id: str | None
12
+ transaction_timeout_ms: int
13
+ producer_id: int
14
+ producer_epoch: int
15
+ enable2_pc: bool
16
+ keep_prepared_txn: bool
17
+ def __init__(
18
+ self,
19
+ *args: Any,
20
+ transactional_id: str | None = ...,
21
+ transaction_timeout_ms: int = ...,
22
+ producer_id: int = ...,
23
+ producer_epoch: int = ...,
24
+ enable2_pc: bool = ...,
25
+ keep_prepared_txn: bool = ...,
26
+ version: int | None = None,
27
+ **kwargs: Any,
28
+ ) -> None: ...
29
+ @property
30
+ def version(self) -> int | None: ...
31
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
32
+ name: str
33
+ type: str
34
+ API_KEY: int
35
+ API_VERSION: int
36
+ valid_versions: tuple[int, int]
37
+ min_version: int
38
+ max_version: int
39
+ @property
40
+ def header(self) -> Any: ...
41
+ @classmethod
42
+ def is_request(cls) -> bool: ...
43
+ def expect_response(self) -> bool: ...
44
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
45
+
46
+ class InitProducerIdResponse(ApiMessage):
47
+ throttle_time_ms: int
48
+ error_code: int
49
+ producer_id: int
50
+ producer_epoch: int
51
+ ongoing_txn_producer_id: int
52
+ ongoing_txn_producer_epoch: int
53
+ def __init__(
54
+ self,
55
+ *args: Any,
56
+ throttle_time_ms: int = ...,
57
+ error_code: int = ...,
58
+ producer_id: int = ...,
59
+ producer_epoch: int = ...,
60
+ ongoing_txn_producer_id: int = ...,
61
+ ongoing_txn_producer_epoch: int = ...,
62
+ version: int | None = None,
63
+ **kwargs: Any,
64
+ ) -> None: ...
65
+ @property
66
+ def version(self) -> int | None: ...
67
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
68
+ name: str
69
+ type: str
70
+ API_KEY: int
71
+ API_VERSION: int
72
+ valid_versions: tuple[int, int]
73
+ min_version: int
74
+ max_version: int
75
+ @property
76
+ def header(self) -> Any: ...
77
+ @classmethod
78
+ def is_request(cls) -> bool: ...
79
+ def expect_response(self) -> bool: ...
80
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
81
+
82
+ class AddPartitionsToTxnRequest(ApiMessage):
83
+ class AddPartitionsToTxnTransaction(DataContainer):
84
+ class AddPartitionsToTxnTopic(DataContainer):
85
+ name: str
86
+ partitions: list[int]
87
+ def __init__(
88
+ self,
89
+ *args: Any,
90
+ name: str = ...,
91
+ partitions: list[int] = ...,
92
+ version: int | None = None,
93
+ **kwargs: Any,
94
+ ) -> None: ...
95
+ @property
96
+ def version(self) -> int | None: ...
97
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
98
+
99
+ transactional_id: str
100
+ producer_id: int
101
+ producer_epoch: int
102
+ verify_only: bool
103
+ topics: list[AddPartitionsToTxnTopic]
104
+ def __init__(
105
+ self,
106
+ *args: Any,
107
+ transactional_id: str = ...,
108
+ producer_id: int = ...,
109
+ producer_epoch: int = ...,
110
+ verify_only: bool = ...,
111
+ topics: list[AddPartitionsToTxnTopic] = ...,
112
+ version: int | None = None,
113
+ **kwargs: Any,
114
+ ) -> None: ...
115
+ @property
116
+ def version(self) -> int | None: ...
117
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
118
+
119
+ class AddPartitionsToTxnTopic(DataContainer):
120
+ name: str
121
+ partitions: list[int]
122
+ def __init__(
123
+ self,
124
+ *args: Any,
125
+ name: str = ...,
126
+ partitions: list[int] = ...,
127
+ version: int | None = None,
128
+ **kwargs: Any,
129
+ ) -> None: ...
130
+ @property
131
+ def version(self) -> int | None: ...
132
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
133
+
134
+ transactions: list[AddPartitionsToTxnTransaction]
135
+ v3_and_below_transactional_id: str
136
+ v3_and_below_producer_id: int
137
+ v3_and_below_producer_epoch: int
138
+ v3_and_below_topics: list[AddPartitionsToTxnTopic]
139
+ def __init__(
140
+ self,
141
+ *args: Any,
142
+ transactions: list[AddPartitionsToTxnTransaction] = ...,
143
+ v3_and_below_transactional_id: str = ...,
144
+ v3_and_below_producer_id: int = ...,
145
+ v3_and_below_producer_epoch: int = ...,
146
+ v3_and_below_topics: list[AddPartitionsToTxnTopic] = ...,
147
+ version: int | None = None,
148
+ **kwargs: Any,
149
+ ) -> None: ...
150
+ @property
151
+ def version(self) -> int | None: ...
152
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
153
+ name: str
154
+ type: str
155
+ API_KEY: int
156
+ API_VERSION: int
157
+ valid_versions: tuple[int, int]
158
+ min_version: int
159
+ max_version: int
160
+ @property
161
+ def header(self) -> Any: ...
162
+ @classmethod
163
+ def is_request(cls) -> bool: ...
164
+ def expect_response(self) -> bool: ...
165
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
166
+
167
+ class AddPartitionsToTxnResponse(ApiMessage):
168
+ class AddPartitionsToTxnResult(DataContainer):
169
+ class AddPartitionsToTxnTopicResult(DataContainer):
170
+ class AddPartitionsToTxnPartitionResult(DataContainer):
171
+ partition_index: int
172
+ partition_error_code: int
173
+ def __init__(
174
+ self,
175
+ *args: Any,
176
+ partition_index: int = ...,
177
+ partition_error_code: int = ...,
178
+ version: int | None = None,
179
+ **kwargs: Any,
180
+ ) -> None: ...
181
+ @property
182
+ def version(self) -> int | None: ...
183
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
184
+
185
+ name: str
186
+ results_by_partition: list[AddPartitionsToTxnPartitionResult]
187
+ def __init__(
188
+ self,
189
+ *args: Any,
190
+ name: str = ...,
191
+ results_by_partition: list[AddPartitionsToTxnPartitionResult] = ...,
192
+ version: int | None = None,
193
+ **kwargs: Any,
194
+ ) -> None: ...
195
+ @property
196
+ def version(self) -> int | None: ...
197
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
198
+
199
+ transactional_id: str
200
+ topic_results: list[AddPartitionsToTxnTopicResult]
201
+ def __init__(
202
+ self,
203
+ *args: Any,
204
+ transactional_id: str = ...,
205
+ topic_results: list[AddPartitionsToTxnTopicResult] = ...,
206
+ version: int | None = None,
207
+ **kwargs: Any,
208
+ ) -> None: ...
209
+ @property
210
+ def version(self) -> int | None: ...
211
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
212
+
213
+ class AddPartitionsToTxnTopicResult(DataContainer):
214
+ class AddPartitionsToTxnPartitionResult(DataContainer):
215
+ partition_index: int
216
+ partition_error_code: int
217
+ def __init__(
218
+ self,
219
+ *args: Any,
220
+ partition_index: int = ...,
221
+ partition_error_code: int = ...,
222
+ version: int | None = None,
223
+ **kwargs: Any,
224
+ ) -> None: ...
225
+ @property
226
+ def version(self) -> int | None: ...
227
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
228
+
229
+ name: str
230
+ results_by_partition: list[AddPartitionsToTxnPartitionResult]
231
+ def __init__(
232
+ self,
233
+ *args: Any,
234
+ name: str = ...,
235
+ results_by_partition: list[AddPartitionsToTxnPartitionResult] = ...,
236
+ version: int | None = None,
237
+ **kwargs: Any,
238
+ ) -> None: ...
239
+ @property
240
+ def version(self) -> int | None: ...
241
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
242
+
243
+ throttle_time_ms: int
244
+ error_code: int
245
+ results_by_transaction: list[AddPartitionsToTxnResult]
246
+ results_by_topic_v3_and_below: list[AddPartitionsToTxnTopicResult]
247
+ def __init__(
248
+ self,
249
+ *args: Any,
250
+ throttle_time_ms: int = ...,
251
+ error_code: int = ...,
252
+ results_by_transaction: list[AddPartitionsToTxnResult] = ...,
253
+ results_by_topic_v3_and_below: list[AddPartitionsToTxnTopicResult] = ...,
254
+ version: int | None = None,
255
+ **kwargs: Any,
256
+ ) -> None: ...
257
+ @property
258
+ def version(self) -> int | None: ...
259
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
260
+ name: str
261
+ type: str
262
+ API_KEY: int
263
+ API_VERSION: int
264
+ valid_versions: tuple[int, int]
265
+ min_version: int
266
+ max_version: int
267
+ @property
268
+ def header(self) -> Any: ...
269
+ @classmethod
270
+ def is_request(cls) -> bool: ...
271
+ def expect_response(self) -> bool: ...
272
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
273
+
274
+ class AddOffsetsToTxnRequest(ApiMessage):
275
+ transactional_id: str
276
+ producer_id: int
277
+ producer_epoch: int
278
+ group_id: str
279
+ def __init__(
280
+ self,
281
+ *args: Any,
282
+ transactional_id: str = ...,
283
+ producer_id: int = ...,
284
+ producer_epoch: int = ...,
285
+ group_id: str = ...,
286
+ version: int | None = None,
287
+ **kwargs: Any,
288
+ ) -> None: ...
289
+ @property
290
+ def version(self) -> int | None: ...
291
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
292
+ name: str
293
+ type: str
294
+ API_KEY: int
295
+ API_VERSION: int
296
+ valid_versions: tuple[int, int]
297
+ min_version: int
298
+ max_version: int
299
+ @property
300
+ def header(self) -> Any: ...
301
+ @classmethod
302
+ def is_request(cls) -> bool: ...
303
+ def expect_response(self) -> bool: ...
304
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
305
+
306
+ class AddOffsetsToTxnResponse(ApiMessage):
307
+ throttle_time_ms: int
308
+ error_code: int
309
+ def __init__(
310
+ self,
311
+ *args: Any,
312
+ throttle_time_ms: int = ...,
313
+ error_code: int = ...,
314
+ version: int | None = None,
315
+ **kwargs: Any,
316
+ ) -> None: ...
317
+ @property
318
+ def version(self) -> int | None: ...
319
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
320
+ name: str
321
+ type: str
322
+ API_KEY: int
323
+ API_VERSION: int
324
+ valid_versions: tuple[int, int]
325
+ min_version: int
326
+ max_version: int
327
+ @property
328
+ def header(self) -> Any: ...
329
+ @classmethod
330
+ def is_request(cls) -> bool: ...
331
+ def expect_response(self) -> bool: ...
332
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
333
+
334
+ class EndTxnRequest(ApiMessage):
335
+ transactional_id: str
336
+ producer_id: int
337
+ producer_epoch: int
338
+ committed: bool
339
+ def __init__(
340
+ self,
341
+ *args: Any,
342
+ transactional_id: str = ...,
343
+ producer_id: int = ...,
344
+ producer_epoch: int = ...,
345
+ committed: bool = ...,
346
+ version: int | None = None,
347
+ **kwargs: Any,
348
+ ) -> None: ...
349
+ @property
350
+ def version(self) -> int | None: ...
351
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
352
+ name: str
353
+ type: str
354
+ API_KEY: int
355
+ API_VERSION: int
356
+ valid_versions: tuple[int, int]
357
+ min_version: int
358
+ max_version: int
359
+ @property
360
+ def header(self) -> Any: ...
361
+ @classmethod
362
+ def is_request(cls) -> bool: ...
363
+ def expect_response(self) -> bool: ...
364
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
365
+
366
+ class EndTxnResponse(ApiMessage):
367
+ throttle_time_ms: int
368
+ error_code: int
369
+ producer_id: int
370
+ producer_epoch: int
371
+ def __init__(
372
+ self,
373
+ *args: Any,
374
+ throttle_time_ms: int = ...,
375
+ error_code: int = ...,
376
+ producer_id: int = ...,
377
+ producer_epoch: int = ...,
378
+ version: int | None = None,
379
+ **kwargs: Any,
380
+ ) -> None: ...
381
+ @property
382
+ def version(self) -> int | None: ...
383
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
384
+ name: str
385
+ type: str
386
+ API_KEY: int
387
+ API_VERSION: int
388
+ valid_versions: tuple[int, int]
389
+ min_version: int
390
+ max_version: int
391
+ @property
392
+ def header(self) -> Any: ...
393
+ @classmethod
394
+ def is_request(cls) -> bool: ...
395
+ def expect_response(self) -> bool: ...
396
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
397
+
398
+ class TxnOffsetCommitRequest(ApiMessage):
399
+ class TxnOffsetCommitRequestTopic(DataContainer):
400
+ class TxnOffsetCommitRequestPartition(DataContainer):
401
+ partition_index: int
402
+ committed_offset: int
403
+ committed_leader_epoch: int
404
+ committed_metadata: str | None
405
+ def __init__(
406
+ self,
407
+ *args: Any,
408
+ partition_index: int = ...,
409
+ committed_offset: int = ...,
410
+ committed_leader_epoch: int = ...,
411
+ committed_metadata: str | None = ...,
412
+ version: int | None = None,
413
+ **kwargs: Any,
414
+ ) -> None: ...
415
+ @property
416
+ def version(self) -> int | None: ...
417
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
418
+
419
+ name: str
420
+ partitions: list[TxnOffsetCommitRequestPartition]
421
+ def __init__(
422
+ self,
423
+ *args: Any,
424
+ name: str = ...,
425
+ partitions: list[TxnOffsetCommitRequestPartition] = ...,
426
+ version: int | None = None,
427
+ **kwargs: Any,
428
+ ) -> None: ...
429
+ @property
430
+ def version(self) -> int | None: ...
431
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
432
+
433
+ transactional_id: str
434
+ group_id: str
435
+ producer_id: int
436
+ producer_epoch: int
437
+ generation_id: int
438
+ member_id: str
439
+ group_instance_id: str | None
440
+ topics: list[TxnOffsetCommitRequestTopic]
441
+ def __init__(
442
+ self,
443
+ *args: Any,
444
+ transactional_id: str = ...,
445
+ group_id: str = ...,
446
+ producer_id: int = ...,
447
+ producer_epoch: int = ...,
448
+ generation_id: int = ...,
449
+ member_id: str = ...,
450
+ group_instance_id: str | None = ...,
451
+ topics: list[TxnOffsetCommitRequestTopic] = ...,
452
+ version: int | None = None,
453
+ **kwargs: Any,
454
+ ) -> None: ...
455
+ @property
456
+ def version(self) -> int | None: ...
457
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
458
+ name: str
459
+ type: str
460
+ API_KEY: int
461
+ API_VERSION: int
462
+ valid_versions: tuple[int, int]
463
+ min_version: int
464
+ max_version: int
465
+ @property
466
+ def header(self) -> Any: ...
467
+ @classmethod
468
+ def is_request(cls) -> bool: ...
469
+ def expect_response(self) -> bool: ...
470
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
471
+
472
+ class TxnOffsetCommitResponse(ApiMessage):
473
+ class TxnOffsetCommitResponseTopic(DataContainer):
474
+ class TxnOffsetCommitResponsePartition(DataContainer):
475
+ partition_index: int
476
+ error_code: int
477
+ def __init__(
478
+ self,
479
+ *args: Any,
480
+ partition_index: int = ...,
481
+ error_code: int = ...,
482
+ version: int | None = None,
483
+ **kwargs: Any,
484
+ ) -> None: ...
485
+ @property
486
+ def version(self) -> int | None: ...
487
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
488
+
489
+ name: str
490
+ partitions: list[TxnOffsetCommitResponsePartition]
491
+ def __init__(
492
+ self,
493
+ *args: Any,
494
+ name: str = ...,
495
+ partitions: list[TxnOffsetCommitResponsePartition] = ...,
496
+ version: int | None = None,
497
+ **kwargs: Any,
498
+ ) -> None: ...
499
+ @property
500
+ def version(self) -> int | None: ...
501
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
502
+
503
+ throttle_time_ms: int
504
+ topics: list[TxnOffsetCommitResponseTopic]
505
+ def __init__(
506
+ self,
507
+ *args: Any,
508
+ throttle_time_ms: int = ...,
509
+ topics: list[TxnOffsetCommitResponseTopic] = ...,
510
+ version: int | None = None,
511
+ **kwargs: Any,
512
+ ) -> None: ...
513
+ @property
514
+ def version(self) -> int | None: ...
515
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
516
+ name: str
517
+ type: str
518
+ API_KEY: int
519
+ API_VERSION: int
520
+ valid_versions: tuple[int, int]
521
+ min_version: int
522
+ max_version: int
523
+ @property
524
+ def header(self) -> Any: ...
525
+ @classmethod
526
+ def is_request(cls) -> bool: ...
527
+ def expect_response(self) -> bool: ...
528
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
529
+
530
+ class WriteTxnMarkersRequest(ApiMessage):
531
+ class WritableTxnMarker(DataContainer):
532
+ class WritableTxnMarkerTopic(DataContainer):
533
+ name: str
534
+ partition_indexes: list[int]
535
+ def __init__(
536
+ self,
537
+ *args: Any,
538
+ name: str = ...,
539
+ partition_indexes: list[int] = ...,
540
+ version: int | None = None,
541
+ **kwargs: Any,
542
+ ) -> None: ...
543
+ @property
544
+ def version(self) -> int | None: ...
545
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
546
+
547
+ producer_id: int
548
+ producer_epoch: int
549
+ transaction_result: bool
550
+ topics: list[WritableTxnMarkerTopic]
551
+ coordinator_epoch: int
552
+ transaction_version: int
553
+ def __init__(
554
+ self,
555
+ *args: Any,
556
+ producer_id: int = ...,
557
+ producer_epoch: int = ...,
558
+ transaction_result: bool = ...,
559
+ topics: list[WritableTxnMarkerTopic] = ...,
560
+ coordinator_epoch: int = ...,
561
+ transaction_version: int = ...,
562
+ version: int | None = None,
563
+ **kwargs: Any,
564
+ ) -> None: ...
565
+ @property
566
+ def version(self) -> int | None: ...
567
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
568
+
569
+ markers: list[WritableTxnMarker]
570
+ def __init__(
571
+ self,
572
+ *args: Any,
573
+ markers: list[WritableTxnMarker] = ...,
574
+ version: int | None = None,
575
+ **kwargs: Any,
576
+ ) -> None: ...
577
+ @property
578
+ def version(self) -> int | None: ...
579
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
580
+ name: str
581
+ type: str
582
+ API_KEY: int
583
+ API_VERSION: int
584
+ valid_versions: tuple[int, int]
585
+ min_version: int
586
+ max_version: int
587
+ @property
588
+ def header(self) -> Any: ...
589
+ @classmethod
590
+ def is_request(cls) -> bool: ...
591
+ def expect_response(self) -> bool: ...
592
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
593
+
594
+ class WriteTxnMarkersResponse(ApiMessage):
595
+ class WritableTxnMarkerResult(DataContainer):
596
+ class WritableTxnMarkerTopicResult(DataContainer):
597
+ class WritableTxnMarkerPartitionResult(DataContainer):
598
+ partition_index: int
599
+ error_code: int
600
+ def __init__(
601
+ self,
602
+ *args: Any,
603
+ partition_index: int = ...,
604
+ error_code: int = ...,
605
+ version: int | None = None,
606
+ **kwargs: Any,
607
+ ) -> None: ...
608
+ @property
609
+ def version(self) -> int | None: ...
610
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
611
+
612
+ name: str
613
+ partitions: list[WritableTxnMarkerPartitionResult]
614
+ def __init__(
615
+ self,
616
+ *args: Any,
617
+ name: str = ...,
618
+ partitions: list[WritableTxnMarkerPartitionResult] = ...,
619
+ version: int | None = None,
620
+ **kwargs: Any,
621
+ ) -> None: ...
622
+ @property
623
+ def version(self) -> int | None: ...
624
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
625
+
626
+ producer_id: int
627
+ topics: list[WritableTxnMarkerTopicResult]
628
+ def __init__(
629
+ self,
630
+ *args: Any,
631
+ producer_id: int = ...,
632
+ topics: list[WritableTxnMarkerTopicResult] = ...,
633
+ version: int | None = None,
634
+ **kwargs: Any,
635
+ ) -> None: ...
636
+ @property
637
+ def version(self) -> int | None: ...
638
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
639
+
640
+ markers: list[WritableTxnMarkerResult]
641
+ def __init__(
642
+ self,
643
+ *args: Any,
644
+ markers: list[WritableTxnMarkerResult] = ...,
645
+ version: int | None = None,
646
+ **kwargs: Any,
647
+ ) -> None: ...
648
+ @property
649
+ def version(self) -> int | None: ...
650
+ def to_dict(self, meta: bool = False, json: bool = True) -> dict: ...
651
+ name: str
652
+ type: str
653
+ API_KEY: int
654
+ API_VERSION: int
655
+ valid_versions: tuple[int, int]
656
+ min_version: int
657
+ max_version: int
658
+ @property
659
+ def header(self) -> Any: ...
660
+ @classmethod
661
+ def is_request(cls) -> bool: ...
662
+ def expect_response(self) -> bool: ...
663
+ def with_header(self, correlation_id: int = 0, client_id: str = "kafka-python") -> None: ...
kafka/protocol/sasl.py ADDED
@@ -0,0 +1,52 @@
1
+ import struct
2
+
3
+ from .api_message import ApiMessage
4
+
5
+
6
+ class SaslHandshakeRequest(ApiMessage): pass
7
+ class SaslHandshakeResponse(ApiMessage): pass
8
+
9
+ class SaslAuthenticateRequest(ApiMessage): pass
10
+ class SaslAuthenticateResponse(ApiMessage): pass
11
+
12
+
13
+ class SaslBytesRequest:
14
+ """Request for raw SASL v0 exchange -- length-prefixed raw bytes."""
15
+ API_VERSION = 0
16
+
17
+ def __init__(self, data):
18
+ self._data = data
19
+ self.header = None
20
+
21
+ def with_header(self, correlation_id=None, **kwargs):
22
+ self.header = SaslBytesResponse(correlation_id)
23
+
24
+ def encode(self, framed=True, header=True):
25
+ return struct.pack('>I', len(self._data)) + self._data
26
+
27
+ def expect_response(self):
28
+ return True
29
+
30
+
31
+ class SaslBytesResponse:
32
+ """Response for raw SASL v0 exchange -- returns bytes as-is."""
33
+ def __init__(self, correlation_id):
34
+ self.correlation_id = correlation_id
35
+ self.error_code = 0
36
+
37
+ def parse_header(self, read_buffer):
38
+ return self
39
+
40
+ def decode(self, read_buffer):
41
+ self.auth_bytes = read_buffer.read()
42
+ return self
43
+
44
+ def get_response_class(self):
45
+ return self
46
+
47
+
48
+ __all__ = [
49
+ 'SaslHandshakeRequest', 'SaslHandshakeResponse',
50
+ 'SaslAuthenticateRequest', 'SaslAuthenticateResponse',
51
+ 'SaslBytesRequest', 'SaslBytesResponse',
52
+ ]