kafka-python 3.0.6__tar.gz → 3.0.8__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 (408) hide show
  1. {kafka_python-3.0.6 → kafka_python-3.0.8}/CHANGES.md +11 -1
  2. {kafka_python-3.0.6 → kafka_python-3.0.8}/PKG-INFO +1 -1
  3. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/manager.py +4 -24
  4. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/transport.py +51 -8
  5. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/kafka.py +1 -1
  6. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/sender.py +3 -2
  7. kafka_python-3.0.8/kafka/version.py +1 -0
  8. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka_python.egg-info/PKG-INFO +1 -1
  9. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_transport.py +144 -2
  10. kafka_python-3.0.6/kafka/version.py +0 -1
  11. {kafka_python-3.0.6 → kafka_python-3.0.8}/AUTHORS.md +0 -0
  12. {kafka_python-3.0.6 → kafka_python-3.0.8}/LICENSE +0 -0
  13. {kafka_python-3.0.6 → kafka_python-3.0.8}/MANIFEST.in +0 -0
  14. {kafka_python-3.0.6 → kafka_python-3.0.8}/README.rst +0 -0
  15. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/__init__.py +0 -0
  16. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/__main__.py +0 -0
  17. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/__init__.py +0 -0
  18. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/__main__.py +0 -0
  19. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_acls.py +0 -0
  20. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_cluster.py +0 -0
  21. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_configs.py +0 -0
  22. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_groups.py +0 -0
  23. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_partitions.py +0 -0
  24. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_topics.py +0 -0
  25. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_transactions.py +0 -0
  26. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/_users.py +0 -0
  27. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/admin/client.py +0 -0
  28. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/__init__.py +0 -0
  29. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/consumer_performance.py +0 -0
  30. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/load_example.py +0 -0
  31. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/producer_encode_path.py +0 -0
  32. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/producer_performance.py +0 -0
  33. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/profile_protocol.py +0 -0
  34. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/protocol_old_vs_new.py +0 -0
  35. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/record_batch_compose.py +0 -0
  36. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/record_batch_read.py +0 -0
  37. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/benchmarks/varint_speed.py +0 -0
  38. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/__init__.py +0 -0
  39. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/__init__.py +0 -0
  40. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/acls/__init__.py +0 -0
  41. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/acls/common.py +0 -0
  42. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/acls/create.py +0 -0
  43. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/acls/delete.py +0 -0
  44. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/acls/describe.py +0 -0
  45. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/cluster/__init__.py +0 -0
  46. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/cluster/describe.py +0 -0
  47. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/cluster/describe_quorum.py +0 -0
  48. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/cluster/features.py +0 -0
  49. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/cluster/log_dirs.py +0 -0
  50. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/cluster/versions.py +0 -0
  51. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/configs/__init__.py +0 -0
  52. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/configs/alter.py +0 -0
  53. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/configs/common.py +0 -0
  54. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/configs/describe.py +0 -0
  55. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/configs/list.py +0 -0
  56. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/configs/reset.py +0 -0
  57. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/__init__.py +0 -0
  58. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/alter_offsets.py +0 -0
  59. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/delete.py +0 -0
  60. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/delete_offsets.py +0 -0
  61. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/describe.py +0 -0
  62. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/list.py +0 -0
  63. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/list_offsets.py +0 -0
  64. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/remove_members.py +0 -0
  65. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/groups/reset_offsets.py +0 -0
  66. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/__init__.py +0 -0
  67. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/alter_reassignments.py +0 -0
  68. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/create.py +0 -0
  69. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/delete_records.py +0 -0
  70. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/describe.py +0 -0
  71. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/elect_leaders.py +0 -0
  72. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/list_offsets.py +0 -0
  73. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/partitions/list_reassignments.py +0 -0
  74. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/topics/__init__.py +0 -0
  75. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/topics/create.py +0 -0
  76. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/topics/delete.py +0 -0
  77. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/topics/describe.py +0 -0
  78. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/topics/list.py +0 -0
  79. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/transactions/__init__.py +0 -0
  80. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/transactions/abort.py +0 -0
  81. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/transactions/describe.py +0 -0
  82. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/transactions/describe_producers.py +0 -0
  83. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/transactions/find_hanging.py +0 -0
  84. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/transactions/list.py +0 -0
  85. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/users/__init__.py +0 -0
  86. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/users/alter_user_scram_credentials.py +0 -0
  87. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/admin/users/describe_user_scram_credentials.py +0 -0
  88. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/common.py +0 -0
  89. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/consumer/__init__.py +0 -0
  90. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cli/producer/__init__.py +0 -0
  91. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/cluster.py +0 -0
  92. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/codec.py +0 -0
  93. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/consumer/__init__.py +0 -0
  94. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/consumer/__main__.py +0 -0
  95. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/consumer/fetcher.py +0 -0
  96. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/consumer/group.py +0 -0
  97. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/consumer/subscription_state.py +0 -0
  98. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/__init__.py +0 -0
  99. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/__init__.py +0 -0
  100. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/abstract.py +0 -0
  101. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/cooperative_sticky.py +0 -0
  102. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/range.py +0 -0
  103. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/roundrobin.py +0 -0
  104. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +0 -0
  105. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/__init__.py +0 -0
  106. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
  107. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
  108. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/sticky_assignor.py +0 -0
  109. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/user_data.py +0 -0
  110. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/base.py +0 -0
  111. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/consumer.py +0 -0
  112. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/heartbeat.py +0 -0
  113. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/coordinator/subscription.py +0 -0
  114. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/errors.py +0 -0
  115. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/future.py +0 -0
  116. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/__init__.py +0 -0
  117. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/compound_stat.py +0 -0
  118. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/dict_reporter.py +0 -0
  119. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/kafka_metric.py +0 -0
  120. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/measurable.py +0 -0
  121. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/measurable_stat.py +0 -0
  122. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/metric_config.py +0 -0
  123. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/metric_name.py +0 -0
  124. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/metrics.py +0 -0
  125. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/metrics_reporter.py +0 -0
  126. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/quota.py +0 -0
  127. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stat.py +0 -0
  128. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/__init__.py +0 -0
  129. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/avg.py +0 -0
  130. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/count.py +0 -0
  131. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/histogram.py +0 -0
  132. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/max_stat.py +0 -0
  133. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/min_stat.py +0 -0
  134. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/percentile.py +0 -0
  135. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/percentiles.py +0 -0
  136. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/rate.py +0 -0
  137. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/sampled_stat.py +0 -0
  138. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/sensor.py +0 -0
  139. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/metrics/stats/total.py +0 -0
  140. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/__init__.py +0 -0
  141. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/compat.py +0 -0
  142. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/connection.py +0 -0
  143. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/http_connect.py +0 -0
  144. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/inet.py +0 -0
  145. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/metrics.py +0 -0
  146. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/__init__.py +0 -0
  147. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/abc.py +0 -0
  148. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/gssapi.py +0 -0
  149. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/msk.py +0 -0
  150. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/oauth.py +0 -0
  151. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/plain.py +0 -0
  152. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/scram.py +0 -0
  153. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/sasl/sspi.py +0 -0
  154. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/selector.py +0 -0
  155. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/socks5.py +0 -0
  156. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/net/wakeup_notifier.py +0 -0
  157. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/partitioner/__init__.py +0 -0
  158. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/partitioner/abc.py +0 -0
  159. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/partitioner/default.py +0 -0
  160. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/partitioner/sticky.py +0 -0
  161. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/__init__.py +0 -0
  162. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/__main__.py +0 -0
  163. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/future.py +0 -0
  164. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/producer_batch.py +0 -0
  165. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/record_accumulator.py +0 -0
  166. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/producer/transaction_manager.py +0 -0
  167. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/__init__.py +0 -0
  168. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/__init__.py +0 -0
  169. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/acl.py +0 -0
  170. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/acl.pyi +0 -0
  171. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/client_quotas.py +0 -0
  172. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/client_quotas.pyi +0 -0
  173. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/cluster.py +0 -0
  174. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/cluster.pyi +0 -0
  175. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/configs.py +0 -0
  176. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/configs.pyi +0 -0
  177. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/groups.py +0 -0
  178. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/groups.pyi +0 -0
  179. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/topics.py +0 -0
  180. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/topics.pyi +0 -0
  181. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/transactions.py +0 -0
  182. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/transactions.pyi +0 -0
  183. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/users.py +0 -0
  184. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/admin/users.pyi +0 -0
  185. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/api_data.py +0 -0
  186. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/api_header.py +0 -0
  187. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/api_key.py +0 -0
  188. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/api_message.py +0 -0
  189. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/broker_version_data.py +0 -0
  190. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/__init__.py +0 -0
  191. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/fetch.py +0 -0
  192. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/fetch.pyi +0 -0
  193. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/group.py +0 -0
  194. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/group.pyi +0 -0
  195. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/metadata.py +0 -0
  196. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/metadata.pyi +0 -0
  197. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/offsets.py +0 -0
  198. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/consumer/offsets.pyi +0 -0
  199. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/data_container.py +0 -0
  200. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/frame.py +0 -0
  201. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/generate_stubs.py +0 -0
  202. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/__init__.py +0 -0
  203. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/api_versions.py +0 -0
  204. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/api_versions.pyi +0 -0
  205. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/find_coordinator.py +0 -0
  206. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/find_coordinator.pyi +0 -0
  207. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/metadata.py +0 -0
  208. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/metadata/metadata.pyi +0 -0
  209. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/__init__.py +0 -0
  210. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/abstract.py +0 -0
  211. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/add_offsets_to_txn.py +0 -0
  212. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/add_partitions_to_txn.py +0 -0
  213. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/admin.py +0 -0
  214. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/api.py +0 -0
  215. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/api_versions.py +0 -0
  216. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/commit.py +0 -0
  217. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/consumer_protocol.py +0 -0
  218. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/end_txn.py +0 -0
  219. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/fetch.py +0 -0
  220. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/find_coordinator.py +0 -0
  221. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/group.py +0 -0
  222. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/init_producer_id.py +0 -0
  223. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/list_offsets.py +0 -0
  224. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/metadata.py +0 -0
  225. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/offset_for_leader_epoch.py +0 -0
  226. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/produce.py +0 -0
  227. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/sasl_authenticate.py +0 -0
  228. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/sasl_handshake.py +0 -0
  229. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/struct.py +0 -0
  230. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/txn_offset_commit.py +0 -0
  231. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/old/types.py +0 -0
  232. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/parser.py +0 -0
  233. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/producer/__init__.py +0 -0
  234. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/producer/produce.py +0 -0
  235. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/producer/produce.pyi +0 -0
  236. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/producer/transaction.py +0 -0
  237. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/producer/transaction.pyi +0 -0
  238. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/sasl.py +0 -0
  239. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/sasl.pyi +0 -0
  240. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/__init__.py +0 -0
  241. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/__init__.py +0 -0
  242. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/array.py +0 -0
  243. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/base.py +0 -0
  244. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/__init__.py +0 -0
  245. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/encode_buffer.py +0 -0
  246. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/tagged_fields.py +0 -0
  247. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/types.py +0 -0
  248. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codegen.py +0 -0
  249. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/simple.py +0 -0
  250. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/struct.py +0 -0
  251. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/struct_array.py +0 -0
  252. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/load_json.py +0 -0
  253. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +0 -0
  254. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +0 -0
  255. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +0 -0
  256. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +0 -0
  257. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +0 -0
  258. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +0 -0
  259. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterConfigsRequest.json +0 -0
  260. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterConfigsResponse.json +0 -0
  261. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +0 -0
  262. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +0 -0
  263. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +0 -0
  264. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +0 -0
  265. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +0 -0
  266. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +0 -0
  267. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ApiVersionsRequest.json +0 -0
  268. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ApiVersionsResponse.json +0 -0
  269. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +0 -0
  270. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +0 -0
  271. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateAclsRequest.json +0 -0
  272. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateAclsResponse.json +0 -0
  273. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreatePartitionsRequest.json +0 -0
  274. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreatePartitionsResponse.json +0 -0
  275. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateTopicsRequest.json +0 -0
  276. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateTopicsResponse.json +0 -0
  277. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteAclsRequest.json +0 -0
  278. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteAclsResponse.json +0 -0
  279. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteGroupsRequest.json +0 -0
  280. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteGroupsResponse.json +0 -0
  281. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteRecordsRequest.json +0 -0
  282. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteRecordsResponse.json +0 -0
  283. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteTopicsRequest.json +0 -0
  284. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteTopicsResponse.json +0 -0
  285. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeAclsRequest.json +0 -0
  286. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeAclsResponse.json +0 -0
  287. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +0 -0
  288. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +0 -0
  289. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClusterRequest.json +0 -0
  290. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClusterResponse.json +0 -0
  291. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeConfigsRequest.json +0 -0
  292. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeConfigsResponse.json +0 -0
  293. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeGroupsRequest.json +0 -0
  294. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeGroupsResponse.json +0 -0
  295. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +0 -0
  296. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +0 -0
  297. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeProducersRequest.json +0 -0
  298. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeProducersResponse.json +0 -0
  299. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeQuorumRequest.json +0 -0
  300. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeQuorumResponse.json +0 -0
  301. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +0 -0
  302. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +0 -0
  303. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +0 -0
  304. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +0 -0
  305. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +0 -0
  306. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +0 -0
  307. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ElectLeadersRequest.json +0 -0
  308. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ElectLeadersResponse.json +0 -0
  309. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/EndTxnRequest.json +0 -0
  310. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/EndTxnResponse.json +0 -0
  311. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FetchRequest.json +0 -0
  312. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FetchResponse.json +0 -0
  313. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FindCoordinatorRequest.json +0 -0
  314. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FindCoordinatorResponse.json +0 -0
  315. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/HeartbeatRequest.json +0 -0
  316. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/HeartbeatResponse.json +0 -0
  317. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +0 -0
  318. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +0 -0
  319. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/InitProducerIdRequest.json +0 -0
  320. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/InitProducerIdResponse.json +0 -0
  321. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/JoinGroupRequest.json +0 -0
  322. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/JoinGroupResponse.json +0 -0
  323. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/LeaveGroupRequest.json +0 -0
  324. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/LeaveGroupResponse.json +0 -0
  325. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +0 -0
  326. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +0 -0
  327. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListGroupsRequest.json +0 -0
  328. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListGroupsResponse.json +0 -0
  329. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListOffsetsRequest.json +0 -0
  330. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListOffsetsResponse.json +0 -0
  331. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +0 -0
  332. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +0 -0
  333. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListTransactionsRequest.json +0 -0
  334. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListTransactionsResponse.json +0 -0
  335. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/MetadataRequest.json +0 -0
  336. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/MetadataResponse.json +0 -0
  337. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetCommitRequest.json +0 -0
  338. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetCommitResponse.json +0 -0
  339. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetDeleteRequest.json +0 -0
  340. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetDeleteResponse.json +0 -0
  341. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetFetchRequest.json +0 -0
  342. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetFetchResponse.json +0 -0
  343. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +0 -0
  344. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +0 -0
  345. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ProduceRequest.json +0 -0
  346. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ProduceResponse.json +0 -0
  347. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/RequestHeader.json +0 -0
  348. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ResponseHeader.json +0 -0
  349. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +0 -0
  350. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +0 -0
  351. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslHandshakeRequest.json +0 -0
  352. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslHandshakeResponse.json +0 -0
  353. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SyncGroupRequest.json +0 -0
  354. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SyncGroupResponse.json +0 -0
  355. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +0 -0
  356. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +0 -0
  357. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +0 -0
  358. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +0 -0
  359. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +0 -0
  360. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +0 -0
  361. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/__init__.py +0 -0
  362. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/__init__.py +0 -0
  363. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/_crc32c.py +0 -0
  364. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/abc.py +0 -0
  365. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/default_records.py +0 -0
  366. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/legacy_records.py +0 -0
  367. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/memory_records.py +0 -0
  368. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/record/util.py +0 -0
  369. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/serializer/__init__.py +0 -0
  370. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/serializer/abstract.py +0 -0
  371. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/serializer/default.py +0 -0
  372. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/serializer/json.py +0 -0
  373. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/serializer/wrapper.py +0 -0
  374. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/structs.py +0 -0
  375. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/util.py +0 -0
  376. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka/vendor/__init__.py +0 -0
  377. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka_python.egg-info/SOURCES.txt +0 -0
  378. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka_python.egg-info/dependency_links.txt +0 -0
  379. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka_python.egg-info/entry_points.txt +0 -0
  380. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka_python.egg-info/requires.txt +0 -0
  381. {kafka_python-3.0.6 → kafka_python-3.0.8}/kafka_python.egg-info/top_level.txt +0 -0
  382. {kafka_python-3.0.6 → kafka_python-3.0.8}/pyproject.toml +0 -0
  383. {kafka_python-3.0.6 → kafka_python-3.0.8}/setup.cfg +0 -0
  384. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/__init__.py +0 -0
  385. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/conftest.py +0 -0
  386. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/fixtures.py +0 -0
  387. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/test_admin_integration.py +0 -0
  388. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/test_consumer_integration.py +0 -0
  389. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/test_producer_integration.py +0 -0
  390. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/test_sasl_integration.py +0 -0
  391. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/integration/test_ssl_integration.py +0 -0
  392. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/__init__.py +0 -0
  393. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_compat.py +0 -0
  394. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_connection.py +0 -0
  395. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_http_connect.py +0 -0
  396. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_inet.py +0 -0
  397. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_manager.py +0 -0
  398. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_sasl_reauthentication.py +0 -0
  399. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_selector.py +0 -0
  400. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/net/test_wakeup_notifier.py +0 -0
  401. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_cluster.py +0 -0
  402. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_codec.py +0 -0
  403. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_future.py +0 -0
  404. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_metrics.py +0 -0
  405. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_mock_broker.py +0 -0
  406. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_package.py +0 -0
  407. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/test_util.py +0 -0
  408. {kafka_python-3.0.6 → kafka_python-3.0.8}/test/testutil.py +0 -0
