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