kafka-python 2.0.5__tar.gz → 2.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. {kafka_python-2.0.5 → kafka_python-2.1.0}/CHANGES.md +105 -0
  2. {kafka_python-2.0.5 → kafka_python-2.1.0}/PKG-INFO +2 -2
  3. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/admin/client.py +247 -96
  4. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/client_async.py +270 -114
  5. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/cluster.py +31 -10
  6. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/conn.py +401 -441
  7. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/consumer/fetcher.py +449 -177
  8. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/consumer/group.py +85 -129
  9. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/consumer/subscription_state.py +11 -10
  10. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/sticky/sticky_assignor.py +0 -1
  11. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/base.py +172 -134
  12. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/consumer.py +153 -80
  13. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/errors.py +1 -0
  14. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/metric_name.py +1 -1
  15. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/metrics.py +3 -1
  16. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/quota.py +1 -1
  17. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/producer/kafka.py +84 -44
  18. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/producer/record_accumulator.py +9 -7
  19. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/producer/sender.py +13 -48
  20. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/admin.py +115 -97
  21. kafka_python-2.1.0/kafka/protocol/api_versions.py +90 -0
  22. kafka_python-2.1.0/kafka/protocol/broker_api_versions.py +66 -0
  23. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/commit.py +110 -52
  24. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/fetch.py +12 -10
  25. kafka_python-2.1.0/kafka/protocol/find_coordinator.py +64 -0
  26. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/group.py +64 -10
  27. kafka_python-2.0.5/kafka/protocol/offset.py → kafka_python-2.1.0/kafka/protocol/list_offsets.py +29 -29
  28. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/metadata.py +69 -13
  29. kafka_python-2.1.0/kafka/protocol/offset_for_leader_epoch.py +140 -0
  30. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/parser.py +2 -2
  31. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/produce.py +4 -2
  32. kafka_python-2.1.0/kafka/protocol/sasl_authenticate.py +42 -0
  33. kafka_python-2.1.0/kafka/protocol/sasl_handshake.py +39 -0
  34. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/default_records.py +49 -2
  35. kafka_python-2.1.0/kafka/sasl/__init__.py +34 -0
  36. kafka_python-2.1.0/kafka/sasl/abc.py +32 -0
  37. kafka_python-2.1.0/kafka/sasl/gssapi.py +87 -0
  38. kafka_python-2.1.0/kafka/sasl/msk.py +233 -0
  39. kafka_python-2.1.0/kafka/sasl/oauth.py +87 -0
  40. kafka_python-2.1.0/kafka/sasl/plain.py +41 -0
  41. kafka_python-2.1.0/kafka/sasl/scram.py +133 -0
  42. kafka_python-2.1.0/kafka/sasl/sspi.py +111 -0
  43. kafka_python-2.1.0/kafka/socks5_wrapper.py +248 -0
  44. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/structs.py +5 -4
  45. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/util.py +22 -1
  46. kafka_python-2.1.0/kafka/version.py +1 -0
  47. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka_python.egg-info/PKG-INFO +2 -2
  48. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka_python.egg-info/SOURCES.txt +16 -4
  49. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka_python.egg-info/requires.txt +3 -1
  50. {kafka_python-2.0.5 → kafka_python-2.1.0}/pyproject.toml +1 -1
  51. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_admin.py +4 -4
  52. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_admin_integration.py +74 -3
  53. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_client_async.py +24 -28
  54. kafka_python-2.1.0/test/test_cluster.py +134 -0
  55. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_conn.py +49 -8
  56. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_consumer.py +1 -1
  57. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_consumer_group.py +39 -36
  58. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_consumer_integration.py +7 -3
  59. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_coordinator.py +60 -20
  60. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_fetcher.py +120 -71
  61. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_object_conversion.py +2 -2
  62. kafka_python-2.1.0/test/test_producer.py +158 -0
  63. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_protocol.py +4 -6
  64. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_sender.py +7 -9
  65. kafka_python-2.0.5/kafka/oauth/__init__.py +0 -3
  66. kafka_python-2.0.5/kafka/oauth/abstract.py +0 -42
  67. kafka_python-2.0.5/kafka/scram.py +0 -81
  68. kafka_python-2.0.5/kafka/version.py +0 -1
  69. kafka_python-2.0.5/test/test_cluster.py +0 -22
  70. kafka_python-2.0.5/test/test_producer.py +0 -137
  71. {kafka_python-2.0.5 → kafka_python-2.1.0}/AUTHORS.md +0 -0
  72. {kafka_python-2.0.5 → kafka_python-2.1.0}/LICENSE +0 -0
  73. {kafka_python-2.0.5 → kafka_python-2.1.0}/MANIFEST.in +0 -0
  74. {kafka_python-2.0.5 → kafka_python-2.1.0}/README.rst +0 -0
  75. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/__init__.py +0 -0
  76. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/admin/__init__.py +0 -0
  77. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/admin/acl_resource.py +0 -0
  78. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/admin/config_resource.py +0 -0
  79. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/admin/new_partitions.py +0 -0
  80. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/admin/new_topic.py +0 -0
  81. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/codec.py +0 -0
  82. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/consumer/__init__.py +0 -0
  83. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/__init__.py +0 -0
  84. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/__init__.py +0 -0
  85. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/abstract.py +0 -0
  86. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/range.py +0 -0
  87. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/roundrobin.py +0 -0
  88. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/sticky/__init__.py +0 -0
  89. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
  90. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
  91. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/heartbeat.py +0 -0
  92. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/coordinator/protocol.py +0 -0
  93. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/future.py +0 -0
  94. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/__init__.py +0 -0
  95. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/compound_stat.py +0 -0
  96. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/dict_reporter.py +0 -0
  97. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/kafka_metric.py +0 -0
  98. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/measurable.py +0 -0
  99. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/measurable_stat.py +0 -0
  100. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/metric_config.py +0 -0
  101. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/metrics_reporter.py +0 -0
  102. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stat.py +0 -0
  103. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/__init__.py +0 -0
  104. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/avg.py +0 -0
  105. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/count.py +0 -0
  106. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/histogram.py +0 -0
  107. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/max_stat.py +0 -0
  108. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/min_stat.py +0 -0
  109. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/percentile.py +0 -0
  110. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/percentiles.py +0 -0
  111. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/rate.py +0 -0
  112. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/sampled_stat.py +0 -0
  113. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/sensor.py +0 -0
  114. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/metrics/stats/total.py +0 -0
  115. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/partitioner/__init__.py +0 -0
  116. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/partitioner/default.py +0 -0
  117. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/producer/__init__.py +0 -0
  118. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/producer/buffer.py +0 -0
  119. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/producer/future.py +0 -0
  120. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/__init__.py +0 -0
  121. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/abstract.py +0 -0
  122. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/api.py +0 -0
  123. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/frame.py +0 -0
  124. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/message.py +0 -0
  125. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/pickle.py +0 -0
  126. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/struct.py +0 -0
  127. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/protocol/types.py +0 -0
  128. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/__init__.py +0 -0
  129. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/_crc32c.py +0 -0
  130. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/abc.py +0 -0
  131. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/legacy_records.py +0 -0
  132. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/memory_records.py +0 -0
  133. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/record/util.py +0 -0
  134. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/serializer/__init__.py +0 -0
  135. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/serializer/abstract.py +0 -0
  136. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/vendor/__init__.py +0 -0
  137. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/vendor/enum34.py +0 -0
  138. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/vendor/selectors34.py +0 -0
  139. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/vendor/six.py +0 -0
  140. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka/vendor/socketpair.py +0 -0
  141. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka_python.egg-info/dependency_links.txt +0 -0
  142. {kafka_python-2.0.5 → kafka_python-2.1.0}/kafka_python.egg-info/top_level.txt +0 -0
  143. {kafka_python-2.0.5 → kafka_python-2.1.0}/setup.cfg +0 -0
  144. {kafka_python-2.0.5 → kafka_python-2.1.0}/setup.py +0 -0
  145. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_acl_comparisons.py +0 -0
  146. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_api_object_implementation.py +0 -0
  147. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_assignors.py +0 -0
  148. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_codec.py +0 -0
  149. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_metrics.py +0 -0
  150. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_package.py +0 -0
  151. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_partition_movements.py +0 -0
  152. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_partitioner.py +0 -0
  153. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_sasl_integration.py +0 -0
  154. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/test_subscription_state.py +0 -0
  155. {kafka_python-2.0.5 → kafka_python-2.1.0}/test/testutil.py +0 -0
