kafka-python 3.0.7__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.
- {kafka_python-3.0.7 → kafka_python-3.0.8}/CHANGES.md +5 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/PKG-INFO +1 -1
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/manager.py +4 -24
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/transport.py +42 -5
- kafka_python-3.0.8/kafka/version.py +1 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka_python.egg-info/PKG-INFO +1 -1
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_transport.py +88 -1
- kafka_python-3.0.7/kafka/version.py +0 -1
- {kafka_python-3.0.7 → kafka_python-3.0.8}/AUTHORS.md +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/LICENSE +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/MANIFEST.in +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/README.rst +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/__main__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/__main__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_acls.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_cluster.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_configs.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_groups.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_partitions.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_topics.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_transactions.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/_users.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/admin/client.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/consumer_performance.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/load_example.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/producer_encode_path.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/producer_performance.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/profile_protocol.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/protocol_old_vs_new.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/record_batch_compose.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/record_batch_read.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/benchmarks/varint_speed.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/acls/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/acls/common.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/acls/create.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/acls/delete.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/acls/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/cluster/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/cluster/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/cluster/describe_quorum.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/cluster/features.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/cluster/log_dirs.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/cluster/versions.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/configs/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/configs/alter.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/configs/common.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/configs/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/configs/list.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/configs/reset.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/alter_offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/delete.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/delete_offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/list.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/list_offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/remove_members.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/groups/reset_offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/alter_reassignments.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/create.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/delete_records.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/elect_leaders.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/list_offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/partitions/list_reassignments.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/topics/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/topics/create.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/topics/delete.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/topics/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/topics/list.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/abort.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/describe.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/describe_producers.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/find_hanging.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/list.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/users/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/users/alter_user_scram_credentials.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/users/describe_user_scram_credentials.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/common.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/consumer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/producer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cluster.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/codec.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/consumer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/consumer/__main__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/consumer/fetcher.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/consumer/group.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/consumer/subscription_state.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/abstract.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/cooperative_sticky.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/range.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/roundrobin.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/sticky_assignor.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/user_data.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/base.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/consumer.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/heartbeat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/subscription.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/errors.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/future.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/compound_stat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/dict_reporter.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/kafka_metric.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/measurable.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/measurable_stat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/metric_config.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/metric_name.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/metrics.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/metrics_reporter.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/quota.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/avg.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/count.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/histogram.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/max_stat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/min_stat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/percentile.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/percentiles.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/rate.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/sampled_stat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/sensor.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/metrics/stats/total.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/compat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/connection.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/http_connect.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/inet.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/metrics.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/abc.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/gssapi.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/msk.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/oauth.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/plain.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/scram.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/sasl/sspi.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/selector.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/socks5.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/net/wakeup_notifier.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/partitioner/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/partitioner/abc.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/partitioner/default.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/partitioner/sticky.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/__main__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/future.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/kafka.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/producer_batch.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/record_accumulator.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/sender.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/producer/transaction_manager.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/acl.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/acl.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/client_quotas.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/client_quotas.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/cluster.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/cluster.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/configs.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/configs.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/groups.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/groups.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/topics.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/topics.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/transactions.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/transactions.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/users.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/admin/users.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/api_data.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/api_header.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/api_key.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/api_message.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/broker_version_data.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/fetch.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/fetch.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/group.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/group.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/metadata.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/metadata.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/consumer/offsets.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/data_container.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/frame.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/generate_stubs.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/api_versions.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/api_versions.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/find_coordinator.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/find_coordinator.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/metadata.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/metadata/metadata.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/abstract.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/add_offsets_to_txn.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/add_partitions_to_txn.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/admin.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/api.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/api_versions.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/commit.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/consumer_protocol.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/end_txn.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/fetch.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/find_coordinator.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/group.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/init_producer_id.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/list_offsets.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/metadata.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/offset_for_leader_epoch.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/produce.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/sasl_authenticate.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/sasl_handshake.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/struct.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/txn_offset_commit.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/old/types.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/parser.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/producer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/producer/produce.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/producer/produce.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/producer/transaction.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/producer/transaction.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/sasl.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/sasl.pyi +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/array.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/base.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/encode_buffer.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/tagged_fields.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codecs/types.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/codegen.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/simple.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/struct.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/fields/struct_array.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/load_json.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterConfigsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterConfigsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ApiVersionsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ApiVersionsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateAclsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateAclsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreatePartitionsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreatePartitionsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateTopicsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/CreateTopicsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteAclsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteAclsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteGroupsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteGroupsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteRecordsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteRecordsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteTopicsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DeleteTopicsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeAclsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeAclsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClusterRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeClusterResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeConfigsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeConfigsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeGroupsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeGroupsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeProducersRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeProducersResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeQuorumRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeQuorumResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ElectLeadersRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ElectLeadersResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/EndTxnRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/EndTxnResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FetchRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FetchResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FindCoordinatorRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/FindCoordinatorResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/HeartbeatRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/HeartbeatResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/InitProducerIdRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/InitProducerIdResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/JoinGroupRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/JoinGroupResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/LeaveGroupRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/LeaveGroupResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListGroupsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListGroupsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListOffsetsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListOffsetsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListTransactionsRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ListTransactionsResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/MetadataRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/MetadataResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetCommitRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetCommitResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetDeleteRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetDeleteResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetFetchRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetFetchResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ProduceRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ProduceResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/RequestHeader.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/ResponseHeader.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslHandshakeRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SaslHandshakeResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SyncGroupRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/SyncGroupResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/protocol/schemas/resources/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/_crc32c.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/abc.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/default_records.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/legacy_records.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/memory_records.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/record/util.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/serializer/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/serializer/abstract.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/serializer/default.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/serializer/json.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/serializer/wrapper.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/structs.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/util.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/vendor/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka_python.egg-info/SOURCES.txt +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka_python.egg-info/dependency_links.txt +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka_python.egg-info/entry_points.txt +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka_python.egg-info/requires.txt +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/kafka_python.egg-info/top_level.txt +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/pyproject.toml +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/setup.cfg +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/conftest.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/fixtures.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/test_admin_integration.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/test_consumer_integration.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/test_producer_integration.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/test_sasl_integration.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/integration/test_ssl_integration.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/__init__.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_compat.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_connection.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_http_connect.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_inet.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_manager.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_sasl_reauthentication.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_selector.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/net/test_wakeup_notifier.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_cluster.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_codec.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_future.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_metrics.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_mock_broker.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_package.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/test_util.py +0 -0
- {kafka_python-3.0.7 → kafka_python-3.0.8}/test/testutil.py +0 -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
|
-
|
|
236
|
-
|
|
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
|
|
@@ -371,13 +372,49 @@ class KafkaTCPTransport:
|
|
|
371
372
|
|
|
372
373
|
|
|
373
374
|
class KafkaSSLTransport(KafkaTCPTransport):
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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)
|
|
379
394
|
super().__init__(net, sock, host=host)
|
|
380
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
|
+
|
|
381
418
|
async def handshake(self):
|
|
382
419
|
while True:
|
|
383
420
|
try:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '3.0.8'
|
|
@@ -7,7 +7,7 @@ import pytest
|
|
|
7
7
|
import kafka.errors as Errors
|
|
8
8
|
from kafka.future import Future
|
|
9
9
|
from kafka.net.selector import NetworkSelector, TaskState
|
|
10
|
-
from kafka.net.transport import KafkaTCPTransport
|
|
10
|
+
from kafka.net.transport import KafkaSSLTransport, KafkaTCPTransport
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
@pytest.fixture
|
|
@@ -367,6 +367,93 @@ class TestKafkaTCPTransport:
|
|
|
367
367
|
assert 'closed' in s
|
|
368
368
|
|
|
369
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
|
+
|
|
370
457
|
class TestTransportWaiterCleanup:
|
|
371
458
|
"""Regression: a locally-initiated close()/abort() must reclaim the socket
|
|
372
459
|
read/write coroutine tasks parked in the event loop.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '3.0.7'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/transactions/describe_producers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/users/alter_user_scram_credentials.py
RENAMED
|
File without changes
|
{kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/cli/admin/users/describe_user_scram_credentials.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/partition_movements.py
RENAMED
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.7 → kafka_python-3.0.8}/kafka/coordinator/assignors/sticky/sticky_assignor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|