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,161 @@
1
+ #!/usr/bin/env python
2
+ #
3
+ # Taken from https://cloud.google.com/appengine/docs/standard/python/refdocs/\
4
+ # modules/google/appengine/api/files/crc32c?hl=ru
5
+ #
6
+ # Copyright 2007 Google Inc.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+ """Implementation of CRC-32C checksumming as in rfc3720 section B.4.
21
+ See https://en.wikipedia.org/wiki/Cyclic_redundancy_check for details on CRC-32C
22
+ This code is a manual python translation of c code generated by
23
+ pycrc 0.7.1 (https://pycrc.org/). Command line used:
24
+ './pycrc.py --model=crc-32c --generate c --algorithm=table-driven'
25
+ """
26
+
27
+ import array
28
+
29
+ CRC_TABLE = (
30
+ 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4,
31
+ 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,
32
+ 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b,
33
+ 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,
34
+ 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b,
35
+ 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,
36
+ 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54,
37
+ 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,
38
+ 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a,
39
+ 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,
40
+ 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5,
41
+ 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,
42
+ 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45,
43
+ 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,
44
+ 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a,
45
+ 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,
46
+ 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48,
47
+ 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,
48
+ 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687,
49
+ 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,
50
+ 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927,
51
+ 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,
52
+ 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8,
53
+ 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,
54
+ 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096,
55
+ 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,
56
+ 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859,
57
+ 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,
58
+ 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9,
59
+ 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,
60
+ 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36,
61
+ 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,
62
+ 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c,
63
+ 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,
64
+ 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043,
65
+ 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,
66
+ 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3,
67
+ 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,
68
+ 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c,
69
+ 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,
70
+ 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652,
71
+ 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,
72
+ 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d,
73
+ 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,
74
+ 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d,
75
+ 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,
76
+ 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2,
77
+ 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,
78
+ 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530,
79
+ 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,
80
+ 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff,
81
+ 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,
82
+ 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f,
83
+ 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,
84
+ 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90,
85
+ 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,
86
+ 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee,
87
+ 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,
88
+ 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321,
89
+ 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,
90
+ 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81,
91
+ 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,
92
+ 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,
93
+ 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351,
94
+ )
95
+
96
+ CRC_INIT = 0
97
+ _MASK = 0xFFFFFFFF
98
+
99
+
100
+ def crc_update(crc, data,
101
+ # Pull hot globals into the local namespace; the inner loop
102
+ # runs once per byte and LOAD_FAST is measurably faster than
103
+ # LOAD_GLOBAL in CPython.
104
+ _TABLE=CRC_TABLE, _M=_MASK):
105
+ """Update CRC-32C checksum with data.
106
+
107
+ Args:
108
+ crc: 32-bit checksum to update as long.
109
+ data: bytes, bytearray, memoryview, array.array("B"), or any
110
+ iterable yielding ints in [0, 255].
111
+ Returns:
112
+ 32-bit updated CRC-32C as long.
113
+ """
114
+ # Iterate directly over bytes / bytearray / memoryview(format='B'),
115
+ # which all yield ints in [0, 255] natively. Only fall back to the
116
+ # array.array copy for other input types (e.g. a string on py2, or
117
+ # a generic iterable of ints).
118
+ if isinstance(data, (bytes, bytearray)):
119
+ buf = data
120
+ elif isinstance(data, memoryview):
121
+ if data.format != 'B' or data.itemsize != 1:
122
+ buf = data.cast('B') # reinterpret as bytes, still zero-copy
123
+ else:
124
+ buf = data
125
+ elif isinstance(data, array.array) and data.itemsize == 1:
126
+ buf = data
127
+ else:
128
+ buf = array.array("B", data)
129
+ crc ^= _M
130
+ for b in buf:
131
+ crc = (_TABLE[(crc ^ b) & 0xff] ^ (crc >> 8)) & _M
132
+ return crc ^ _M
133
+
134
+
135
+ def crc_finalize(crc):
136
+ """Finalize CRC-32C checksum.
137
+ This function should be called as last step of crc calculation.
138
+ Args:
139
+ crc: 32-bit checksum as long.
140
+ Returns:
141
+ finalized 32-bit checksum as long
142
+ """
143
+ return crc & _MASK
144
+
145
+
146
+ def crc(data):
147
+ """Compute CRC-32C checksum of the data.
148
+ Args:
149
+ data: byte array, string or iterable over bytes.
150
+ Returns:
151
+ 32-bit CRC-32C checksum of data as long.
152
+ """
153
+ return crc_finalize(crc_update(CRC_INIT, data))
154
+
155
+
156
+ if __name__ == "__main__":
157
+ import sys
158
+ # TODO remove the pylint disable once pylint fixes
159
+ # https://github.com/PyCQA/pylint/issues/2571
160
+ data = sys.stdin.read() # pylint: disable=assignment-from-no-return
161
+ print(hex(crc(data)))
kafka/record/abc.py ADDED
@@ -0,0 +1,144 @@
1
+ from abc import ABC, abstractmethod, abstractproperty
2
+
3
+
4
+ class ABCRecord(ABC):
5
+ __slots__ = ()
6
+
7
+ @abstractproperty
8
+ def size_in_bytes(self):
9
+ """ Number of total bytes in record
10
+ """
11
+
12
+ @abstractproperty
13
+ def offset(self):
14
+ """ Absolute offset of record
15
+ """
16
+
17
+ @abstractproperty
18
+ def timestamp(self):
19
+ """ Epoch milliseconds
20
+ """
21
+
22
+ @abstractproperty
23
+ def timestamp_type(self):
24
+ """ CREATE_TIME(0) or APPEND_TIME(1)
25
+ """
26
+
27
+ @abstractproperty
28
+ def key(self):
29
+ """ Bytes key or None
30
+ """
31
+
32
+ @abstractproperty
33
+ def value(self):
34
+ """ Bytes value or None
35
+ """
36
+
37
+ @abstractproperty
38
+ def checksum(self):
39
+ """ Prior to v2 format CRC was contained in every message. This will
40
+ be the checksum for v0 and v1 and None for v2 and above.
41
+ """
42
+
43
+ @abstractmethod
44
+ def validate_crc(self):
45
+ """ Return True if v0/v1 record matches checksum. noop/True for v2 records
46
+ """
47
+
48
+ @abstractproperty
49
+ def headers(self):
50
+ """ If supported by version list of key-value tuples, or empty list if
51
+ not supported by format.
52
+ """
53
+
54
+
55
+ class ABCRecordBatchBuilder(ABC):
56
+ __slots__ = ()
57
+
58
+ @abstractmethod
59
+ def append(self, offset, timestamp, key, value, headers=None):
60
+ """ Writes record to internal buffer.
61
+
62
+ Arguments:
63
+ offset (int): Relative offset of record, starting from 0
64
+ timestamp (int or None): Timestamp in milliseconds since beginning
65
+ of the epoch (midnight Jan 1, 1970 (UTC)). If omitted, will be
66
+ set to current time.
67
+ key (bytes or None): Key of the record
68
+ value (bytes or None): Value of the record
69
+ headers (List[Tuple[str, bytes]]): Headers of the record. Header
70
+ keys can not be ``None``.
71
+
72
+ Returns:
73
+ (bytes, int): Checksum of the written record (or None for v2 and
74
+ above) and size of the written record.
75
+ """
76
+
77
+ @abstractmethod
78
+ def size_in_bytes(self, offset, timestamp, key, value, headers):
79
+ """ Return the expected size change on buffer (uncompressed) if we add
80
+ this message. This will account for varint size changes and give a
81
+ reliable size.
82
+ """
83
+
84
+ @abstractmethod
85
+ def build(self):
86
+ """ Close for append, compress if needed, write size and header and
87
+ return a ready to send buffer object.
88
+
89
+ Return:
90
+ bytearray: finished batch, ready to send.
91
+ """
92
+
93
+
94
+ class ABCRecordBatch(ABC):
95
+ """ For v2 encapsulates a RecordBatch, for v0/v1 a single (maybe
96
+ compressed) message.
97
+ """
98
+ __slots__ = ()
99
+
100
+ @abstractmethod
101
+ def __iter__(self):
102
+ """ Return iterator over records (ABCRecord instances). Will decompress
103
+ if needed.
104
+ """
105
+
106
+ @abstractproperty
107
+ def base_offset(self):
108
+ """ Return base offset for batch
109
+ """
110
+
111
+ @abstractproperty
112
+ def size_in_bytes(self):
113
+ """ Return size of batch in bytes (includes header overhead)
114
+ """
115
+
116
+ @abstractproperty
117
+ def magic(self):
118
+ """ Return magic value (0, 1, 2) for batch.
119
+ """
120
+
121
+
122
+ class ABCRecords(ABC):
123
+ __slots__ = ()
124
+
125
+ @abstractmethod
126
+ def __init__(self, buffer):
127
+ """ Initialize with bytes-like object conforming to the buffer
128
+ interface (ie. bytes, bytearray, memoryview etc.).
129
+ """
130
+
131
+ @abstractmethod
132
+ def size_in_bytes(self):
133
+ """ Returns the size of inner buffer.
134
+ """
135
+
136
+ @abstractmethod
137
+ def next_batch(self):
138
+ """ Return next batch of records (ABCRecordBatch instances).
139
+ """
140
+
141
+ @abstractmethod
142
+ def has_next(self):
143
+ """ True if there are more batches to read, False otherwise.
144
+ """