kafka-python 2.3.2__tar.gz → 3.0.0__tar.gz

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 (475) hide show
  1. {kafka_python-2.3.2 → kafka_python-3.0.0}/AUTHORS.md +1 -1
  2. {kafka_python-2.3.2 → kafka_python-3.0.0}/CHANGES.md +364 -5
  3. {kafka_python-2.3.2 → kafka_python-3.0.0}/LICENSE +1 -1
  4. {kafka_python-2.3.2 → kafka_python-3.0.0}/PKG-INFO +107 -62
  5. {kafka_python-2.3.2 → kafka_python-3.0.0}/README.rst +96 -52
  6. kafka_python-3.0.0/kafka/__init__.py +34 -0
  7. kafka_python-3.0.0/kafka/admin/__init__.py +29 -0
  8. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/admin/__main__.py +0 -2
  9. kafka_python-3.0.0/kafka/admin/_acls.py +355 -0
  10. kafka_python-3.0.0/kafka/admin/_cluster.py +359 -0
  11. kafka_python-3.0.0/kafka/admin/_configs.py +479 -0
  12. kafka_python-3.0.0/kafka/admin/_groups.py +754 -0
  13. kafka_python-3.0.0/kafka/admin/_partitions.py +595 -0
  14. kafka_python-3.0.0/kafka/admin/_topics.py +281 -0
  15. kafka_python-3.0.0/kafka/admin/_transactions.py +450 -0
  16. kafka_python-3.0.0/kafka/admin/_users.py +194 -0
  17. kafka_python-3.0.0/kafka/admin/client.py +373 -0
  18. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/consumer_performance.py +14 -18
  19. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/load_example.py +2 -3
  20. kafka_python-3.0.0/kafka/benchmarks/producer_encode_path.py +201 -0
  21. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/producer_performance.py +26 -18
  22. kafka_python-3.0.0/kafka/benchmarks/profile_protocol.py +138 -0
  23. kafka_python-3.0.0/kafka/benchmarks/protocol_old_vs_new.py +447 -0
  24. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/record_batch_compose.py +0 -1
  25. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/record_batch_read.py +0 -1
  26. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/varint_speed.py +11 -19
  27. kafka_python-3.0.0/kafka/cli/__init__.py +36 -0
  28. kafka_python-3.0.0/kafka/cli/admin/__init__.py +117 -0
  29. kafka_python-3.0.0/kafka/cli/admin/acls/__init__.py +9 -0
  30. kafka_python-3.0.0/kafka/cli/admin/acls/common.py +76 -0
  31. kafka_python-3.0.0/kafka/cli/admin/acls/create.py +19 -0
  32. kafka_python-3.0.0/kafka/cli/admin/acls/delete.py +23 -0
  33. kafka_python-3.0.0/kafka/cli/admin/acls/describe.py +16 -0
  34. kafka_python-3.0.0/kafka/cli/admin/cluster/__init__.py +14 -0
  35. kafka_python-3.0.0/kafka/cli/admin/cluster/describe.py +11 -0
  36. kafka_python-3.0.0/kafka/cli/admin/cluster/describe_quorum.py +11 -0
  37. kafka_python-3.0.0/kafka/cli/admin/cluster/features.py +52 -0
  38. kafka_python-3.0.0/kafka/cli/admin/cluster/log_dirs.py +43 -0
  39. kafka_python-3.0.0/kafka/cli/admin/cluster/versions.py +33 -0
  40. kafka_python-3.0.0/kafka/cli/admin/configs/__init__.py +10 -0
  41. kafka_python-3.0.0/kafka/cli/admin/configs/alter.py +43 -0
  42. kafka_python-3.0.0/kafka/cli/admin/configs/common.py +17 -0
  43. kafka_python-3.0.0/kafka/cli/admin/configs/describe.py +30 -0
  44. kafka_python-3.0.0/kafka/cli/admin/configs/list.py +16 -0
  45. kafka_python-3.0.0/kafka/cli/admin/configs/reset.py +20 -0
  46. kafka_python-3.0.0/kafka/cli/admin/groups/__init__.py +16 -0
  47. kafka_python-3.0.0/kafka/cli/admin/groups/alter_offsets.py +30 -0
  48. kafka_python-3.0.0/kafka/cli/admin/groups/delete.py +11 -0
  49. kafka_python-3.0.0/kafka/cli/admin/groups/delete_offsets.py +29 -0
  50. kafka_python-3.0.0/kafka/cli/admin/groups/describe.py +11 -0
  51. kafka_python-3.0.0/kafka/cli/admin/groups/list.py +28 -0
  52. kafka_python-3.0.0/kafka/cli/admin/groups/list_offsets.py +29 -0
  53. kafka_python-3.0.0/kafka/cli/admin/groups/remove_members.py +40 -0
  54. kafka_python-3.0.0/kafka/cli/admin/groups/reset_offsets.py +139 -0
  55. kafka_python-3.0.0/kafka/cli/admin/partitions/__init__.py +21 -0
  56. kafka_python-3.0.0/kafka/cli/admin/partitions/alter_reassignments.py +37 -0
  57. kafka_python-3.0.0/kafka/cli/admin/partitions/create.py +27 -0
  58. kafka_python-3.0.0/kafka/cli/admin/partitions/delete_records.py +31 -0
  59. kafka_python-3.0.0/kafka/cli/admin/partitions/describe.py +36 -0
  60. kafka_python-3.0.0/kafka/cli/admin/partitions/elect_leaders.py +53 -0
  61. kafka_python-3.0.0/kafka/cli/admin/partitions/list_offsets.py +88 -0
  62. kafka_python-3.0.0/kafka/cli/admin/partitions/list_reassignments.py +35 -0
  63. kafka_python-3.0.0/kafka/cli/admin/topics/__init__.py +10 -0
  64. kafka_python-3.0.0/kafka/cli/admin/topics/create.py +13 -0
  65. kafka_python-3.0.0/kafka/cli/admin/topics/delete.py +19 -0
  66. kafka_python-3.0.0/kafka/cli/admin/topics/describe.py +18 -0
  67. kafka_python-3.0.0/kafka/cli/admin/topics/list.py +11 -0
  68. kafka_python-3.0.0/kafka/cli/admin/transactions/__init__.py +17 -0
  69. kafka_python-3.0.0/kafka/cli/admin/transactions/abort.py +38 -0
  70. kafka_python-3.0.0/kafka/cli/admin/transactions/describe.py +24 -0
  71. kafka_python-3.0.0/kafka/cli/admin/transactions/describe_producers.py +29 -0
  72. kafka_python-3.0.0/kafka/cli/admin/transactions/find_hanging.py +26 -0
  73. kafka_python-3.0.0/kafka/cli/admin/transactions/list.py +37 -0
  74. kafka_python-3.0.0/kafka/cli/admin/users/__init__.py +8 -0
  75. kafka_python-3.0.0/kafka/cli/admin/users/alter_user_scram_credentials.py +34 -0
  76. kafka_python-3.0.0/kafka/cli/admin/users/describe_user_scram_credentials.py +15 -0
  77. kafka_python-3.0.0/kafka/cli/common.py +95 -0
  78. kafka_python-3.0.0/kafka/cli/consumer/__init__.py +63 -0
  79. kafka_python-3.0.0/kafka/cli/producer/__init__.py +57 -0
  80. kafka_python-3.0.0/kafka/cluster.py +824 -0
  81. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/codec.py +4 -10
  82. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/__init__.py +0 -2
  83. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/__main__.py +0 -2
  84. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/fetcher.py +965 -363
  85. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/group.py +321 -198
  86. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/subscription_state.py +380 -72
  87. kafka_python-3.0.0/kafka/coordinator/assignors/abstract.py +90 -0
  88. kafka_python-3.0.0/kafka/coordinator/assignors/cooperative_sticky.py +167 -0
  89. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/range.py +15 -16
  90. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/roundrobin.py +16 -16
  91. kafka_python-3.0.0/kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +37 -0
  92. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/sticky/partition_movements.py +5 -5
  93. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/sticky/sticky_assignor.py +70 -90
  94. kafka_python-3.0.0/kafka/coordinator/assignors/sticky/user_data.py +8 -0
  95. kafka_python-3.0.0/kafka/coordinator/base.py +1215 -0
  96. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/consumer.py +567 -352
  97. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/heartbeat.py +10 -12
  98. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/subscription.py +1 -4
  99. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/errors.py +100 -173
  100. kafka_python-3.0.0/kafka/future.py +166 -0
  101. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/__init__.py +0 -2
  102. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/compound_stat.py +5 -8
  103. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/dict_reporter.py +0 -2
  104. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/kafka_metric.py +2 -4
  105. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/measurable.py +4 -6
  106. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/measurable_stat.py +2 -6
  107. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metric_config.py +1 -3
  108. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metric_name.py +1 -3
  109. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metrics.py +10 -12
  110. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metrics_reporter.py +12 -17
  111. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/quota.py +1 -4
  112. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stat.py +4 -9
  113. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/__init__.py +0 -2
  114. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/avg.py +1 -3
  115. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/count.py +1 -3
  116. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/histogram.py +4 -6
  117. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/max_stat.py +1 -3
  118. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/min_stat.py +1 -3
  119. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/percentile.py +1 -4
  120. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/percentiles.py +4 -6
  121. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/rate.py +2 -4
  122. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/sampled_stat.py +7 -11
  123. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/sensor.py +4 -6
  124. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/total.py +1 -3
  125. kafka_python-3.0.0/kafka/net/__init__.py +19 -0
  126. kafka_python-3.0.0/kafka/net/compat.py +165 -0
  127. kafka_python-3.0.0/kafka/net/connection.py +593 -0
  128. kafka_python-3.0.0/kafka/net/http_connect.py +144 -0
  129. kafka_python-3.0.0/kafka/net/inet.py +122 -0
  130. kafka_python-3.0.0/kafka/net/manager.py +451 -0
  131. kafka_python-3.0.0/kafka/net/metrics.py +149 -0
  132. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/__init__.py +6 -8
  133. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/abc.py +7 -12
  134. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/gssapi.py +3 -4
  135. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/msk.py +8 -7
  136. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/oauth.py +8 -10
  137. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/plain.py +6 -5
  138. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/scram.py +10 -13
  139. {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/sspi.py +5 -5
  140. kafka_python-3.0.0/kafka/net/selector.py +644 -0
  141. kafka_python-2.3.2/kafka/socks5_wrapper.py → kafka_python-3.0.0/kafka/net/socks5.py +31 -43
  142. kafka_python-3.0.0/kafka/net/transport.py +415 -0
  143. kafka_python-3.0.0/kafka/net/wakeup_notifier.py +72 -0
  144. kafka_python-3.0.0/kafka/partitioner/__init__.py +8 -0
  145. kafka_python-3.0.0/kafka/partitioner/abc.py +8 -0
  146. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/partitioner/default.py +14 -27
  147. kafka_python-3.0.0/kafka/partitioner/sticky.py +109 -0
  148. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/__init__.py +0 -2
  149. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/__main__.py +0 -2
  150. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/future.py +39 -12
  151. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/kafka.py +297 -200
  152. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/producer_batch.py +26 -19
  153. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/record_accumulator.py +144 -25
  154. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/sender.py +297 -220
  155. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/transaction_manager.py +537 -196
  156. kafka_python-3.0.0/kafka/protocol/admin/__init__.py +29 -0
  157. kafka_python-3.0.0/kafka/protocol/admin/acl.py +83 -0
  158. kafka_python-3.0.0/kafka/protocol/admin/acl.pyi +375 -0
  159. kafka_python-3.0.0/kafka/protocol/admin/client_quotas.py +14 -0
  160. kafka_python-3.0.0/kafka/protocol/admin/client_quotas.pyi +265 -0
  161. kafka_python-3.0.0/kafka/protocol/admin/cluster.py +31 -0
  162. kafka_python-3.0.0/kafka/protocol/admin/cluster.pyi +620 -0
  163. kafka_python-3.0.0/kafka/protocol/admin/configs.py +22 -0
  164. kafka_python-3.0.0/kafka/protocol/admin/configs.pyi +437 -0
  165. kafka_python-3.0.0/kafka/protocol/admin/groups.py +24 -0
  166. kafka_python-3.0.0/kafka/protocol/admin/groups.pyi +261 -0
  167. kafka_python-3.0.0/kafka/protocol/admin/topics.py +53 -0
  168. kafka_python-3.0.0/kafka/protocol/admin/topics.pyi +982 -0
  169. kafka_python-3.0.0/kafka/protocol/admin/transactions.py +18 -0
  170. kafka_python-3.0.0/kafka/protocol/admin/transactions.pyi +311 -0
  171. kafka_python-3.0.0/kafka/protocol/admin/users.py +14 -0
  172. kafka_python-3.0.0/kafka/protocol/admin/users.pyi +223 -0
  173. kafka_python-3.0.0/kafka/protocol/api_data.py +125 -0
  174. kafka_python-3.0.0/kafka/protocol/api_header.py +55 -0
  175. kafka_python-3.0.0/kafka/protocol/api_key.py +97 -0
  176. kafka_python-3.0.0/kafka/protocol/api_message.py +277 -0
  177. kafka_python-2.3.2/kafka/protocol/broker_api_versions.py → kafka_python-3.0.0/kafka/protocol/broker_version_data.py +178 -0
  178. kafka_python-3.0.0/kafka/protocol/consumer/__init__.py +13 -0
  179. kafka_python-3.0.0/kafka/protocol/consumer/fetch.py +16 -0
  180. kafka_python-3.0.0/kafka/protocol/consumer/fetch.pyi +298 -0
  181. kafka_python-3.0.0/kafka/protocol/consumer/group.py +38 -0
  182. kafka_python-3.0.0/kafka/protocol/consumer/group.pyi +824 -0
  183. kafka_python-3.0.0/kafka/protocol/consumer/metadata.py +30 -0
  184. kafka_python-3.0.0/kafka/protocol/consumer/metadata.pyi +89 -0
  185. kafka_python-3.0.0/kafka/protocol/consumer/offsets.py +75 -0
  186. kafka_python-3.0.0/kafka/protocol/consumer/offsets.pyi +288 -0
  187. kafka_python-3.0.0/kafka/protocol/data_container.py +166 -0
  188. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/protocol/frame.py +1 -1
  189. kafka_python-3.0.0/kafka/protocol/generate_stubs.py +468 -0
  190. kafka_python-3.0.0/kafka/protocol/metadata/__init__.py +10 -0
  191. kafka_python-3.0.0/kafka/protocol/metadata/api_versions.py +41 -0
  192. kafka_python-3.0.0/kafka/protocol/metadata/api_versions.pyi +128 -0
  193. kafka_python-3.0.0/kafka/protocol/metadata/find_coordinator.py +19 -0
  194. kafka_python-3.0.0/kafka/protocol/metadata/find_coordinator.pyi +105 -0
  195. kafka_python-3.0.0/kafka/protocol/metadata/metadata.py +34 -0
  196. kafka_python-3.0.0/kafka/protocol/metadata/metadata.pyi +160 -0
  197. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/abstract.py +6 -9
  198. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/add_offsets_to_txn.py +2 -7
  199. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/add_partitions_to_txn.py +25 -17
  200. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/admin.py +214 -243
  201. kafka_python-3.0.0/kafka/protocol/old/api.py +205 -0
  202. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/api_versions.py +18 -19
  203. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/commit.py +99 -80
  204. kafka_python-2.3.2/kafka/coordinator/protocol.py → kafka_python-3.0.0/kafka/protocol/old/consumer_protocol.py +8 -7
  205. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/end_txn.py +2 -7
  206. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/fetch.py +73 -59
  207. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/find_coordinator.py +20 -12
  208. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/group.py +93 -62
  209. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/init_producer_id.py +2 -6
  210. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/list_offsets.py +23 -31
  211. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/metadata.py +37 -48
  212. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/offset_for_leader_epoch.py +2 -9
  213. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/produce.py +67 -54
  214. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/sasl_authenticate.py +2 -6
  215. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/sasl_handshake.py +7 -7
  216. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/struct.py +37 -21
  217. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/txn_offset_commit.py +13 -18
  218. {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/types.py +53 -10
  219. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/protocol/parser.py +44 -38
  220. kafka_python-3.0.0/kafka/protocol/producer/__init__.py +7 -0
  221. kafka_python-3.0.0/kafka/protocol/producer/produce.py +17 -0
  222. kafka_python-3.0.0/kafka/protocol/producer/produce.pyi +197 -0
  223. kafka_python-3.0.0/kafka/protocol/producer/transaction.py +30 -0
  224. kafka_python-3.0.0/kafka/protocol/producer/transaction.pyi +663 -0
  225. kafka_python-3.0.0/kafka/protocol/sasl.py +52 -0
  226. kafka_python-3.0.0/kafka/protocol/sasl.pyi +126 -0
  227. kafka_python-3.0.0/kafka/protocol/schemas/__init__.py +7 -0
  228. kafka_python-3.0.0/kafka/protocol/schemas/fields/__init__.py +7 -0
  229. kafka_python-3.0.0/kafka/protocol/schemas/fields/array.py +127 -0
  230. kafka_python-3.0.0/kafka/protocol/schemas/fields/base.py +156 -0
  231. kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/__init__.py +12 -0
  232. kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/encode_buffer.py +82 -0
  233. kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/tagged_fields.py +109 -0
  234. kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/types.py +505 -0
  235. kafka_python-3.0.0/kafka/protocol/schemas/fields/codegen.py +40 -0
  236. kafka_python-3.0.0/kafka/protocol/schemas/fields/simple.py +127 -0
  237. kafka_python-3.0.0/kafka/protocol/schemas/fields/struct.py +357 -0
  238. kafka_python-3.0.0/kafka/protocol/schemas/fields/struct_array.py +142 -0
  239. kafka_python-3.0.0/kafka/protocol/schemas/load_json.py +42 -0
  240. kafka_python-3.0.0/kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +40 -0
  241. kafka_python-3.0.0/kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +35 -0
  242. kafka_python-3.0.0/kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +65 -0
  243. kafka_python-3.0.0/kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +60 -0
  244. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +47 -0
  245. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +41 -0
  246. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterConfigsRequest.json +43 -0
  247. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterConfigsResponse.json +39 -0
  248. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +42 -0
  249. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +47 -0
  250. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +41 -0
  251. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +41 -0
  252. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +45 -0
  253. kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +35 -0
  254. kafka_python-3.0.0/kafka/protocol/schemas/resources/ApiVersionsRequest.json +34 -0
  255. kafka_python-3.0.0/kafka/protocol/schemas/resources/ApiVersionsResponse.json +79 -0
  256. kafka_python-3.0.0/kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +42 -0
  257. kafka_python-3.0.0/kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +49 -0
  258. kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateAclsRequest.json +46 -0
  259. kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateAclsResponse.json +37 -0
  260. kafka_python-3.0.0/kafka/protocol/schemas/resources/CreatePartitionsRequest.json +47 -0
  261. kafka_python-3.0.0/kafka/protocol/schemas/resources/CreatePartitionsResponse.json +41 -0
  262. kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateTopicsRequest.json +65 -0
  263. kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateTopicsResponse.json +72 -0
  264. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteAclsRequest.json +46 -0
  265. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteAclsResponse.json +59 -0
  266. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteGroupsRequest.json +30 -0
  267. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteGroupsResponse.json +36 -0
  268. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteRecordsRequest.json +42 -0
  269. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteRecordsResponse.json +43 -0
  270. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteTopicsRequest.json +43 -0
  271. kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteTopicsResponse.json +52 -0
  272. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeAclsRequest.json +43 -0
  273. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeAclsResponse.json +55 -0
  274. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +37 -0
  275. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +47 -0
  276. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClusterRequest.json +35 -0
  277. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClusterResponse.json +56 -0
  278. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeConfigsRequest.json +42 -0
  279. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeConfigsResponse.json +69 -0
  280. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeGroupsRequest.json +38 -0
  281. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeGroupsResponse.json +74 -0
  282. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +38 -0
  283. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +65 -0
  284. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeProducersRequest.json +32 -0
  285. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeProducersResponse.json +55 -0
  286. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeQuorumRequest.json +39 -0
  287. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeQuorumResponse.json +82 -0
  288. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +40 -0
  289. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +66 -0
  290. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +27 -0
  291. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +52 -0
  292. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +30 -0
  293. kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +45 -0
  294. kafka_python-3.0.0/kafka/protocol/schemas/resources/ElectLeadersRequest.json +41 -0
  295. kafka_python-3.0.0/kafka/protocol/schemas/resources/ElectLeadersResponse.json +45 -0
  296. kafka_python-3.0.0/kafka/protocol/schemas/resources/EndTxnRequest.json +43 -0
  297. kafka_python-3.0.0/kafka/protocol/schemas/resources/EndTxnResponse.json +41 -0
  298. kafka_python-3.0.0/kafka/protocol/schemas/resources/FetchRequest.json +125 -0
  299. kafka_python-3.0.0/kafka/protocol/schemas/resources/FetchResponse.json +124 -0
  300. kafka_python-3.0.0/kafka/protocol/schemas/resources/FindCoordinatorRequest.json +43 -0
  301. kafka_python-3.0.0/kafka/protocol/schemas/resources/FindCoordinatorResponse.json +58 -0
  302. kafka_python-3.0.0/kafka/protocol/schemas/resources/HeartbeatRequest.json +39 -0
  303. kafka_python-3.0.0/kafka/protocol/schemas/resources/HeartbeatResponse.json +35 -0
  304. kafka_python-3.0.0/kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +44 -0
  305. kafka_python-3.0.0/kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +38 -0
  306. kafka_python-3.0.0/kafka/protocol/schemas/resources/InitProducerIdRequest.json +50 -0
  307. kafka_python-3.0.0/kafka/protocol/schemas/resources/InitProducerIdResponse.json +47 -0
  308. kafka_python-3.0.0/kafka/protocol/schemas/resources/JoinGroupRequest.json +63 -0
  309. kafka_python-3.0.0/kafka/protocol/schemas/resources/JoinGroupResponse.json +69 -0
  310. kafka_python-3.0.0/kafka/protocol/schemas/resources/LeaveGroupRequest.json +47 -0
  311. kafka_python-3.0.0/kafka/protocol/schemas/resources/LeaveGroupResponse.json +47 -0
  312. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +31 -0
  313. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +37 -0
  314. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListGroupsRequest.json +36 -0
  315. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListGroupsResponse.json +49 -0
  316. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListOffsetsRequest.json +72 -0
  317. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListOffsetsResponse.json +71 -0
  318. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +34 -0
  319. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +46 -0
  320. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListTransactionsRequest.json +40 -0
  321. kafka_python-3.0.0/kafka/protocol/schemas/resources/ListTransactionsResponse.json +42 -0
  322. kafka_python-3.0.0/kafka/protocol/schemas/resources/MetadataRequest.json +56 -0
  323. kafka_python-3.0.0/kafka/protocol/schemas/resources/MetadataResponse.json +101 -0
  324. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetCommitRequest.json +76 -0
  325. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetCommitResponse.json +71 -0
  326. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetDeleteRequest.json +39 -0
  327. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetDeleteResponse.json +42 -0
  328. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetFetchRequest.json +76 -0
  329. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetFetchResponse.json +107 -0
  330. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +52 -0
  331. kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +51 -0
  332. kafka_python-3.0.0/kafka/protocol/schemas/resources/ProduceRequest.json +73 -0
  333. kafka_python-3.0.0/kafka/protocol/schemas/resources/ProduceResponse.json +96 -0
  334. kafka_python-3.0.0/kafka/protocol/schemas/resources/RequestHeader.json +44 -0
  335. kafka_python-3.0.0/kafka/protocol/schemas/resources/ResponseHeader.json +26 -0
  336. kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +29 -0
  337. kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +34 -0
  338. kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslHandshakeRequest.json +31 -0
  339. kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslHandshakeResponse.json +32 -0
  340. kafka_python-3.0.0/kafka/protocol/schemas/resources/SyncGroupRequest.json +56 -0
  341. kafka_python-3.0.0/kafka/protocol/schemas/resources/SyncGroupResponse.json +46 -0
  342. kafka_python-3.0.0/kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +68 -0
  343. kafka_python-3.0.0/kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +47 -0
  344. kafka_python-3.0.0/kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +43 -0
  345. kafka_python-3.0.0/kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +39 -0
  346. kafka_python-3.0.0/kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +49 -0
  347. kafka_python-3.0.0/kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +45 -0
  348. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/_crc32c.py +25 -9
  349. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/abc.py +25 -33
  350. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/default_records.py +13 -7
  351. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/legacy_records.py +13 -6
  352. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/memory_records.py +21 -5
  353. kafka_python-3.0.0/kafka/serializer/__init__.py +4 -0
  354. kafka_python-3.0.0/kafka/serializer/abstract.py +20 -0
  355. kafka_python-3.0.0/kafka/serializer/default.py +16 -0
  356. kafka_python-3.0.0/kafka/serializer/json.py +17 -0
  357. kafka_python-3.0.0/kafka/serializer/wrapper.py +21 -0
  358. kafka_python-3.0.0/kafka/structs.py +69 -0
  359. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/util.py +43 -25
  360. kafka_python-3.0.0/kafka/vendor/__init__.py +0 -0
  361. kafka_python-3.0.0/kafka/version.py +1 -0
  362. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/PKG-INFO +107 -62
  363. kafka_python-3.0.0/kafka_python.egg-info/SOURCES.txt +405 -0
  364. kafka_python-3.0.0/kafka_python.egg-info/entry_points.txt +2 -0
  365. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/requires.txt +0 -3
  366. {kafka_python-2.3.2 → kafka_python-3.0.0}/pyproject.toml +27 -14
  367. kafka_python-3.0.0/test/integration/__init__.py +0 -0
  368. kafka_python-3.0.0/test/integration/conftest.py +250 -0
  369. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/integration/fixtures.py +158 -151
  370. kafka_python-3.0.0/test/integration/test_admin_integration.py +595 -0
  371. kafka_python-3.0.0/test/integration/test_consumer_integration.py +497 -0
  372. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/integration/test_producer_integration.py +96 -62
  373. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/integration/test_sasl_integration.py +17 -14
  374. kafka_python-3.0.0/test/integration/test_ssl_integration.py +52 -0
  375. kafka_python-3.0.0/test/net/__init__.py +0 -0
  376. kafka_python-3.0.0/test/net/test_compat.py +192 -0
  377. kafka_python-3.0.0/test/net/test_connection.py +689 -0
  378. kafka_python-3.0.0/test/net/test_http_connect.py +116 -0
  379. kafka_python-3.0.0/test/net/test_inet.py +362 -0
  380. kafka_python-3.0.0/test/net/test_manager.py +436 -0
  381. kafka_python-3.0.0/test/net/test_sasl_reauthentication.py +252 -0
  382. kafka_python-3.0.0/test/net/test_selector.py +646 -0
  383. kafka_python-3.0.0/test/net/test_transport.py +248 -0
  384. kafka_python-3.0.0/test/net/test_wakeup_notifier.py +165 -0
  385. kafka_python-3.0.0/test/test_cluster.py +538 -0
  386. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_codec.py +0 -3
  387. kafka_python-3.0.0/test/test_future.py +57 -0
  388. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_metrics.py +12 -12
  389. kafka_python-3.0.0/test/test_mock_broker.py +315 -0
  390. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_package.py +8 -8
  391. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_util.py +0 -1
  392. {kafka_python-2.3.2 → kafka_python-3.0.0}/test/testutil.py +5 -5
  393. kafka_python-2.3.2/kafka/__init__.py +0 -34
  394. kafka_python-2.3.2/kafka/admin/__init__.py +0 -14
  395. kafka_python-2.3.2/kafka/admin/acl_resource.py +0 -254
  396. kafka_python-2.3.2/kafka/admin/client.py +0 -1627
  397. kafka_python-2.3.2/kafka/admin/config_resource.py +0 -42
  398. kafka_python-2.3.2/kafka/admin/new_partitions.py +0 -19
  399. kafka_python-2.3.2/kafka/admin/new_topic.py +0 -29
  400. kafka_python-2.3.2/kafka/cli/admin/__init__.py +0 -145
  401. kafka_python-2.3.2/kafka/cli/admin/cluster/__init__.py +0 -16
  402. kafka_python-2.3.2/kafka/cli/admin/cluster/describe.py +0 -9
  403. kafka_python-2.3.2/kafka/cli/admin/configs/__init__.py +0 -16
  404. kafka_python-2.3.2/kafka/cli/admin/configs/describe.py +0 -24
  405. kafka_python-2.3.2/kafka/cli/admin/consumer_groups/__init__.py +0 -19
  406. kafka_python-2.3.2/kafka/cli/admin/consumer_groups/delete.py +0 -10
  407. kafka_python-2.3.2/kafka/cli/admin/consumer_groups/describe.py +0 -10
  408. kafka_python-2.3.2/kafka/cli/admin/consumer_groups/list.py +0 -9
  409. kafka_python-2.3.2/kafka/cli/admin/consumer_groups/list_offsets.py +0 -10
  410. kafka_python-2.3.2/kafka/cli/admin/log_dirs/__init__.py +0 -16
  411. kafka_python-2.3.2/kafka/cli/admin/log_dirs/describe.py +0 -9
  412. kafka_python-2.3.2/kafka/cli/admin/topics/__init__.py +0 -19
  413. kafka_python-2.3.2/kafka/cli/admin/topics/create.py +0 -18
  414. kafka_python-2.3.2/kafka/cli/admin/topics/delete.py +0 -10
  415. kafka_python-2.3.2/kafka/cli/admin/topics/describe.py +0 -10
  416. kafka_python-2.3.2/kafka/cli/admin/topics/list.py +0 -9
  417. kafka_python-2.3.2/kafka/cli/consumer/__init__.py +0 -89
  418. kafka_python-2.3.2/kafka/cli/producer/__init__.py +0 -91
  419. kafka_python-2.3.2/kafka/client_async.py +0 -1312
  420. kafka_python-2.3.2/kafka/cluster.py +0 -450
  421. kafka_python-2.3.2/kafka/conn.py +0 -1544
  422. kafka_python-2.3.2/kafka/coordinator/assignors/abstract.py +0 -57
  423. kafka_python-2.3.2/kafka/coordinator/base.py +0 -1270
  424. kafka_python-2.3.2/kafka/future.py +0 -102
  425. kafka_python-2.3.2/kafka/partitioner/__init__.py +0 -8
  426. kafka_python-2.3.2/kafka/protocol/__init__.py +0 -49
  427. kafka_python-2.3.2/kafka/protocol/api.py +0 -141
  428. kafka_python-2.3.2/kafka/protocol/message.py +0 -216
  429. kafka_python-2.3.2/kafka/serializer/__init__.py +0 -3
  430. kafka_python-2.3.2/kafka/serializer/abstract.py +0 -31
  431. kafka_python-2.3.2/kafka/structs.py +0 -88
  432. kafka_python-2.3.2/kafka/vendor/enum34.py +0 -841
  433. kafka_python-2.3.2/kafka/vendor/selectors34.py +0 -641
  434. kafka_python-2.3.2/kafka/vendor/six.py +0 -1004
  435. kafka_python-2.3.2/kafka/vendor/socketpair.py +0 -75
  436. kafka_python-2.3.2/kafka/version.py +0 -1
  437. kafka_python-2.3.2/kafka_python.egg-info/SOURCES.txt +0 -190
  438. kafka_python-2.3.2/setup.py +0 -4
  439. kafka_python-2.3.2/test/integration/conftest.py +0 -168
  440. kafka_python-2.3.2/test/integration/test_admin_integration.py +0 -377
  441. kafka_python-2.3.2/test/integration/test_consumer_group.py +0 -208
  442. kafka_python-2.3.2/test/integration/test_consumer_integration.py +0 -326
  443. kafka_python-2.3.2/test/test_acl_comparisons.py +0 -92
  444. kafka_python-2.3.2/test/test_admin.py +0 -94
  445. kafka_python-2.3.2/test/test_api_object_implementation.py +0 -18
  446. kafka_python-2.3.2/test/test_assignors.py +0 -872
  447. kafka_python-2.3.2/test/test_client_async.py +0 -399
  448. kafka_python-2.3.2/test/test_cluster.py +0 -208
  449. kafka_python-2.3.2/test/test_conn.py +0 -451
  450. kafka_python-2.3.2/test/test_consumer.py +0 -52
  451. kafka_python-2.3.2/test/test_coordinator.py +0 -690
  452. kafka_python-2.3.2/test/test_fetcher.py +0 -959
  453. kafka_python-2.3.2/test/test_object_conversion.py +0 -235
  454. kafka_python-2.3.2/test/test_partition_movements.py +0 -23
  455. kafka_python-2.3.2/test/test_partitioner.py +0 -38
  456. kafka_python-2.3.2/test/test_producer.py +0 -35
  457. kafka_python-2.3.2/test/test_producer_batch.py +0 -151
  458. kafka_python-2.3.2/test/test_record_accumulator.py +0 -166
  459. kafka_python-2.3.2/test/test_sender.py +0 -272
  460. kafka_python-2.3.2/test/test_subscription_state.py +0 -57
  461. {kafka_python-2.3.2 → kafka_python-3.0.0}/MANIFEST.in +0 -0
  462. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/__main__.py +0 -0
  463. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/__init__.py +0 -0
  464. {kafka_python-2.3.2/kafka/cli → kafka_python-3.0.0/kafka/coordinator}/__init__.py +0 -0
  465. {kafka_python-2.3.2/kafka/coordinator → kafka_python-3.0.0/kafka/coordinator/assignors}/__init__.py +0 -0
  466. {kafka_python-2.3.2/kafka/coordinator/assignors → kafka_python-3.0.0/kafka/coordinator/assignors/sticky}/__init__.py +0 -0
  467. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
  468. {kafka_python-2.3.2/kafka/coordinator/assignors/sticky → kafka_python-3.0.0/kafka/protocol}/__init__.py +0 -0
  469. {kafka_python-2.3.2/kafka/vendor → kafka_python-3.0.0/kafka/protocol/old}/__init__.py +0 -0
  470. {kafka_python-2.3.2/test/integration → kafka_python-3.0.0/kafka/protocol/schemas/resources}/__init__.py +0 -0
  471. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/__init__.py +0 -0
  472. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/util.py +0 -0
  473. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/dependency_links.txt +0 -0
  474. {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/top_level.txt +0 -0
  475. {kafka_python-2.3.2 → kafka_python-3.0.0}/setup.cfg +0 -0
@@ -14,7 +14,7 @@
14
14
  * Enrico Canzonieri, [@ecanzonieri](https://github.com/ecanzonieri)
15
15
  * haosdent, [@haosdent](https://github.com/haosdent)
16
16
  * Arturo Filastò, [@hellais](https://github.com/hellais)
17
- * Job EversMeltzer, [@jobevers](https://github.com/jobevers)
17
+ * Job Evers-Meltzer, [@jobevers](https://github.com/jobevers)
18
18
  * Martin Olveyra, [@kalessin](https://github.com/kalessin)
19
19
  * Kubilay Kocak, [@koobs](https://github.com/koobs)
20
20
  * Matthew L Daniel <mdaniel@gmail.com>
@@ -1,10 +1,358 @@
1
- # 2.3.2 (Jun 3, 2026)
1
+ # 3.0.0 (Jun 11, 2026)
2
2
 
3
- Fixes
4
- * kafka.conn: Improve error handling for sasl authenticate mechanisms
3
+ This is a major release with significant changes to kafka-python internals to simplify networking and feature development. It introduces a new networking layer (`kafka.net`) and a dynamic protocol system that uses JSON schema files imported from Apache Kafka. It substantially refactors and expands the Admin client, including breaking changes to some API signatures, and it lands a long list of KIP features/changes across the producer, consumer, admin, and networking/metadata clients. Protocol support across kafka-python is now at or beyond the apache kafka 3.0 baseline.
4
+
5
+ ## Breaking Changes
6
+
7
+ ### Python Compatibility
8
+ * Drop python2 support (#2699, #2774, #2837, #2846)
9
+
10
+ ### Default Configuration Changes
11
+ * KIP-679: Update Producer defaults -- enable_idempotence=True, acks='all' (#3013)
12
+ * KIP-735: Increase default consumer session_timeout_ms from 10s to 45s (#3030)
13
+ * Rename api_version_auto_timeout_ms -> bootstrap_timeout_ms; default 30s (#3028)
14
+ * Producer: Remove deprecation warning for buffer_memory config (now raises) (#3047)
15
+
16
+ ### Abstract Interface Changes
17
+ * Serializer/Deserializer: Pass headers to serialize/deserialize (#3046)
18
+ * Partitioner: pass both key/value, serialized and unserialized, to partition() (#3045)
19
+
20
+ ### Admin API Changes
21
+ * Admin: change response shapes to simple dicts (#2883)
22
+ * Admin: groups apis renames; add offsets, members apis (#2892)
23
+ * Admin: Deprecate NewTopics/NewPartitions in favor of simple dicts (#2869)
24
+
25
+ ### Consumer API Changes
26
+ * Consumer: use assignor instances, not classes (#2775)
27
+
28
+ ### Error Hierarchy
29
+ * KafkaError subclass Exception not RuntimeError (#2932)
30
+ * Make IncompatibleBrokerVersion a subclass of UnsupportedVersionError (#2924)
31
+ * Eliminate NoBrokersAvailableError (#2942)
32
+ * KafkaProtocolError is not retriable (#2941)
33
+ * Prefer raised Exceptions to assert / AssertionError (#3042)
34
+
35
+ ### Old Networking Stack Removal
36
+ * Remove kafka.client_async / kafka.conn legacy modules (#2918)
37
+ * Drop version probes for pre-0.10/ApiVersionsRequest brokers
38
+
39
+ ### SASL Module Rename
40
+ * Rename kafka.sasl -> kafka.net.sasl
41
+
42
+ ## Networking (kafka.net)
43
+
44
+ Complete refactor of the networking layer using a bespoke event-loop supporting async/await (but no asyncio yet). All three clients (Admin, Consumer, Producer) use a dedicated IO thread that drives a selector-based event loop. AdminClient/KafkaConsumer leverage a built-in io thread supplied by kafka.net, KafkaProducer continues to use its existing background Sender thread for now.
45
+
46
+ ### Async IO Substrate
47
+ * kafka.net: Refactored async networking modules (generator-based coroutines) (#2812)
48
+ * kafka.net: Network IO thread (#2965, #2980, #2961, #2968, #2963)
49
+ * KafkaNetClient: drop-in replacement for KafkaClient using kafka.net (#2816)
50
+ * KafkaNetSocket: interface class for socket and proxy connections (#2992)
51
+ * kafka.net.manager: Add call_soon(coro) and run(coro) for sync/async bridge (#2862)
52
+ * kafka.net.manager: Bootstrap is sync/blocking (#2919)
53
+ * connection: short-circuit send/recv when closed (#2967)
54
+ * Clamp broker_version to user-supplied api_version (#3052)
55
+
56
+ ### Transports and Proxies
57
+ * Default SSLContext -> PROTOCOL_TLS_CLIENT; minimum version TLS 1.2 (#2807)
58
+ * Enable TCP KeepAlive as default socket option (#2904)
59
+ * kafka.net: HTTP CONNECT proxy support (RFC 7231 s4.3.6) (#2990)
60
+
61
+ ### SASL Authentication
5
62
  * kafka.net: Validate SASL/SCRAM iterations (#3026)
6
- * KafkaProtocol: validate network frame size (backport of #3019)
7
- * Clear `_callbacks`/`_errbacks` list when future `is_done` to avoid reference cycles (#2891)
63
+ * SASL: Prefer node hostname to IP address when building mechanisms (#3003)
64
+
65
+ ### Timeouts and Connection Management
66
+ Per-request and per-stage timeouts replace the old single client-wide timeout.
67
+ * KIP-601: support socket_connection_setup_timeout_ms w/ exponential backoff (#3027)
68
+ * kafka.net: Bootstrap if needed for metadata refresh (#2825)
69
+ * kafka.net: Raise UnknownBrokerIdError when connection fails because node_id is not in metadata (#2876)
70
+
71
+ ### Futures and Wakeups
72
+ The `Future` primitive gains `__await__` and a faster slotted implementation; cross-thread wakeups are factored out into a reusable helper.
73
+ * Future.__await__ support (#2811)
74
+ * Future: __slots__ and callback/errback inlining optimization (#2848)
75
+ * Future: clear callbacks/errbacks when done to avoid reference cycles (#2891)
76
+ * WakeupNotifier primitive for cross-thread/task wakeups (#2925, #2933)
77
+
78
+ ### Concurrency and Error Handling
79
+ Defensive checks throughout the kafka.net event loop and transport stack: improved socket I/O error handling, RuntimeErrors on misuse of the IO thread, and lock-based detection of concurrent access.
80
+ * kafka.net.selector: Break scheduled heapq ties when tasks share scheduled_at (#3007)
81
+ * kafka.net.selector: Monitor slow tasks with slow_task_threshold_secs (#2946)
82
+ * kafka.net.selector: Use threading.Lock() to detect concurrent access to poll() (#2945)
83
+ * kafka.net.selector: Track pending tasks to prevent gc before completion (#2950)
84
+ * kafka.net.selector: Support reschedule(when, task); idempotent unschedule (#2939)
85
+ * kafka.net.selector: Raise RuntimeError on concurrent access to net.poll or wakeup() (#2938)
86
+ * kafka.net.selector: Raise RuntimeError on run/call_at/call_soon_threadsafe after closed (#2971)
87
+ * kafka.net.selector: Catch unhandled exceptions in IO thread (#2970)
88
+ * kafka.net.selector: Improve error handling on sock read/write (#2995)
89
+ * kafka.net.selector: Check locks in `_poll_once`; add net.drain() (#2949)
90
+ * kafka.net.transport: Close connection on socket write error (#2973)
91
+
92
+ ## Protocol
93
+
94
+ A new JSON-schema-based dynamic protocol generator now replaces the legacy hand-written protocol classes (moved to `kafka.protocol.old`).
95
+
96
+ ### Dynamic Protocol Classes
97
+ Protocol classes are now generated from the upstream Apache Kafka JSON schemas.
98
+ * Dynamic protocol classes using upstream json schemas (#2727, #2745, #2779, #2782, #2787, #2810, #3037)
99
+ * Add .pyi type annotation stubs for generated protocol classes (#2784)
100
+ * Migrate all internal usage to new protocol classes (#2764, #2765, #2766, #2767, #2768, #2772)
101
+ * Refactor treatment of versioned ApiMessage classes (#2739)
102
+ * Lookup request header -> response class via ResponseClassRegistry (#2730)
103
+ * Manual json schema edits to restore fields dropped in Apache 4.0 (#2738)
104
+
105
+ ### New Types and Messages
106
+ * Add UUID protocol type (#2703)
107
+ * Add UnsignedInt16 type
108
+ * KIP-893: support nullable structs (#2889)
109
+ * Replace kafka.structs BrokerMetadata/PartitionMetadata with MetadataResponse structs (#2794)
110
+ * Add ConsumerProtocol data schemas (#2754)
111
+ * Add StickyAssignorUserData json schema (#2755)
112
+
113
+ ### Performance
114
+ * Protocol encode/decode optimization with inline compile/exec (#2785)
115
+ * Protocol benchmarks and profiling (make bench-protocol) (#2783)
116
+
117
+ ### Protocol Fixes
118
+ * Fix TaggedFields encoding/decoding (#2725, #2745, #2779)
119
+ * Fix VarInt/VarLong encoding (#2706)
120
+ * Fix CompactBytes encoding of struct data (#2782)
121
+ * Fix compiled encode_into for None arrays (#2790)
122
+ * Validate network frame size (#3019)
123
+ * Validate DataContainer version (#2759)
124
+
125
+ ### Helpers and Debugging
126
+ * DataContainer.to_dict() helper (#2758, #2872, #2879)
127
+ * Store in-flight request headers only for protocol parser (#2723)
128
+ * Debug log send/recv bytes from protocol parser (#2707)
129
+ * Adjust protocol debug logging; add KAFKA_PYTHON_PROTOCOL_DEBUG_LOG (#2719)
130
+ * CoordinatorType enum (GROUP/TRANSACTION/SHARE) (#3049)
131
+
132
+ ## Broker Version Check
133
+
134
+ Broker version inference is consolidated into a single `BrokerVersionData` helper that tracks the broker's reported API versions and infers a broker version string. `ApiVersionsRequest` is always sent on connect.
135
+
136
+ ### BrokerVersionData
137
+ * BrokerVersionData: consolidated version checks (#2795)
138
+ * BrokerVersionData: infer up to 4.3 (#2835, #2836, #3032)
139
+ * BrokerVersionData: support request min/max version (#2868)
140
+ * BrokerVersionData: Fix IncompatibleBrokerVersion errors; add __str__ (#2804)
141
+
142
+ ### ApiVersionsRequest
143
+ * Always send ApiVersionsRequest on connect (#2802)
144
+ * Improve ApiVersionsRequest fallbacks (#2803, #2817, #2821)
145
+
146
+ ## Client Bootstrap
147
+
148
+ * Fix bootstrap connection error handling (#2831)
149
+ * ClusterMetadata: bootstrap_brokers(), set_topics/add_topics/metadata_request (#2805, #2792, #2796, #2797)
150
+ * Move bootstrap_brokers fallback from brokers() to least_loaded_node() (#2809)
151
+ * KafkaClient.least_loaded_node: pass bootstrap_fallback=True if needed (#2830)
152
+ * Consumer: add explicit bootstrap() method (#2975)
153
+ * Admin: explicit bootstrap on __init__ (#2864)
154
+ * Manage metadata refresh logic in ClusterMetadata via attached manager (#2920)
155
+ * kafka.cluster: End refresh loop on close(); refresh loop catches KafkaError (#2935, #2936)
156
+ * Respect metadata backoff in KafkaNetClient (#2854)
157
+
158
+ ## Consumer
159
+
160
+ KafkaConsumer drops the dedicated HeartbeatThread in favor of scheduled async tasks on the kafka.net IO thread. Internals have been substantially refactored to migrate from future callbacks to async/await syntax. Feature support added for incremental cooperative rebalancing (KIP-429), rack-aware fetch (KIP-392), and log truncation detection (KIP-320/KIP-595).
161
+
162
+ ### Threading and IO
163
+ All consumer network I/O now flows through the shared kafka.net IO thread; `consumer.poll()` no longer drives the event loop directly.
164
+ * Consumer: use background thread for all network io; drop HeartbeatThread (#2965)
165
+ * Consumer: send all requests from net io thread (#2980)
166
+ * Consumer: simplify poll() with fetcher.fetch_records (#2960)
167
+ * Consumer: sleep in poll() if timeout, no records, and no fetchable partitions (#3039)
168
+ * Consumer: drop poll loop optimizations for pending offset resets and rejoins (#2959)
169
+ * Consumer: `_update_fetch_positions` -> `_refresh_committed_offsets`; dont poll in position() (#2958)
170
+ * Consumer: convert fetcher reset_offsets/send_list_offsets_requests to async def
171
+ * Consumer: use new proto attrs in Fetcher (ListOffsets/Fetch) (#2923)
172
+
173
+ ### Group Membership and Rebalance
174
+ * KIP-429: Incremental Cooperative Rebalance (#2999)
175
+ * KIP-429: Add on_partitions_lost rebalance listener hook (#3016)
176
+ * KIP-559: Bump JoinGroup v7 / SyncGroup v5; verify protocol_type/name (#2998)
177
+ * Rebalance Listener: raise errors, block fetches on revoked, pre-revoke unsubscribed (#3018)
178
+ * Consumer: call RebalanceListener on close (#3020)
179
+ * Preserve member id on IllegalGeneration error (#3017)
180
+
181
+ ### Fetch
182
+ * KIP-320: Detect and handle Log Truncation (#2978)
183
+ * KIP-392: Rack-aware fetch from closest replica (#2986, #2996)
184
+ * KIP-595: Fetch v12 support; check for log truncation and leader updates in response (#3021)
185
+ * KAFKA-7548: Retain fetched data for paused partitions (#2981)
186
+ * KAFKA-9212: Leader Epoch unreliable before Metadata v9 (#2997)
187
+
188
+ ### Offsets and Commits
189
+ * KIP-447: OffsetFetch v7 set require_stable flag if read_committed (#3023)
190
+ * Consumer: handle retriable errors in offsets_for_times (#3022)
191
+ * Consumer: Improve retriable offset fetch error handling (#2977)
192
+ * Consumer: Retain subscription TopicPartitionState when possible (#3001)
193
+ * Consumer: drop max_version clamp on ListOffsetsRequest (#3012)
194
+
195
+ ### Configuration
196
+ * KIP-602: Support client_dns_lookup in Consumer/Producer/Admin config (#3004)
197
+ * Consumer: default request_timeout_ms 30s; use request-specific timeout for JoinGroup (#3011)
198
+
199
+ ### Consumer Fixes
200
+ * Retry metadata request if tracked topics have retriable errors (#2832)
201
+ * Fix KeyError in KafkaConsumer.committed() (#2710)
202
+ * Fix `Fetcher._fetch_offsets_by_times` retry handling (#2833)
203
+
204
+ ## Producer
205
+
206
+ KafkaProducer gains a sticky partitioner (KIP-480), enabled-by-default idempotence (KIP-679), tightened transaction handling, and a faster send/encode path.
207
+
208
+ ### Transactions and Idempotence
209
+ * KIP-360 (pt1): Add transaction manager state and helper methods (#2852)
210
+ * KIP-360 (pt2): Bump producer epoch with InitProducerIdRequest v3 on 2.5+ brokers (#2853)
211
+ * KIP-447: Include group metadata in TxnOffsetCommitRequest (#2984, #2988)
212
+ * KIP-654: Txn Producer aborts with non-fatal TransactionAbortedError (#3010)
213
+ * KAFKA-5793: Tighten up semantics of OutOfOrderSequenceNumber (pt1) (#2843)
214
+ * Enable producer idempotence with max_in_flight_requests_per_connection > 1 (#2841)
215
+ * Producer: Enforce guaranteed message order when idempotence_enabled (#2937)
216
+ * Producer: treat InvalidProducerEpochError as ProducerFencedError (#2885)
217
+ * Producer: Improve transaction manager retriable error handling (#2884)
218
+ * Producer: Use new-style request construction in Txn Manager (#2983)
219
+
220
+ ### Partitioning
221
+ * KIP-480: StickyPartitioner for KafkaProducer (#2982, #2989)
222
+
223
+ ### Batching and Send Path
224
+ Split-and-resend oversized batches instead of failing; avoid redundant validation and buffer copies on hot send-path.
225
+ * KIP-126: Allow KafkaProducer to split and resend oversized batches (#2839)
226
+ * Refactor producer.send / _wait_on_metadata for fast path (#2850)
227
+ * Only ensure_valid_topic_name new topics on send (#2849)
228
+ * Avoid unnecessary bytes/bytearray copies on send (#2845)
229
+ * MemoryRecordsBuilder.build() returns bytearray buffer not bytes copy (#2842)
230
+ * Drop PartitionResponse namedtuple; consolidate response and error handling (#2851)
231
+
232
+ ### Producer Fixes
233
+ * Fixup Sender error class logging (#2828)
234
+
235
+ ## Admin Client
236
+
237
+ Split KafkaAdminClient into focused mixin classes (cluster, topics, configs, groups, ACLs, log dirs, etc), and convert request-sending path to async def methods that run on the kafka.net IO thread. Support for new KIPs using new protocol stack.
238
+
239
+ ### Refactor and Async Migration
240
+ The admin client interface remains sync but wraps a fully-async internal api (does not support asyncio yet). Adds cached coordinator lookups and a mixin structure to separate logical resource groups.
241
+ * Admin: split into functional mixin classes (#2873, #2877, #2882)
242
+ * Admin: convert request paths to async; cache coordinator_ids (#2851, #2862, #2863, #2866, #2867, #2870, #2871, #3050)
243
+ * Admin: refactor `_send_request_to_controller` error handling (#2751)
244
+
245
+ ### Batch Protocol Support
246
+ * KIP-699: FindCoordinatorRequest v4 -- multi-group support (#3025)
247
+ * KIP-709: OffsetFetch v8 -- use batch interface when available (#3024)
248
+
249
+ ### New Cluster and Quorum APIs
250
+ * Admin: describe_metadata_quorum (#2914)
251
+ * Admin: cluster features describe/update (#2908, #3053)
252
+ * Admin: cluster get_broker_version_data / api_versions (#2903)
253
+
254
+ ### Configs
255
+ * Admin: list_config_resources (requires 4.1+) (#2900)
256
+ * Admin: support incremental alter configs (#2901)
257
+ * Admin: Improve alter_configs w/ filters and missing keys (#2899)
258
+
259
+ ### Topics and Partitions
260
+ * KIP-516: Support topic id (uuid) for describe topics (#3031)
261
+ * Admin: re-use config processing for CreateTopicsResponse (#3036)
262
+ * Admin: wait_for_topics() and create_topics() wait_for_metadata option (#2856)
263
+ * Admin: list_partition_offsets (#2894)
264
+ * Admin: Expand partitions api support (#2890)
265
+ * Admin: Cleanup alter_partition_reassignments (#3002)
266
+
267
+ ### Groups
268
+ * Admin: include latest offsets and lag in list_group_offsets; add reset_group_offsets (#2897)
269
+ * Admin: support group state/type filters for list_groups (#2910)
270
+ * Admin: add extended group reset options (#2911)
271
+ * Admin: Dont return MemberToRemove as key in remove_group_members dict result (#2893)
272
+
273
+ ### Transactions
274
+ * Admin: implement KIP-664 hanging-transaction tooling (#3051)
275
+
276
+ ### Log Dirs
277
+ * Admin: alter_log_dirs (#2912)
278
+ * Admin: Fix describe_log_dirs, accept optional topics/brokers (#2881)
279
+
280
+ ### Reliability
281
+ * Admin: retry delete_records / list_partition_offsets on NotLeaderForPartitionError (#2976)
282
+
283
+ ## CLI
284
+
285
+ The CLI adds shared parser config, SASL/SSL connection support across all subcommands, and several new admin subcommands (acls, configs alter, users).
286
+
287
+ ### Common Infrastructure
288
+ * Add kafka-python cli script to wrap admin/consumer/producer (#3034)
289
+ * kafka.cli: common parser args; support sasl/ssl connections (#2887)
290
+ * kafka.cli: common configuration for logging and connect kwargs (#2906)
291
+ * Add --enable-logger/--disable-logger to cli options (#2798)
292
+ * Set default cli log level => CRITICAL (#2760)
293
+
294
+ ### Admin CLI
295
+ * admin cli: acls, users, configs alter (#2888)
296
+ * admin cli: refactor admin group/command parsers; consumer/producer option groups (#2909)
297
+ * admin cli: --id support for describe-topics
298
+ * admin cli: close() after running command
299
+ * admin cli: dont print stacktrace for BrokerResponseError or ValueError (#2895)
300
+ * admin cli: catch AttributeError and print_help() (#2880)
301
+ * admin cli: fix describe_configs (#2875)
302
+
303
+ ### Consumer CLI
304
+ * consumer cli does not require group_id (#3044)
305
+
306
+ ## Compatibility / Misc
307
+
308
+ Small quality-of-life additions to the public API surface.
309
+
310
+ * Support context manager interface for consumer/producer/admin (#2969)
311
+ * Make IncompatibleBrokerVersion a subclass of UnsupportedVersionError (#2924)
312
+ * Add OffsetSpec / IsolationLevel to kafka imports (#2898)
313
+ * Errors: subclasses for RetriableError and InvalidMetadataError (#3041)
314
+ * Helper classes: DefaultSerializer and JsonSerializer (#3046)
315
+
316
+ ## Fixes
317
+
318
+ Codec and Python-3-compatibility fixes that aren't specific to a single client.
319
+
320
+ * Fix zstd multi-frame decompression failure (#2717)
321
+ * Use time.monotonic() instead of time.time() for elapsed time calculations (#2714)
322
+ * Fix deprecated log.warn() -> log.warning()
323
+ * REF: Switch to deque.copy() for Python 3 compatibility (#2712)
324
+
325
+ ## Tests
326
+
327
+ A new in-memory `MockBroker` / `MockTransport` enables deterministic protocol-level tests, and the integration test fixtures have been substantially consolidated.
328
+
329
+ ### MockBroker and Fixtures
330
+ * MockBroker / MockTransport for deterministic protocol tests (#2861, #2902)
331
+ * Organize test files into consumer/ producer/ admin/ directories (#2844)
332
+ * Consolidate consumer integration tests (#2857)
333
+ * Consolidate more pytest fixtures (admin/client) (#2921)
334
+ * Integration fixtures use contextmanager (#2966)
335
+ * Refactor coordinator test fixtures; prefer MockBroker to patched_coord (#2953)
336
+ * Support SSL transports in KafkaFixture (#2806)
337
+ * Simplify interacting with KafkaFixture (client factories, create_topics) (#2808)
338
+ * Use producer/consumer/admin factories in producer_integration tests (#2829)
339
+ * Set api_version for integration tests; fix test_group missing consumers (#2824)
340
+ * Close local fixtures in tests (#2962)
341
+ * Catch exceptions in fixture.open() -> close() (#2907)
342
+ * Create topic on 0.8.2 broker to fix bootstrap (#2896)
343
+
344
+ ### Reliability
345
+ * Reduce timing flakiness in test_group (#3006)
346
+ * Test timeouts: use pytest-timeout method=thread and add faulthandler
347
+
348
+ ## Project Infra
349
+
350
+ * Enable pylint workflow; disable/fix all outstanding errors (#2701)
351
+ * Add coverage step to CI (#2786)
352
+ * CI test matrix updated to python 3.14 / kafka 4.3 (#2836, #3032)
353
+ * Add lint-unicode make target; include in make lint test (#2993)
354
+ * pyproject updates: no more universal wheels; requres py3.8+; fix license files; drop setup.py (#3033)
355
+ * Bump actions/cache from 4 to 5; actions/upload-artifact from 4 to 7 (#2702, #2789)
8
356
 
9
357
  # 2.3.1 (Apr 9, 2026)
10
358
 
@@ -49,6 +397,17 @@ Project Infra
49
397
  * Bump actions/checkout from 5 to 6 (#2694)
50
398
  * NixOS helpers
51
399
 
400
+ # 2.2.19 (Apr 9, 2026)
401
+
402
+ Fixes
403
+ * Fix TaggedFields value encoding; add test coverage (#2725)
404
+ * Fix zstd multi-frame decompression failure (#2717)
405
+ * Fix KeyError in KafkaConsumer.committed() (#2710)
406
+ * Fix VarInt/VarLong encoding; move tests to test/protocol/ (#2706)
407
+ * Fix `Fetcher._fetch_offsets_by_times retry handling` (#2833)
408
+ * Fixes to support integration testing with external KAFKA_URI (#2838)
409
+ * Minor py2 fixes: consumer integration test; done pip install python-snappy
410
+
52
411
  # 2.2.18 (Nov 20, 2025)
53
412
 
54
413
  Fixes
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2015 David Arthur
189
+ Copyright 2026 Dana Powers, David Arthur, and Contributors
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.