@@ -1,9 +1,19 @@
1
+ # 3.0.8 (Jul 9, 2026)
2
+
3
+ ### Fixes
4
+ * transport: Fix TLS SNI when `ssl_check_hostname=False` (#3114)
5
+
6
+ # 3.0.7 (Jun 28, 2026)
7
+
8
+ ### Fixes
9
+ * transport: cancel pending io coroutines on close() (#3109)
10
+ * producer: fix stalled shutdown when brokers unreachable (#3108)
11
+
1
12
  # 3.0.6 (Jun 25, 2026)
2
13
 
3
14
  ### Fixes
4
15
  * consumer: track current leader epoch in addition to record epoch (#3107)
5
16
 
6
-
7
17
  ### CI
8
18
  * Also `wait_for_topics` on <0.10 test fixtures (#3105)
9
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 3.0.6
3
+ Version: 3.0.8
4
4
  Summary: Pure Python client for Apache Kafka
5
5
  Author-email: Dana Powers <dana.powers@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -3,7 +3,6 @@ import logging
3
3
  import inspect
4
4
  import random
5
5
  import socket
6
- import ssl
7
6
  import time
8
7
 
9
8
  from .inet import create_connection
@@ -205,35 +204,16 @@ class KafkaConnectionManager:
205
204
  def ssl_enabled(self):
206
205
  return self.config['security_protocol'] in ('SSL', 'SASL_SSL')
207
206
 
208
- def _build_ssl_context(self):
209
- if self.config['ssl_context'] is not None:
210
- return self.config['ssl_context']
211
- ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
212
- ctx.minimum_version = ssl.TLSVersion.TLSv1_2
213
- ctx.check_hostname = self.config['ssl_check_hostname']
214
- if self.config['ssl_cafile']:
215
- ctx.load_verify_locations(self.config['ssl_cafile'])
216
- else:
217
- ctx.load_default_certs()
218
- if self.config['ssl_certfile']:
219
- ctx.load_cert_chain(
220
- certfile=self.config['ssl_certfile'],
221
- keyfile=self.config['ssl_keyfile'],
222
- password=self.config['ssl_password'],
223
- )
224
- if self.config['ssl_crlfile']:
225
- ctx.load_verify_locations(crl=self.config['ssl_crlfile'])
226
- ctx.verify_flags |= ssl.VERIFY_CRL_CHECK_LEAF
227
- return ctx
228
-
229
207
  async def _build_transport(self, node, timeout_at=None):
230
208
  sock = await create_connection(self._net, node.host, node.port,
231
209
  self.config['socket_options'],
232
210
  proxy_url=self.config['proxy_url'],
233
211
  timeout_at=timeout_at)
234
212
  if self.ssl_enabled:
235
- transport = KafkaSSLTransport(self._net, sock, self._build_ssl_context(),
236
- host=node.host, ssl_check_hostname=self.config['ssl_check_hostname'])
213
+ ssl_configs = {key: value
214
+ for key, value in self.config.items()
215
+ if key.startswith('ssl_')}
216
+ transport = KafkaSSLTransport(self._net, sock, host=node.host, **ssl_configs)
237
217
  else:
238
218
  transport = KafkaTCPTransport(self._net, sock, host=node.host)
239
219
 
@@ -1,4 +1,5 @@
1
1
  from collections import deque
2
+ import copy
2
3
  import logging
3
4
  import selectors
4
5
  import socket
@@ -19,6 +20,8 @@ class KafkaTCPTransport:
19
20
  self._closed = False
20
21
  self._write_buffer = deque()
21
22
  self._writing = False
23
+ self._read_task = None
24
+ self._write_task = None
22
25
  self._protocol = None
23
26
  self._read = False
24
27
  self._write = True
@@ -80,7 +83,7 @@ class KafkaTCPTransport:
80
83
  data_received() method.
81
84
  """
82
85
  if not self._read:
83
- self._net.call_soon(self._read_from_sock)
86
+ self._read_task = self._net.call_soon(self._read_from_sock)
84
87
  self._read = True
85
88
  log.debug('%s: Resumed reading', self)
86
89
 
@@ -173,7 +176,7 @@ class KafkaTCPTransport:
173
176
  self._write_buffer.append(data)
174
177
  if not self._writing:
175
178
  self._writing = True
176
- self._net.call_soon(self._write_to_sock)
179
+ self._write_task = self._net.call_soon(self._write_to_sock)
177
180
 
178
181
  def writelines(self, list_of_data):
179
182
  """Write a list (or any iterable) of data bytes to the transport."""
@@ -182,7 +185,7 @@ class KafkaTCPTransport:
182
185
  self._write_buffer.extend(list_of_data)
183
186
  if not self._writing:
184
187
  self._writing = True
185
- self._net.call_soon(self._write_to_sock)
188
+ self._write_task = self._net.call_soon(self._write_to_sock)
186
189
 
187
190
  async def _write_to_sock(self):
188
191
  try:
@@ -272,6 +275,10 @@ class KafkaTCPTransport:
272
275
  except OSError:
273
276
  pass
274
277
  sock.close()
278
+ for task in (self._read_task, self._write_task):
279
+ if task is not None:
280
+ self._net.cancel(task)
281
+ self._read_task = self._write_task = None
275
282
  proto = self._protocol
276
283
  self._protocol = None
277
284
  if proto is not None:
@@ -365,13 +372,49 @@ class KafkaTCPTransport:
365
372
 
366
373
 
367
374
  class KafkaSSLTransport(KafkaTCPTransport):
368
- def __init__(self, net, sock, ssl_context, host=None, ssl_check_hostname=False):
369
- self._ssl_context = ssl_context
370
- server_hostname = host if ssl_check_hostname else None
371
- sock = ssl_context.wrap_socket(
372
- sock, server_hostname=server_hostname, do_handshake_on_connect=False)
375
+ DEFAULT_CONFIG = {
376
+ 'ssl_context': None,
377
+ 'ssl_check_hostname': True,
378
+ 'ssl_cafile': None,
379
+ 'ssl_certfile': None,
380
+ 'ssl_keyfile': None,
381
+ 'ssl_password': None,
382
+ 'ssl_crlfile': None,
383
+ }
384
+ def __init__(self, net, sock, host=None, **configs):
385
+ self.ssl_config = copy.copy(self.DEFAULT_CONFIG)
386
+ for key in self.ssl_config:
387
+ if key in configs:
388
+ self.ssl_config[key] = configs[key]
389
+ self._ssl_context = self._build_ssl_context(self.ssl_config)
390
+ server_hostname = host.rstrip('.') if host is not None else None
391
+ sock = self._ssl_context.wrap_socket(
392
+ sock, server_hostname=server_hostname,
393
+ do_handshake_on_connect=False)
373
394
  super().__init__(net, sock, host=host)
374
395
 
396
+ @staticmethod
397
+ def _build_ssl_context(config):
398
+ if config['ssl_context'] is not None:
399
+ return config['ssl_context']
400
+ ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
401
+ ctx.minimum_version = ssl.TLSVersion.TLSv1_2
402
+ ctx.check_hostname = config['ssl_check_hostname']
403
+ if config['ssl_cafile']:
404
+ ctx.load_verify_locations(config['ssl_cafile'])
405
+ else:
406
+ ctx.load_default_certs()
407
+ if config['ssl_certfile']:
408
+ ctx.load_cert_chain(
409
+ certfile=config['ssl_certfile'],
410
+ keyfile=config['ssl_keyfile'],
411
+ password=config['ssl_password'],
412
+ )
413
+ if config['ssl_crlfile']:
414
+ ctx.load_verify_locations(crl=config['ssl_crlfile'])
415
+ ctx.verify_flags |= ssl.VERIFY_CRL_CHECK_LEAF
416
+ return ctx
417
+
375
418
  async def handshake(self):
376
419
  while True:
377
420
  try:
@@ -646,7 +646,7 @@ class KafkaProducer:
646
646
  _self = weakref.proxy(self)
647
647
  def wrapper():
648
648
  try:
649
- _self.close(timeout=0, null_logger=True)
649
+ _self.close(timeout=1, null_logger=True)
650
650
  except (ReferenceError, AttributeError):
651
651
  pass
652
652
  return wrapper
@@ -310,7 +310,7 @@ class Sender(threading.Thread):
310
310
  return False
311
311
 
312
312
  log.debug("%s: Sending transactional request %s", str(self), next_request_handler.request)
313
- while not self._force_close:
313
+ while self._running and not self._force_close:
314
314
  target_node = None
315
315
  try:
316
316
  if next_request_handler.needs_coordinator():
@@ -325,7 +325,8 @@ class Sender(threading.Thread):
325
325
  else:
326
326
  target_node = self._client.least_loaded_node()
327
327
  if target_node is None:
328
- self._client.poll(future=self._metadata.request_update())
328
+ self._client.poll(timeout_ms=self.config['retry_backoff_ms'],
329
+ future=self._metadata.request_update())
329
330
  elif not self._client.await_ready(target_node, timeout_ms=self.config['request_timeout_ms']):
330
331
  continue
331
332
 
@@ -0,0 +1 @@
1
+ __version__ = '3.0.8'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 3.0.6
3
+ Version: 3.0.8
4
4
  Summary: Pure Python client for Apache Kafka
5
5
  Author-email: Dana Powers <dana.powers@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -6,8 +6,8 @@ import pytest
6
6
 
7
7
  import kafka.errors as Errors
8
8
  from kafka.future import Future
9
- from kafka.net.selector import NetworkSelector
10
- from kafka.net.transport import KafkaTCPTransport
9
+ from kafka.net.selector import NetworkSelector, TaskState
10
+ from kafka.net.transport import KafkaSSLTransport, KafkaTCPTransport
11
11
 
12
12
 
13
13
  @pytest.fixture
@@ -365,3 +365,145 @@ class TestKafkaTCPTransport:
365
365
  t._closed = True
366
366
  s = str(t)
367
367
  assert 'closed' in s
368
+
369
+
370
+ class TestKafkaSSLTransport:
371
+ """Regression tests for https://github.com/dpkp/kafka-python/issues/3113:
372
+ TLS SNI (server_hostname) must be sent regardless of ssl_check_hostname so
373
+ that SNI-routed clusters (nginx/Istio/Strimzi ingress) remain reachable when
374
+ hostname verification is disabled.
375
+ """
376
+
377
+ def _make_ssl_sock(self):
378
+ # wrap_socket returns a wrapped socket; give it the peer/name accessors
379
+ # that KafkaTCPTransport.__init__ pokes at via str()/repr helpers.
380
+ wrapped = _make_mock_sock()
381
+ sock = _make_mock_sock()
382
+ ctx = MagicMock()
383
+ ctx.wrap_socket.return_value = wrapped
384
+ return sock, ctx, wrapped
385
+
386
+ def test_sni_sent_when_check_hostname_true(self, net):
387
+ sock, ctx, _ = self._make_ssl_sock()
388
+ KafkaSSLTransport(net, sock, host='broker.example.com',
389
+ ssl_context=ctx, ssl_check_hostname=True)
390
+ _, kwargs = ctx.wrap_socket.call_args
391
+ assert kwargs['server_hostname'] == 'broker.example.com'
392
+
393
+ def test_sni_sent_when_check_hostname_false(self, net):
394
+ # The bug: SNI used to be suppressed when verification was disabled.
395
+ sock, ctx, _ = self._make_ssl_sock()
396
+ KafkaSSLTransport(net, sock, host='broker.example.com',
397
+ ssl_context=ctx, ssl_check_hostname=False)
398
+ _, kwargs = ctx.wrap_socket.call_args
399
+ assert kwargs['server_hostname'] == 'broker.example.com'
400
+
401
+ def test_sni_strips_trailing_dot(self, net):
402
+ # A trailing dot is a valid FQDN but illegal in the SNI extension.
403
+ sock, ctx, _ = self._make_ssl_sock()
404
+ KafkaSSLTransport(net, sock, host='broker.example.com.',
405
+ ssl_context=ctx, ssl_check_hostname=False)
406
+ _, kwargs = ctx.wrap_socket.call_args
407
+ assert kwargs['server_hostname'] == 'broker.example.com'
408
+
409
+ def test_sni_none_when_host_missing(self, net):
410
+ sock, ctx, _ = self._make_ssl_sock()
411
+ KafkaSSLTransport(net, sock, host=None, ssl_context=ctx)
412
+ _, kwargs = ctx.wrap_socket.call_args
413
+ assert kwargs['server_hostname'] is None
414
+
415
+ def test_handshake_not_done_on_connect(self, net):
416
+ sock, ctx, _ = self._make_ssl_sock()
417
+ KafkaSSLTransport(net, sock, host='broker.example.com', ssl_context=ctx)
418
+ _, kwargs = ctx.wrap_socket.call_args
419
+ assert kwargs['do_handshake_on_connect'] is False
420
+
421
+ def test_provided_ssl_context_is_used(self, net):
422
+ sock, ctx, wrapped = self._make_ssl_sock()
423
+ t = KafkaSSLTransport(net, sock, host='broker.example.com',
424
+ ssl_context=ctx)
425
+ assert t._ssl_context is ctx
426
+ assert t._sock is wrapped
427
+
428
+ def test_config_defaults_and_overrides(self, net):
429
+ sock, ctx, _ = self._make_ssl_sock()
430
+ t = KafkaSSLTransport(net, sock, host='h', ssl_context=ctx,
431
+ ssl_check_hostname=False)
432
+ # Explicitly-passed ssl_* keys land in ssl_config...
433
+ assert t.ssl_config['ssl_check_hostname'] is False
434
+ assert t.ssl_config['ssl_context'] is ctx
435
+ # ...unspecified keys keep their defaults.
436
+ assert t.ssl_config['ssl_cafile'] is None
437
+ assert t.ssl_config['ssl_check_hostname'] is not None
438
+
439
+
440
+ class TestBuildSSLContext:
441
+ def test_returns_provided_context(self):
442
+ ctx = MagicMock()
443
+ config = dict(KafkaSSLTransport.DEFAULT_CONFIG, ssl_context=ctx)
444
+ assert KafkaSSLTransport._build_ssl_context(config) is ctx
445
+
446
+ def test_check_hostname_propagates_to_context(self):
447
+ config = dict(KafkaSSLTransport.DEFAULT_CONFIG, ssl_check_hostname=False)
448
+ ctx = KafkaSSLTransport._build_ssl_context(config)
449
+ assert ctx.check_hostname is False
450
+
451
+ def test_check_hostname_true_requires_verification(self):
452
+ config = dict(KafkaSSLTransport.DEFAULT_CONFIG, ssl_check_hostname=True)
453
+ ctx = KafkaSSLTransport._build_ssl_context(config)
454
+ assert ctx.check_hostname is True
455
+
456
+
457
+ class TestTransportWaiterCleanup:
458
+ """Regression: a locally-initiated close()/abort() must reclaim the socket
459
+ read/write coroutine tasks parked in the event loop.
460
+
461
+ These tests fail until ``KafkaTCPTransport._close`` cancels its read/write
462
+ waiter tasks (``net.cancel(task)``); the selector's existing WAIT_IO branch
463
+ in ``cancel()`` then drives the io_guard finalizer and discards the task.
464
+ """
465
+
466
+ def test_local_close_reclaims_parked_reader(self, net, socketpair):
467
+ rsock, wsock = socketpair
468
+ t = KafkaTCPTransport(net, wsock)
469
+ t.set_protocol(MagicMock())
470
+ baseline = len(net._pending_tasks)
471
+
472
+ t.resume_reading()
473
+ net.drain() # reader runs and parks in WAIT_IO on wait_read(wsock)
474
+ parked = [task for task in net._pending_tasks if task.state is TaskState.WAIT_IO]
475
+ assert len(parked) == 1, 'reader did not park as expected'
476
+ assert len(net._pending_tasks) == baseline + 1
477
+
478
+ # Empty write buffer -> close() tears the socket down synchronously. The
479
+ # peer (rsock) never sent anything, so there is no I/O event to wake the
480
+ # parked reader; close() itself must reclaim it.
481
+ t.close()
482
+ net.drain() # running the loop must not be needed -- and must not help either
483
+
484
+ assert t._sock is None
485
+ assert len(net._pending_tasks) == baseline, (
486
+ 'parked reader leaked into _pending_tasks after local close')
487
+ assert not any(task.state is TaskState.WAIT_IO for task in net._pending_tasks)
488
+
489
+ def test_local_close_reclaims_parked_writer(self, net, socketpair):
490
+ rsock, wsock = socketpair
491
+ t = KafkaTCPTransport(net, wsock)
492
+ t.set_protocol(MagicMock())
493
+ baseline = len(net._pending_tasks)
494
+
495
+ # write() schedules _write_to_sock, whose loop parks on the first
496
+ # wait_write before the bytes leave the buffer. drain() steps it once
497
+ # to the park and returns (no _ready left), leaving it suspended.
498
+ t.write(b'data')
499
+ net.drain()
500
+ parked = [task for task in net._pending_tasks if task.state is TaskState.WAIT_IO]
501
+ assert len(parked) == 1, 'writer did not park as expected'
502
+
503
+ t.abort(error=Errors.KafkaConnectionError('boom'))
504
+ net.drain()
505
+
506
+ assert t._sock is None
507
+ assert len(net._pending_tasks) == baseline, (
508
+ 'parked writer leaked into _pending_tasks after abort')
509
+ assert not any(task.state is TaskState.WAIT_IO for task in net._pending_tasks)
@@ -1 +0,0 @@
1
- __version__ = '3.0.6'
File without changes
File without changes
File without changes
File without changes