@@ -1,3 +1,108 @@
1
+ # 2.1.0 (Mar 14, 2025)
2
+
3
+ Support Kafka Broker 2.1 API Baseline
4
+ * Add baseline leader_epoch support for ListOffsets v4 / FetchRequest v10 (#2511)
5
+ * Support OffsetFetch v5 / OffsetCommit v6 (2.1 baseline) (#2505)
6
+ * Support 2.1 baseline consumer group apis (#2503)
7
+ * Support FindCoordinatorRequest v2 in consumer and admin client (#2502)
8
+ * Support ListOffsets v3 in consumer (#2501)
9
+ * Support Fetch Request/Response v6 in consumer (#2500)
10
+ * Add support for Metadata Request/Response v7 (#2497)
11
+ * Implement Incremental Fetch Sessions / KIP-227 (#2508)
12
+ * Implement client-side connection throttling / KIP-219 (#2510)
13
+ * Add KafkaClient.api_version(operation) for best available from api_versions (#2495)
14
+
15
+ Consumer
16
+ * Timeout coordinator poll / ensure_coordinator_ready / ensure_active_group (#2526)
17
+ * Add optional timeout_ms kwarg to remaining consumer/coordinator methods (#2544)
18
+ * Check for coordinator.poll failure in KafkaConsumer
19
+ * Only mark coordinator dead if connection_delay > 0 (#2530)
20
+ * Delay group coordinator until after bootstrap (#2539)
21
+ * KAFKA-4160: Ensure rebalance listener not called with coordinator lock (#1438)
22
+ * Call default_offset_commit_callback after `_maybe_auto_commit_offsets_async` (#2546)
23
+ * Remove legacy/v1 consumer message iterator (#2543)
24
+ * Log warning when attempting to list offsets for unknown topic/partition (#2540)
25
+ * Add heartbeat thread id to debug logs on start
26
+ * Add inner_timeout_ms handler to fetcher; add fallback (#2529)
27
+
28
+ Producer
29
+ * KafkaProducer: Flush pending records before close() (#2537)
30
+ * Raise immediate error on producer.send after close (#2542)
31
+ * Limit producer close timeout to 1sec in __del__; use context managers to close in test_producer
32
+ * Use NullLogger in producer atexit cleanup
33
+ * Attempt to fix metadata race condition when partitioning in producer.send (#2523)
34
+ * Remove unused partial KIP-467 implementation (ProduceResponse batch error details) (#2524)
35
+
36
+ AdminClient
37
+ * Implement perform leader election (#2536)
38
+ * Support delete_records (#2535)
39
+
40
+ Networking
41
+ * Call ApiVersionsRequest during connection, prior to Sasl Handshake (#2493)
42
+ * Fake api_versions for old brokers, rename to ApiVersionsRequest, and handle error decoding (#2494)
43
+ * Debug log when skipping api_versions request with pre-configured api_version
44
+ * Only refresh metadata if connection fails all dns records (#2532)
45
+ * Support connections through SOCKS5 proxies (#2531)
46
+ * Fix OverflowError when connection_max_idle_ms is 0 or inf (#2538)
47
+ * socket.setblocking for eventlet/gevent compatibility
48
+ * Support custom per-request timeouts (#2498)
49
+ * Include request_timeout_ms in request debug log
50
+ * Support client.poll with future and timeout_ms
51
+ * mask unused afi var
52
+ * Debug log if check_version connection attempt fails
53
+
54
+ SASL Modules
55
+ * Refactor Sasl authentication with SaslMechanism abstract base class; support SaslAuthenticate (#2515)
56
+ * Add SSPI (Kerberos for Windows) authentication mechanism (#2521)
57
+ * Support AWS_MSK_IAM authentication (#2519)
58
+ * Cleanup sasl mechanism configuration checks; fix gssapi bugs; add sasl_kerberos_name config (#2520)
59
+ * Move kafka.oauth.AbstractTokenProvider -> kafka.sasl.oauth.AbstractTokenProvider (#2525)
60
+
61
+ Testing
62
+ * Bump default python to 3.13 in CI tests (#2541)
63
+ * Update pytest log_format: use logger instead of filename; add thread id
64
+ * Improve test_consumer_group::test_group logging before group stabilized (#2534)
65
+ * Limit test duration to 5mins w/ pytest-timeout
66
+ * Fix external kafka/zk fixtures for testing (#2533)
67
+ * Disable zookeeper admin server to avoid port conflicts
68
+ * Set default pytest log level to debug
69
+ * test_group: shorter timeout, more logging, more sleep
70
+ * Cache servers/dist in github actions workflow (#2527)
71
+ * Remove tox.ini; update testing docs
72
+ * Use thread-specific client_id in test_group
73
+ * Fix subprocess log warning; specify timeout_ms kwarg in consumer.poll tests
74
+ * Only set KAFKA_JVM_PERFORMANCE_OPTS in makefile if unset; add note re: 2.0-2.3 broker testing
75
+ * Add kafka command to test.fixtures; raise FileNotFoundError if version not installed
76
+
77
+ Documentation
78
+ * Improve ClusterMetadata docs re: node_id/broker_id str/int types
79
+ * Document api_version_auto_timeout_ms default; override in group tests
80
+
81
+ Fixes
82
+ * Signal close to metrics expire_loop
83
+ * Add kafka.util timeout_ms_fn
84
+ * fixup TopicAuthorizationFailedError construction
85
+ * Fix lint issues via ruff check (#2522)
86
+ * Make the "mock" dependency optional (only used in Python < 3.3). (#2518)
87
+
88
+ # 2.0.6 (Mar 4, 2025)
89
+
90
+ Networking
91
+ * Improve error handling in `client._maybe_connect` (#2504)
92
+ * Client connection / `maybe_refresh_metadata` changes (#2507)
93
+ * Improve too-large timeout handling in client poll
94
+ * Default `client.check_version` timeout to `api_version_auto_timeout_ms` (#2496)
95
+
96
+ Fixes
97
+ * Decode and skip transactional control records in consumer (#2499)
98
+ * try / except in consumer coordinator `__del__`
99
+
100
+ Testing
101
+ * test_conn fixup for py2
102
+
103
+ Project Maintenance
104
+ * Add 2.0 branch for backports
105
+
1
106
  # 2.0.5 (Feb 25, 2025)
2
107
 
3
108
  Networking
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: kafka-python
3
- Version: 2.0.5
3
+ Version: 2.1.0
4
4
  Summary: Pure Python client for Apache Kafka
5
5
  Author-email: Dana Powers <dana.powers@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/dpkp/kafka-python
@@ -35,7 +35,7 @@ Provides-Extra: zstd
35
35
  Requires-Dist: zstandard; extra == "zstd"
36
36
  Provides-Extra: testing
37
37
  Requires-Dist: pytest; extra == "testing"
38
- Requires-Dist: mock; extra == "testing"
38
+ Requires-Dist: mock; python_version < "3.3" and extra == "testing"
39
39
  Requires-Dist: pytest-mock; extra == "testing"
40
40
 
41
41
  Kafka Python client