kafka-python 3.0.5__tar.gz → 3.0.7__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.5 → kafka_python-3.0.7}/CHANGES.md +14 -0
  2. {kafka_python-3.0.5 → kafka_python-3.0.7}/PKG-INFO +1 -1
  3. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/subscription_state.py +39 -5
  4. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/transport.py +9 -3
  5. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/kafka.py +1 -1
  6. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/sender.py +3 -2
  7. kafka_python-3.0.7/kafka/version.py +1 -0
  8. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/PKG-INFO +1 -1
  9. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/fixtures.py +20 -12
  10. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_transport.py +56 -1
  11. kafka_python-3.0.5/kafka/version.py +0 -1
  12. {kafka_python-3.0.5 → kafka_python-3.0.7}/AUTHORS.md +0 -0
  13. {kafka_python-3.0.5 → kafka_python-3.0.7}/LICENSE +0 -0
  14. {kafka_python-3.0.5 → kafka_python-3.0.7}/MANIFEST.in +0 -0
  15. {kafka_python-3.0.5 → kafka_python-3.0.7}/README.rst +0 -0
  16. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/__init__.py +0 -0
  17. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/__main__.py +0 -0
  18. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/__init__.py +0 -0
  19. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/__main__.py +0 -0
  20. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_acls.py +0 -0
  21. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_cluster.py +0 -0
  22. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_configs.py +0 -0
  23. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_groups.py +0 -0
  24. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_partitions.py +0 -0
  25. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_topics.py +0 -0
  26. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_transactions.py +0 -0
  27. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_users.py +0 -0
  28. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/client.py +0 -0
  29. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/__init__.py +0 -0
  30. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/consumer_performance.py +0 -0
  31. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/load_example.py +0 -0
  32. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/producer_encode_path.py +0 -0
  33. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/producer_performance.py +0 -0
  34. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/profile_protocol.py +0 -0
  35. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/protocol_old_vs_new.py +0 -0
  36. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/record_batch_compose.py +0 -0
  37. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/record_batch_read.py +0 -0
  38. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/varint_speed.py +0 -0
  39. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/__init__.py +0 -0
  40. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/__init__.py +0 -0
  41. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/__init__.py +0 -0
  42. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/common.py +0 -0
  43. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/create.py +0 -0
  44. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/delete.py +0 -0
  45. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/describe.py +0 -0
  46. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/__init__.py +0 -0
  47. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/describe.py +0 -0
  48. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/describe_quorum.py +0 -0
  49. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/features.py +0 -0
  50. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/log_dirs.py +0 -0
  51. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/versions.py +0 -0
  52. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/__init__.py +0 -0
  53. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/alter.py +0 -0
  54. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/common.py +0 -0
  55. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/describe.py +0 -0
  56. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/list.py +0 -0
  57. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/reset.py +0 -0
  58. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/__init__.py +0 -0
  59. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/alter_offsets.py +0 -0
  60. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/delete.py +0 -0
  61. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/delete_offsets.py +0 -0
  62. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/describe.py +0 -0
  63. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/list.py +0 -0
  64. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/list_offsets.py +0 -0
  65. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/remove_members.py +0 -0
  66. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/reset_offsets.py +0 -0
  67. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/__init__.py +0 -0
  68. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/alter_reassignments.py +0 -0
  69. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/create.py +0 -0
  70. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/delete_records.py +0 -0
  71. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/describe.py +0 -0
  72. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/elect_leaders.py +0 -0
  73. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/list_offsets.py +0 -0
  74. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/list_reassignments.py +0 -0
  75. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/__init__.py +0 -0
  76. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/create.py +0 -0
  77. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/delete.py +0 -0
  78. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/describe.py +0 -0
  79. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/list.py +0 -0
  80. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/__init__.py +0 -0
  81. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/abort.py +0 -0
  82. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/describe.py +0 -0
  83. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/describe_producers.py +0 -0
  84. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/find_hanging.py +0 -0
  85. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/list.py +0 -0
  86. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/__init__.py +0 -0
  87. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/alter_user_scram_credentials.py +0 -0
  88. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/describe_user_scram_credentials.py +0 -0
  89. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/common.py +0 -0
  90. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/consumer/__init__.py +0 -0
  91. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/producer/__init__.py +0 -0
  92. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cluster.py +0 -0
  93. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/codec.py +0 -0
  94. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/__init__.py +0 -0
  95. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/__main__.py +0 -0
  96. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/fetcher.py +0 -0
  97. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/group.py +0 -0
  98. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/__init__.py +0 -0
  99. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/__init__.py +0 -0
  100. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/abstract.py +0 -0
  101. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/cooperative_sticky.py +0 -0
  102. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/range.py +0 -0
  103. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/roundrobin.py +0 -0
  104. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +0 -0
  105. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/__init__.py +0 -0
  106. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
  107. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
  108. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/sticky_assignor.py +0 -0
  109. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/user_data.py +0 -0
  110. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/base.py +0 -0
  111. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/consumer.py +0 -0
  112. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/heartbeat.py +0 -0
  113. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/subscription.py +0 -0
  114. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/errors.py +0 -0
  115. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/future.py +0 -0
  116. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/__init__.py +0 -0
  117. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/compound_stat.py +0 -0
  118. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/dict_reporter.py +0 -0
  119. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/kafka_metric.py +0 -0
  120. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/measurable.py +0 -0
  121. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/measurable_stat.py +0 -0
  122. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metric_config.py +0 -0
  123. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metric_name.py +0 -0
  124. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metrics.py +0 -0
  125. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metrics_reporter.py +0 -0
  126. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/quota.py +0 -0
  127. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stat.py +0 -0
  128. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/__init__.py +0 -0
  129. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/avg.py +0 -0
  130. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/count.py +0 -0
  131. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/histogram.py +0 -0
  132. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/max_stat.py +0 -0
  133. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/min_stat.py +0 -0
  134. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/percentile.py +0 -0
  135. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/percentiles.py +0 -0
  136. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/rate.py +0 -0
  137. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/sampled_stat.py +0 -0
  138. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/sensor.py +0 -0
  139. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/total.py +0 -0
  140. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/__init__.py +0 -0
  141. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/compat.py +0 -0
  142. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/connection.py +0 -0
  143. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/http_connect.py +0 -0
  144. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/inet.py +0 -0
  145. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/manager.py +0 -0
  146. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/metrics.py +0 -0
  147. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/__init__.py +0 -0
  148. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/abc.py +0 -0
  149. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/gssapi.py +0 -0
  150. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/msk.py +0 -0
  151. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/oauth.py +0 -0
  152. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/plain.py +0 -0
  153. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/scram.py +0 -0
  154. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/sspi.py +0 -0
  155. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/selector.py +0 -0
  156. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/socks5.py +0 -0
  157. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/wakeup_notifier.py +0 -0
  158. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/__init__.py +0 -0
  159. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/abc.py +0 -0
  160. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/default.py +0 -0
  161. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/sticky.py +0 -0
  162. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/__init__.py +0 -0
  163. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/__main__.py +0 -0
  164. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/future.py +0 -0
  165. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/producer_batch.py +0 -0
  166. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/record_accumulator.py +0 -0
  167. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/transaction_manager.py +0 -0
  168. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/__init__.py +0 -0
  169. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/__init__.py +0 -0
  170. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/acl.py +0 -0
  171. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/acl.pyi +0 -0
  172. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/client_quotas.py +0 -0
  173. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/client_quotas.pyi +0 -0
  174. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/cluster.py +0 -0
  175. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/cluster.pyi +0 -0
  176. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/configs.py +0 -0
  177. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/configs.pyi +0 -0
  178. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/groups.py +0 -0
  179. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/groups.pyi +0 -0
  180. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/topics.py +0 -0
  181. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/topics.pyi +0 -0
  182. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/transactions.py +0 -0
  183. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/transactions.pyi +0 -0
  184. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/users.py +0 -0
  185. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/users.pyi +0 -0
  186. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_data.py +0 -0
  187. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_header.py +0 -0
  188. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_key.py +0 -0
  189. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_message.py +0 -0
  190. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/broker_version_data.py +0 -0
  191. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/__init__.py +0 -0
  192. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/fetch.py +0 -0
  193. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/fetch.pyi +0 -0
  194. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/group.py +0 -0
  195. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/group.pyi +0 -0
  196. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/metadata.py +0 -0
  197. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/metadata.pyi +0 -0
  198. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/offsets.py +0 -0
  199. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/offsets.pyi +0 -0
  200. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/data_container.py +0 -0
  201. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/frame.py +0 -0
  202. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/generate_stubs.py +0 -0
  203. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/__init__.py +0 -0
  204. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/api_versions.py +0 -0
  205. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/api_versions.pyi +0 -0
  206. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/find_coordinator.py +0 -0
  207. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/find_coordinator.pyi +0 -0
  208. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/metadata.py +0 -0
  209. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/metadata.pyi +0 -0
  210. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/__init__.py +0 -0
  211. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/abstract.py +0 -0
  212. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/add_offsets_to_txn.py +0 -0
  213. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/add_partitions_to_txn.py +0 -0
  214. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/admin.py +0 -0
  215. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/api.py +0 -0
  216. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/api_versions.py +0 -0
  217. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/commit.py +0 -0
  218. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/consumer_protocol.py +0 -0
  219. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/end_txn.py +0 -0
  220. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/fetch.py +0 -0
  221. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/find_coordinator.py +0 -0
  222. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/group.py +0 -0
  223. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/init_producer_id.py +0 -0
  224. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/list_offsets.py +0 -0
  225. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/metadata.py +0 -0
  226. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/offset_for_leader_epoch.py +0 -0
  227. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/produce.py +0 -0
  228. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/sasl_authenticate.py +0 -0
  229. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/sasl_handshake.py +0 -0
  230. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/struct.py +0 -0
  231. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/txn_offset_commit.py +0 -0
  232. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/types.py +0 -0
  233. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/parser.py +0 -0
  234. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/__init__.py +0 -0
  235. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/produce.py +0 -0
  236. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/produce.pyi +0 -0
  237. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/transaction.py +0 -0
  238. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/transaction.pyi +0 -0
  239. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/sasl.py +0 -0
  240. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/sasl.pyi +0 -0
  241. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/__init__.py +0 -0
  242. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/__init__.py +0 -0
  243. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/array.py +0 -0
  244. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/base.py +0 -0
  245. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/__init__.py +0 -0
  246. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/encode_buffer.py +0 -0
  247. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/tagged_fields.py +0 -0
  248. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/types.py +0 -0
  249. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codegen.py +0 -0
  250. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/simple.py +0 -0
  251. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/struct.py +0 -0
  252. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/struct_array.py +0 -0
  253. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/load_json.py +0 -0
  254. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +0 -0
  255. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +0 -0
  256. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +0 -0
  257. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +0 -0
  258. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +0 -0
  259. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +0 -0
  260. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterConfigsRequest.json +0 -0
  261. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterConfigsResponse.json +0 -0
  262. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +0 -0
  263. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +0 -0
  264. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +0 -0
  265. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +0 -0
  266. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +0 -0
  267. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +0 -0
  268. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ApiVersionsRequest.json +0 -0
  269. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ApiVersionsResponse.json +0 -0
  270. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +0 -0
  271. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +0 -0
  272. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateAclsRequest.json +0 -0
  273. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateAclsResponse.json +0 -0
  274. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreatePartitionsRequest.json +0 -0
  275. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreatePartitionsResponse.json +0 -0
  276. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateTopicsRequest.json +0 -0
  277. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateTopicsResponse.json +0 -0
  278. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteAclsRequest.json +0 -0
  279. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteAclsResponse.json +0 -0
  280. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteGroupsRequest.json +0 -0
  281. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteGroupsResponse.json +0 -0
  282. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteRecordsRequest.json +0 -0
  283. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteRecordsResponse.json +0 -0
  284. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteTopicsRequest.json +0 -0
  285. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteTopicsResponse.json +0 -0
  286. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeAclsRequest.json +0 -0
  287. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeAclsResponse.json +0 -0
  288. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +0 -0
  289. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +0 -0
  290. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClusterRequest.json +0 -0
  291. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClusterResponse.json +0 -0
  292. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeConfigsRequest.json +0 -0
  293. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeConfigsResponse.json +0 -0
  294. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeGroupsRequest.json +0 -0
  295. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeGroupsResponse.json +0 -0
  296. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +0 -0
  297. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +0 -0
  298. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeProducersRequest.json +0 -0
  299. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeProducersResponse.json +0 -0
  300. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeQuorumRequest.json +0 -0
  301. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeQuorumResponse.json +0 -0
  302. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +0 -0
  303. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +0 -0
  304. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +0 -0
  305. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +0 -0
  306. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +0 -0
  307. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +0 -0
  308. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ElectLeadersRequest.json +0 -0
  309. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ElectLeadersResponse.json +0 -0
  310. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/EndTxnRequest.json +0 -0
  311. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/EndTxnResponse.json +0 -0
  312. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FetchRequest.json +0 -0
  313. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FetchResponse.json +0 -0
  314. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FindCoordinatorRequest.json +0 -0
  315. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FindCoordinatorResponse.json +0 -0
  316. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/HeartbeatRequest.json +0 -0
  317. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/HeartbeatResponse.json +0 -0
  318. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +0 -0
  319. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +0 -0
  320. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/InitProducerIdRequest.json +0 -0
  321. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/InitProducerIdResponse.json +0 -0
  322. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/JoinGroupRequest.json +0 -0
  323. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/JoinGroupResponse.json +0 -0
  324. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/LeaveGroupRequest.json +0 -0
  325. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/LeaveGroupResponse.json +0 -0
  326. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +0 -0
  327. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +0 -0
  328. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListGroupsRequest.json +0 -0
  329. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListGroupsResponse.json +0 -0
  330. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListOffsetsRequest.json +0 -0
  331. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListOffsetsResponse.json +0 -0
  332. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +0 -0
  333. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +0 -0
  334. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListTransactionsRequest.json +0 -0
  335. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListTransactionsResponse.json +0 -0
  336. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/MetadataRequest.json +0 -0
  337. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/MetadataResponse.json +0 -0
  338. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetCommitRequest.json +0 -0
  339. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetCommitResponse.json +0 -0
  340. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetDeleteRequest.json +0 -0
  341. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetDeleteResponse.json +0 -0
  342. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetFetchRequest.json +0 -0
  343. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetFetchResponse.json +0 -0
  344. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +0 -0
  345. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +0 -0
  346. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ProduceRequest.json +0 -0
  347. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ProduceResponse.json +0 -0
  348. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/RequestHeader.json +0 -0
  349. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ResponseHeader.json +0 -0
  350. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +0 -0
  351. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +0 -0
  352. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslHandshakeRequest.json +0 -0
  353. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslHandshakeResponse.json +0 -0
  354. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SyncGroupRequest.json +0 -0
  355. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SyncGroupResponse.json +0 -0
  356. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +0 -0
  357. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +0 -0
  358. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +0 -0
  359. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +0 -0
  360. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +0 -0
  361. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +0 -0
  362. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/__init__.py +0 -0
  363. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/__init__.py +0 -0
  364. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/_crc32c.py +0 -0
  365. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/abc.py +0 -0
  366. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/default_records.py +0 -0
  367. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/legacy_records.py +0 -0
  368. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/memory_records.py +0 -0
  369. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/util.py +0 -0
  370. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/__init__.py +0 -0
  371. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/abstract.py +0 -0
  372. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/default.py +0 -0
  373. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/json.py +0 -0
  374. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/wrapper.py +0 -0
  375. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/structs.py +0 -0
  376. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/util.py +0 -0
  377. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/vendor/__init__.py +0 -0
  378. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/SOURCES.txt +0 -0
  379. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/dependency_links.txt +0 -0
  380. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/entry_points.txt +0 -0
  381. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/requires.txt +0 -0
  382. {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/top_level.txt +0 -0
  383. {kafka_python-3.0.5 → kafka_python-3.0.7}/pyproject.toml +0 -0
  384. {kafka_python-3.0.5 → kafka_python-3.0.7}/setup.cfg +0 -0
  385. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/__init__.py +0 -0
  386. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/conftest.py +0 -0
  387. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_admin_integration.py +0 -0
  388. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_consumer_integration.py +0 -0
  389. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_producer_integration.py +0 -0
  390. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_sasl_integration.py +0 -0
  391. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_ssl_integration.py +0 -0
  392. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/__init__.py +0 -0
  393. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_compat.py +0 -0
  394. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_connection.py +0 -0
  395. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_http_connect.py +0 -0
  396. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_inet.py +0 -0
  397. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_manager.py +0 -0
  398. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_sasl_reauthentication.py +0 -0
  399. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_selector.py +0 -0
  400. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_wakeup_notifier.py +0 -0
  401. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_cluster.py +0 -0
  402. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_codec.py +0 -0
  403. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_future.py +0 -0
  404. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_metrics.py +0 -0
  405. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_mock_broker.py +0 -0
  406. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_package.py +0 -0
  407. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_util.py +0 -0
  408. {kafka_python-3.0.5 → kafka_python-3.0.7}/test/testutil.py +0 -0
@@ -1,3 +1,17 @@
1
+ # 3.0.7 (Jun 28, 2026)
2
+
3
+ ### Fixes
4
+ * transport: cancel pending io coroutines on close() (#3109)
5
+ * producer: fix stalled shutdown when brokers unreachable (#3108)
6
+
7
+ # 3.0.6 (Jun 25, 2026)
8
+
9
+ ### Fixes
10
+ * consumer: track current leader epoch in addition to record epoch (#3107)
11
+
12
+ ### CI
13
+ * Also `wait_for_topics` on <0.10 test fixtures (#3105)
14
+
1
15
  # 3.0.5 (Jun 24, 2026)
2
16
 
3
17
  ### Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 3.0.5
3
+ Version: 3.0.7
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
@@ -564,6 +564,18 @@ class TopicPartitionState:
564
564
  # until OffsetForLeaderEpoch confirms the position is consistent with
565
565
  # the current leader's log; mutually exclusive with awaiting_reset.
566
566
  self._awaiting_validation = False
567
+ # Highest cluster leader epoch this position has already been reconciled
568
+ # against (a completed validation, or adoption of a position whose
569
+ # record epoch is unknown). This is deliberately distinct from the
570
+ # position's *record* epoch (``OffsetAndMetadata.leader_epoch``, which
571
+ # is sent as last_fetched_epoch for KIP-595 divergence detection): a
572
+ # leader election bumps the cluster epoch without changing the epoch of
573
+ # the record we're positioned on, and OffsetForLeaderEpoch reports the
574
+ # epoch of the requested (older) point, so the record epoch alone can't
575
+ # tell us whether we've validated against the current leader. Tracking
576
+ # it separately is what stops poll() from re-validating forever and
577
+ # stalling the consumer. See #3106.
578
+ self._current_leader_epoch = -1
567
579
  # KIP-392: preferred read replica chosen by the broker (rack-aware).
568
580
  # ``_preferred_read_replica_expiration`` is a monotonic deadline; after
569
581
  # it passes we fall back to the leader and re-learn. Cleared on
@@ -597,6 +609,7 @@ class TopicPartitionState:
597
609
  self._position = None
598
610
  self.next_allowed_retry_time = None
599
611
  self._awaiting_validation = False
612
+ self._current_leader_epoch = -1
600
613
  self.clear_preferred_read_replica()
601
614
 
602
615
  def is_reset_allowed(self):
@@ -625,6 +638,11 @@ class TopicPartitionState:
625
638
  self.drop_pending_record_batch = True
626
639
  self.next_allowed_retry_time = None
627
640
  self._awaiting_validation = False
641
+ # A freshly-seeked position has not been reconciled against any leader;
642
+ # force the next maybe_validate_position to validate it against the
643
+ # current leader (the prior position's validation says nothing about
644
+ # this offset).
645
+ self._current_leader_epoch = -1
628
646
  self.clear_preferred_read_replica()
629
647
 
630
648
  def pause(self):
@@ -686,7 +704,8 @@ class TopicPartitionState:
686
704
  return self._awaiting_validation
687
705
 
688
706
  def maybe_validate_position(self, current_leader_epoch):
689
- """Mark for validation if current leader has advanced beyond our position's epoch.
707
+ """Mark for validation if the current leader has advanced beyond the
708
+ leader epoch this position was last reconciled against.
690
709
 
691
710
  Returns True if the partition is now awaiting validation.
692
711
  """
@@ -696,11 +715,26 @@ class TopicPartitionState:
696
715
  return False
697
716
  if current_leader_epoch is None or current_leader_epoch < 0:
698
717
  return False
699
- # Positions without a known epoch (legacy data, post-seek to bare offset)
700
- # can't be validated; treat as already-fetchable.
701
- if self._position.leader_epoch < 0:
718
+ # Have we already reconciled this position against this leader epoch (or
719
+ # a newer one)? The floor is the max of:
720
+ # - the record epoch of the position itself: a record we actually
721
+ # fetched at this offset proves the position is valid through its
722
+ # epoch (so a position fetched under the current leader needs no
723
+ # validation), and
724
+ # - the leader epoch a completed validation reconciled us against,
725
+ # which can exceed the record epoch because OffsetForLeaderEpoch
726
+ # reports the epoch of the requested (older) point, not the current
727
+ # leader's. Without this second term the position is re-marked every
728
+ # poll and the partition never becomes fetchable again (#3106).
729
+ reconciled_epoch = max(self._current_leader_epoch, self._position.leader_epoch)
730
+ if current_leader_epoch <= reconciled_epoch:
702
731
  return False
703
- if self._position.leader_epoch >= current_leader_epoch:
732
+ # We are now tracking this leader epoch regardless of whether the
733
+ # position itself carries a record epoch we can validate against.
734
+ self._current_leader_epoch = current_leader_epoch
735
+ # Positions without a known record epoch (legacy data, post-seek to bare
736
+ # offset) can't be validated; treat as already-fetchable.
737
+ if self._position.leader_epoch < 0:
704
738
  return False
705
739
  self.clear_preferred_read_replica()
706
740
  self._awaiting_validation = True
@@ -19,6 +19,8 @@ class KafkaTCPTransport:
19
19
  self._closed = False
20
20
  self._write_buffer = deque()
21
21
  self._writing = False
22
+ self._read_task = None
23
+ self._write_task = None
22
24
  self._protocol = None
23
25
  self._read = False
24
26
  self._write = True
@@ -80,7 +82,7 @@ class KafkaTCPTransport:
80
82
  data_received() method.
81
83
  """
82
84
  if not self._read:
83
- self._net.call_soon(self._read_from_sock)
85
+ self._read_task = self._net.call_soon(self._read_from_sock)
84
86
  self._read = True
85
87
  log.debug('%s: Resumed reading', self)
86
88
 
@@ -173,7 +175,7 @@ class KafkaTCPTransport:
173
175
  self._write_buffer.append(data)
174
176
  if not self._writing:
175
177
  self._writing = True
176
- self._net.call_soon(self._write_to_sock)
178
+ self._write_task = self._net.call_soon(self._write_to_sock)
177
179
 
178
180
  def writelines(self, list_of_data):
179
181
  """Write a list (or any iterable) of data bytes to the transport."""
@@ -182,7 +184,7 @@ class KafkaTCPTransport:
182
184
  self._write_buffer.extend(list_of_data)
183
185
  if not self._writing:
184
186
  self._writing = True
185
- self._net.call_soon(self._write_to_sock)
187
+ self._write_task = self._net.call_soon(self._write_to_sock)
186
188
 
187
189
  async def _write_to_sock(self):
188
190
  try:
@@ -272,6 +274,10 @@ class KafkaTCPTransport:
272
274
  except OSError:
273
275
  pass
274
276
  sock.close()
277
+ for task in (self._read_task, self._write_task):
278
+ if task is not None:
279
+ self._net.cancel(task)
280
+ self._read_task = self._write_task = None
275
281
  proto = self._protocol
276
282
  self._protocol = None
277
283
  if proto is not None:
@@ -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.7'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 3.0.5
3
+ Version: 3.0.7
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
@@ -34,21 +34,29 @@ def create_topics(broker, topic_names, num_partitions=None, replication_factor=N
34
34
  for topic_name in topic_names:
35
35
  # TODO: verify kafka-topics.sh support for early 0.8 brokers
36
36
  broker._create_topic_via_cli(topic_name, num_partitions, replication_factor)
37
+ _wait_for_topics(broker, topic_names)
37
38
 
38
39
 
39
40
  def _create_topics_via_admin(broker, topic_names, num_partitions, replication_factor):
40
- from kafka.admin import NewTopic
41
- params = broker._enrich_client_params({}, client_id='topic_creator')
42
- admin = KafkaAdminClient(**params)
43
- try:
44
- topics = [NewTopic(name, num_partitions, replication_factor) for name in topic_names]
45
- admin.create_topics(topics, wait_for_metadata=True)
46
- except InvalidReplicationFactorError:
47
- time.sleep(0.5)
48
- topics = [NewTopic(name, num_partitions, replication_factor) for name in topic_names]
49
- admin.create_topics(topics, wait_for_metadata=True)
50
- finally:
51
- admin.close()
41
+ params = broker._enrich_client_params({'api_version': env_kafka_version(), 'client_id': 'topic_creator'})
42
+ with KafkaAdminClient(**params) as admin:
43
+ try:
44
+ topics = {name: {'num_partitions': num_partitions, 'replication_factor': replication_factor}
45
+ for name in topic_names}
46
+ admin.create_topics(topics, wait_for_metadata=True)
47
+ except InvalidReplicationFactorError:
48
+ # wait and try again
49
+ # in CI the brokers sometimes take a while to find themselves
50
+ time.sleep(0.5)
51
+ topics = {name: {'num_partitions': num_partitions, 'replication_factor': replication_factor}
52
+ for name in topic_names}
53
+ admin.create_topics(topics, wait_for_metadata=True)
54
+
55
+
56
+ def _wait_for_topics(broker, topics):
57
+ params = broker._enrich_client_params({'api_version': env_kafka_version(), 'client_id': 'topic_creator'})
58
+ with KafkaAdminClient(**params) as admin:
59
+ admin.wait_for_topics(topics)
52
60
 
53
61
 
54
62
  def client_params(broker, client_id='client', **overrides):
@@ -6,7 +6,7 @@ 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
9
+ from kafka.net.selector import NetworkSelector, TaskState
10
10
  from kafka.net.transport import KafkaTCPTransport
11
11
 
12
12
 
@@ -365,3 +365,58 @@ class TestKafkaTCPTransport:
365
365
  t._closed = True
366
366
  s = str(t)
367
367
  assert 'closed' in s
368
+
369
+
370
+ class TestTransportWaiterCleanup:
371
+ """Regression: a locally-initiated close()/abort() must reclaim the socket
372
+ read/write coroutine tasks parked in the event loop.
373
+
374
+ These tests fail until ``KafkaTCPTransport._close`` cancels its read/write
375
+ waiter tasks (``net.cancel(task)``); the selector's existing WAIT_IO branch
376
+ in ``cancel()`` then drives the io_guard finalizer and discards the task.
377
+ """
378
+
379
+ def test_local_close_reclaims_parked_reader(self, net, socketpair):
380
+ rsock, wsock = socketpair
381
+ t = KafkaTCPTransport(net, wsock)
382
+ t.set_protocol(MagicMock())
383
+ baseline = len(net._pending_tasks)
384
+
385
+ t.resume_reading()
386
+ net.drain() # reader runs and parks in WAIT_IO on wait_read(wsock)
387
+ parked = [task for task in net._pending_tasks if task.state is TaskState.WAIT_IO]
388
+ assert len(parked) == 1, 'reader did not park as expected'
389
+ assert len(net._pending_tasks) == baseline + 1
390
+
391
+ # Empty write buffer -> close() tears the socket down synchronously. The
392
+ # peer (rsock) never sent anything, so there is no I/O event to wake the
393
+ # parked reader; close() itself must reclaim it.
394
+ t.close()
395
+ net.drain() # running the loop must not be needed -- and must not help either
396
+
397
+ assert t._sock is None
398
+ assert len(net._pending_tasks) == baseline, (
399
+ 'parked reader leaked into _pending_tasks after local close')
400
+ assert not any(task.state is TaskState.WAIT_IO for task in net._pending_tasks)
401
+
402
+ def test_local_close_reclaims_parked_writer(self, net, socketpair):
403
+ rsock, wsock = socketpair
404
+ t = KafkaTCPTransport(net, wsock)
405
+ t.set_protocol(MagicMock())
406
+ baseline = len(net._pending_tasks)
407
+
408
+ # write() schedules _write_to_sock, whose loop parks on the first
409
+ # wait_write before the bytes leave the buffer. drain() steps it once
410
+ # to the park and returns (no _ready left), leaving it suspended.
411
+ t.write(b'data')
412
+ net.drain()
413
+ parked = [task for task in net._pending_tasks if task.state is TaskState.WAIT_IO]
414
+ assert len(parked) == 1, 'writer did not park as expected'
415
+
416
+ t.abort(error=Errors.KafkaConnectionError('boom'))
417
+ net.drain()
418
+
419
+ assert t._sock is None
420
+ assert len(net._pending_tasks) == baseline, (
421
+ 'parked writer leaked into _pending_tasks after abort')
422
+ assert not any(task.state is TaskState.WAIT_IO for task in net._pending_tasks)
@@ -1 +0,0 @@
1
- __version__ = '3.0.5'
File without changes
File without changes
File without changes
File without changes