<a id="python-changelog"></a>

# Kafka Python Client Changelog

## v2.xx.x

### Enhancements

- Implement async context manager protocol for AIOProducer and AIOConsumer.
- Ensure normalize.schemas config is passed during Protobuf ref lookup.
- Fix type annotations for context manager hooks so that they are correct for subclasses.
- Fix OAuth callback handling for Async IO clients to prevent initialization failures.

## v2.13.2 - 2026-03-02

v2.13.2 is a maintenance release with the following fixes and enhancements:

### Enhancements

- Add Confluent-Client-Version header to requests to Schema Registry, Python Client client.
- Add UAMI OAuth changes.

### Fixes

- Fixed memory leak in `Producer.produce()` when called with headers and raises `BufferError` (queue full) or `RuntimeError` (producer closed). The allocated `rd_headers` memory is now properly freed in error paths before returning. Fixes Issue [#2167](https://github.com/confluentinc/confluent-kafka-python/issues/2167).
- Fixed type hinting of `KafkaError` class, `Consumer.__init()__`, `Producer.__init()__`, `Producer.produce()` and `Consumer.commit()` and introduced a script in tools directory to keep error codes up to date. Fixes Issue [#2168](https://github.com/confluentinc/confluent-kafka-python/issues/2168).
- Fix the token expiration logic in Schema Registry Oauth.
- Ensure use of cachetools is thread-safe.
- Remove passing resolver in JSON validate.
- Fix JSON schema resolver bug.

## v2.13.0 - 2025-12-15

v2.13.0 is a feature release with the following features, fixes, and enhancements:

### Enhancements

- Enforced type hinting for all interfaces.
- Handle OAuth token refreshes using background thread for Admin, Producer, and Consumer clients.
- Added black and isort linting rules and enforcement to codebase.
- Enabled direct creation of Message objects.
- Added `close()` method to producer.
- Added context manager for librdkafka classes to enable easy scope cleanup.
- Expose deterministic partitioner functions.
- Add Accept-Version header for schemas.
- Enhanced the BufferTimeoutManager to flush the librdkafka queue.
- Remove experimental module designation for Async classes.
- Add `__len__` function to AIOProducer.
- Enhance Message class to include serialisation support and rich comparison.
- Support strict validation flags in Avro serializers.

### Fixes

- Type hint `__enter__` to return the same object type that called it.
- Fixed `Consumer.poll()`, `Consumer.consume()`, `Producer.poll()`, and `Producer.flush()` blocking indefinitely and not responding to Ctrl+C (KeyboardInterrupt) signals. The implementation now uses a “wakeable poll” pattern that breaks long blocking calls into smaller chunks (200ms) and periodically re-acquires the Python GIL to check for pending signals. This allows Ctrl+C to properly interrupt blocking operations. Fixes Issues [#209](https://github.com/confluentinc/confluent-kafka-python/issues/209) and [#807](https://github.com/confluentinc/confluent-kafka-python/issues/807).
- Fix support for wrapped Avro unions.
- Fixed segfault exceptions on calls against objects that had closed internal objects.
- Handle evolution during field transformation of schemas.
- Handle null group name to prevent segfault in Admin `list_consumer_group_offsets()`.
- Ensure schemaId initialization is thread-safe.
- Fix error propagation rule for Python’s C API.
- Fix Schema Registry delete behavior with client-side caching.
- Ensure NewTopic is not partially initialized on error.
- Fix formatting issue of TopicPartition that causes SystemError on Windows.
- Add Py_None check for msg and offset params in `commit()` and `store_offsets()`
- Fix experimental module references.
- Update outdated example in README.md.

confluent-kafka-python v2.13.0 is based on librdkafka v2.13.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.13.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## 2.12.2 - 2025-11-06

v2.12.2 is a hotfix for a critical problem found with Schema Registry clients in the 2.12.1 release:

- Fix IndexOutOfBoundsException when evolving Avro schema that uses rules.

## v2.12.1 - 2025-10-21

v2.12.1 is a maintenance release with the following fixes:

- Restored macOS binaries compatibility with macOS 13.
- `libversion()` now returns the string or integer tuple for variants on version. Use `version()` for string only response.
- Added Python 3.14 support and dropped 3.7 support. Free-threaded capabilities not fully supported yet.
- Fixed `use.schema.id` in `sr.lookup_schema()`
- Removed tomli dependency from standard, non-documentation requirements.
- Fixed experimental asyncio example files to correctly use new capabilities.
- Fixed invalid argument error on schema lookups on repeat requests.
- Fixed documentation generation and added error checks for builds to prevent future breaks.

## v2.12.0 - 2025-10-09

v2.12.0 is a feature release with the following enhancements:

### KIP-848 – General Availability

Starting with confluent-kafka-python 2.12.0, the next generation consumer group rebalance protocol defined in [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) is production ready. Please refer to the following [migration guide](docs/kip-848-migration-guide.md) for moving from `classic` to `consumer` protocol.

#### NOTE
The new consumer group protocol defined in [KIP-848](https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol) is not enabled by default. There are few contract change associated with the new protocol and might cause breaking changes. `group.protocol` configuration property dictates whether to use the new `consumer` protocol or older `classic` protocol. It defaults to `classic` if not provided.

### AsyncIO Producer

Introduces beta class `AIOProducer` for asynchronous message production in asyncio applications.

#### Added

- AsyncIO Producer (experimental): Introduces beta class `AIOProducer` for asynchronous message production in asyncio applications. This API offloads blocking librdkafka calls to a thread pool and schedules common callbacks (`error_cb`, `throttle_cb`, `stats_cb`, `oauth_cb`, `logger`) onto the event loop for safe usage inside async frameworks.

#### Features

- Batched async produce: `await AIOProducer(...).produce(topic, value=...)` buffers messages and flushes when the buffer threshold or timeout is reached.
- Async lifecycle: `await producer.flush()`, `await producer.purge()`, and transactional operations (`init_transactions`, `begin_transaction`, `commit_transaction`, `abort_transaction`).

#### Limitations

- Per-message headers are not supported in the current batched async produce path. If headers are required, use the synchronous `Producer.produce(...)` or offload a sync produce call to a thread executor within your async app.

#### Guidance

- Use the AsyncIO Producer inside async applications and servers, such as FastAPI or Starlette, aiohttp, asyncio tasks, to avoid blocking the event loop.
- For batch jobs, scripts, or highest-throughput pipelines without an event loop, the synchronous `Producer` remains recommended.

### Enhancements and fixes

- Kafka OAuth or OIDC metadata based authentication examples with Azure IMDS.

confluent-kafka-python v2.12.0 is based on librdkafka v2.12.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.12.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.11.1 - 2025-08-18

v2.11.1 is a maintenance release with the following fixes:

confluent-kafka-python v2.11.1 is based on librdkafka v2.11.1, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.11.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.11.0 - 2025-07-03

v2.11.0 is a feature release with the following enhancements:

### Fixes

- Fix error propagation rule for Python’s C API to prevent SystemError when callbacks raise exceptions.

confluent-kafka-python v2.11.0 is based on librdkafka v2.11.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.11.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.10.1 - 2025-06-11

v2.10.1 is a maintenance release with the following fixes:

- Handled `None` value for optional `ctx` parameter in `ProtobufDeserializer`
- Handled `None` value for optional `ctx` parameter in `AvroDeserializer`
- Handled ctx=None for AvroDeserializer and ProtobufDeserializer in \_\_call_\_
- Fix possible NPE in CSFLE executor.
- Support for schema ID in header.
- Raise an error if Protobuf deprecated format is specified.
- Implement Async Schema Registry client.

confluent-kafka-python v2.10.1 is based on librdkafka v2.10.1, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.10.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.10.0 - 2025-04-18

v2.10.0 is a feature release with the following fixes and enhancements:

- Group Config is now supported in AlterConfigs, IncrementalAlterConfigs and DescribeConfigs.
- `describe_consumer_groups()` now supports KIP-848 introduced `consumer` groups. Two new fields for consumer group type and target assignment have also been added. Type defines whether this group is a `classic` or `consumer` group. Target assignment is only valid for the `consumer` protocol and its defaults to NULL.

confluent-kafka-python v2.10.0 is based on librdkafka v2.10.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.10.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.9.0 - 2025-03-28

v2.9.0 is a feature release with the following fixes and enhancements:

- Add Client Credentials OAuth support for Schema Registry.
- Add custom OAuth support for Schema Registry.
- Add utilities to convert decimals to and from Protobuf.
- Add support for passing schema ID during serialization.

confluent-kafka-python v2.9.0 is based on librdkafka v2.8.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.8.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.8.2 - 2025-02-28

v2.8.2 is a maintenance release with the following fixes and enhancements:

- Fixed caching to ensure cached schema matches input.
- Fix handling of named Avro schemas.

confluent-kafka-python v2.8.2 is based on librdkafka v2.8.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.8.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

#### NOTE
Versioning is skipped due to breaking change in v2.8.1.
Do not run software with v2.8.1 installed.

## v2.8.0 - 2025-01-07

v2.8.0 is a feature release with the features, fixes, and enhancements:

confluent-kafka-python v2.8.0 is based on librdkafka v2.8.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.8.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.7.0 - 2024-12-21

v2.7.0 is a feature release with the features, fixes and enhancements present in v2.6.2 including the following fix:

- Added missing dependency on googleapis-common-protos when using Protobufs.

confluent-kafka-python v2.7.0 is based on librdkafka v2.6.1, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.6.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.6.2 - 2024-12-18

#### WARNING
Due to an error in which we included dependency changes to a recent patch release, Confluent recommends users to refrain from upgrading to 2.6.2 of Confluent Kafka.
Confluent will release a new minor version, 2.7.0, where the dependency changes will be appropriately included.
Users who have already upgraded to 2.6.2 and made the required dependency changes are free to remain on that version and are recommended to upgrade to 2.7.0 when that version is available.
Upon the release of 2.7.0, the 2.6.2 version will be marked deprecated.

v2.6.2 is a feature release with the following features, fixes, and enhancements:

#### NOTE
This release modifies the dependencies of the Schema Registry client.
If you are using the Schema Registry client, please ensure that you install the
extra dependencies using the following syntax:

```bash
pip install confluent-kafka[schemaregistry]
```

or

```bash
pip install confluent-kafka[avro,schemaregistry]
```

Please see the README.md for more information.

- Support for Data Contracts with Schema Registry, including
  - Data Quality rules
  - Data Transformation rules
  - Client-Side Field Level Encryption (CSFLE)
  - Schema Migration rules (requires Python 3.9+)
- Migrated the Schema Registry client from requests to httpx.
- Add support for multiple URLs.
- Allow configuring timeout.
- Fix deletion semantics.
- Python deserializer can take Schema Registry client.
- Fix handling of Avro unions.
- Remove deprecated RefResolver for JSON.
- Support delete of subject version.

confluent-kafka-python is based on librdkafka v2.6.1, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.6.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.6.1 - 2024-11-18

v2.6.1 is a maintenance release with the following fixes and enhancements:

- Migrated build system from `setup.py` to `pyproject.toml` in accordance with `PEP 517` and `PEP 518`, improving project configuration, build system requirements management, and compatibility with modern Python packaging tools like `pip` and `build`.
- Removed Python Client 3.6 support.
- Added an example for OAUTH OIDC producer with support for Confluent Cloud.

confluent-kafka-python is based on librdkafka v2.6.1, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.6.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.6.0 - 2024-10-11

v2.6.0 is a feature release with the following features, fixes, and enhancements:

- Added Python 3.13 wheels.
- Admin API for listing consumer groups now has an optional filter to return only groups of given types.
- Admin Leader Election RPC.
- Added Transactional resource type for ACL operations.

confluent-kafka-python is based on librdkafka v2.6.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.6.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.5.3 - 2024-09-02

v2.5.3 is a maintenance release with the following fixes and enhancements:

### Fixes

- Fix an assert being triggered during push telemetry call when no metrics matched on the client side.
- Minor enhancement to JSONDeserializer to retrieve schema from Schema Registry if not provided.

confluent-kafka-python is based on librdkafka v2.5.3, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v2.5.3) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.5.0 - 2024-07-10

#### WARNING
This version has introduced a regression in which an assert is triggered during PushTelemetry call. This happens when no metric is matched on the client side among those requested by broker subscription.

You won’t face any problem if:

* Broker doesn’t support [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability).
* [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) feature is disabled on the broker side.
* [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) feature is disabled on the client side. This is enabled by default. Set configuration `enable.metrics.push` to `false`.
* If [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) is enabled on the broker side and there is no subscription configured there.
* If [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) is enabled on the broker side with subscriptions that match the [KIP-714](https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability) metrics defined on the client.

We strongly recommend using `v2.5.3` and above to not face this regression at all.

v2.5.0 is a feature release with the following features, fixes, and enhancements:

- Added delete_records API.
- Added an example to show the usage of the custom logger with `AdminClient`.
- Improve caching on Schema Registry client.
- Removed usage of `strcpy` to enhance security of the client.
- Removed support for centos6 and centos7.
- Fixed invalid write in OAUTHBEARER OIDC extensions copy.
- Fixed documentation for default value of `operation_timeout` and `request_timeout` in various Admin APIs.
- Fixed an issue related to import error of `TopicCollection` and `TopicPartitionInfo` classes when importing through other module like mypy.
- Fixed a segfault when `commit` or `store_offsets` consumer method is called incorrectly with errored Message object.
- Fixed `logger` not working when provided as an argument to `AdminClient` instead of a configuration property.
- Fixed some memory leaks related to `PyDict_SetItem`.

confluent-kafka-python is based on librdkafka v2.5.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.5.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.4.0 - 2024-05-07

v2.4.0 is a feature release with the following features, fixes, and enhancements:

- Added KIP-848 based new consumer group rebalance protocol. This feature is an Early Access release and is not suitable for production environments.
  For more information, see [Introduction to librdkafka - the Apache Kafka C/C++ client library](https://github.com/confluentinc/librdkafka/blob/master/INTRODUCTION.md#next-generation-of-the-consumer-group-protocol-kip-848).
- Fix segfault with `describe_topics` and flaky connection.

confluent-kafka-python is based on librdkafka v2.4.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.4.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.3.0

v2.3.0 is a feature release with the following features, fixes, and enhancements:

- Add Python 3.12 wheels.
- Add support for AdminAPI `describe_cluster()` and `describe_topics()`.
- Return authorized operations in describe responses.
- Partial support of topic identifiers. Topic identifiers in metadata response are available through the new describe_topics function.
- Completed the implementation with the addition of `list_offsets`.
- Add `Rack` to the `Node` type, so Admin API calls can expose racks for brokers. These are all describe responses.
- Fix the `describe_user_scram_credentials` when using describe all users or empty users list commands.
  Please refer to issue ([https://github.com/confluentinc/confluent-kafka-python/issues/1616](https://github.com/confluentinc/confluent-kafka-python/issues/1616)) for more details.

confluent-kafka-python is based on librdkafka v2.3.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.3.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.2.0

v2.2.0 is a feature release with the following features, fixes, and enhancements:

- IncrementalAlterConfigs API.
- User SASL/SCRAM credentials alteration and description.
- Added documentation with an example of FIPS compliant communication with Kafka cluster.
- Fixed wrong error code parameter name in KafkaError.

confluent-kafka-python is based on librdkafka v2.2.0, see the [librdkafka release notes](https://github.com/confluentinc/librdkafka/releases/tag/v2.2.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.1.1

v2.1.1 is a maintenance release with the following fixes and enhancements:

### Fixes

- Added a new ConsumerGroupState UNKNOWN. The typo state UNKOWN is deprecated and will be removed in the next major version.
- Fix some Admin API documentation stating -1 for infinite timeout incorrectly. Request timeout can’t be infinite.

confluent-kafka-python is based on librdkafka v2.1.1, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v2.1.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.1.0

v2.1.0 is a feature release with the following features, fixes, and enhancements:

- Added `set_sasl_credentials`. This new method (on the Producer, Consumer, and AdminClient) allows modifying the stored SASL PLAIN/SCRAM credentials that will be used for subsequent (new) connections to a broker.
- Wheels for Linux and arm64.
- Added support for Default num_partitions in CreateTopics Admin API.
- Added support for password protected private key in CachedSchemaRegistryClient.
- Add reference support in Schema Registry client.
- Migrated travis jobs to Semaphore CI.
- Added support for schema references.
- add offset leader epoch methods to the TopicPartition and Message classes.

confluent-kafka-python is based on librdkafka v2.1.0, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v2.1.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v2.0.2

v2.0.2 is a feature release with the following features, fixes, and enhancements:

- Added Python 3.11 wheels.
- Add Consumer Group operations to Admin API.
- Allow listing consumer groups per state.
- Partially implemented: support for AlterConsumerGroupOffsets.
- As result of the above KIPs, added.
  - `list_consumer_groups` Admin operation. Supports listing by state.
  - `describe_consumer_groups` Admin operation. Supports multiple groups.
  - `delete_consumer_groups` Admin operation. Supports multiple groups.
  - `list_consumer_group_offsets` Admin operation. Currently, only supports one group with multiple partitions. Supports require_stable option.
  - `alter_consumer_group_offsets` Admin operation. Currently, only supports one group with multiple offsets.
- Added `normalize.schemas` configuration property to Schema Registry client.
- Added metadata to `TopicPartition` type and `commit()`.
- Added `consumer.memberid()` for getting member ID assigned to the consumer in a consumer group.
- Implemented `nb_bool` method for the Producer, so that the default (which uses len) will not be used. This avoids situations where producers with no enqueued items would evaluate to False.
- Deprecated `AvroProducer` and `AvroConsumer`. Use `AvroSerializer` and `AvroDeserializer` instead.
- Deprecated `list_groups`. Use `list_consumer_groups` and `describe_consumer_groups` instead.
- Improved consumer example to show at-least-once semantics.
- Improved serialization and deserialization examples.
- Improved documentation.

### Upgrade considerations

OpenSSL 3.0.x upgrade in librdkafka requires a major version bump, as some legacy ciphers need to be explicitly configured to continue working, but it is highly recommended not to use them. The rest of the API remains backward compatible.

confluent-kafka-python is based on librdkafka 2.0.2, see the [librdkafka v2.0.0 release notes](https://github.com/edenhill/librdkafka/releases/tag/v2.0.0) and later ones for a complete list of changes, enhancements, fixes, and upgrade considerations.

#### NOTE
There were no v2.0.0 and v2.0.1 releases.

## v1.9.2

v1.9.2 is a maintenance release with the following fixes and enhancements:

- Support for setting principal and SASL extensions in oauth_cb and handle failures.
- Wheel for macOS M1 and arm64.
- KIP-140 Admin API ACL fix: When requesting multiple create_acls or delete_acls operations, if the provided ACL bindings or ACL binding filters are not unique, an exception will be thrown immediately rather than later when the responses are read.
- KIP-140 Admin API ACL fix: Better documentation of the describe and delete ACLs behavior when using the MATCH resource patter type in a filter.
- Avro serialization examples: added a parameter for using a generic or specific Avro schema.

confluent-kafka-python is based on librdkafka v1.9.2, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.9.2) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v1.9.1

There was no 1.9.1 release of the Python Client.

## v1.9.0

This is a feature release:

- OAUTHBEARER OIDC support.
- KIP-140 Admin API ACL support.

### Fixes

- The warnings for `use.deprecated.format` introduced in v1.8.2 had their logic reversed, which resulted in warning logs to be emitted when the property was correctly configured.
  The log message itself also contained incorrect text.
  The warning is now emitted only when `use.deprecated.format` is set to the old legacy encoding of `True`.
- Use `str(Schema)` rather than `Schema.to_json` to prevent fastavro from raising exception `TypeError: unhashable type: 'mappingproxy'`.
- Fix the argument order in the constructor signature for AvroDeserializer/Serializer: the argument order in the constructor signature for AvroDeserializer/Serializer was altered in v1.6.1, but the example is not changed yet.
- Fix the JSON deserialization errors from `_schema_loads` for valid primitive declarations.

confluent-kafka-python is based on librdkafka v1.9.0, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.9.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v1.8.2

v1.8.2 is a maintenance release with the following fixes and enhancements:

#### IMPORTANT
Added mandatory `use.deprecated.format` to `ProtobufSerializer` and `ProtobufDeserializer`.
See *Upgrade considerations* below for more information.

- Python 2.7 binary wheels are no longer provided.
  Users still on Python 2.7 will need to build confluent-kafka from source and install librdkafka separately, see README.md for build instructions.
- Added `use.latest.version` and `skip.known.types` (Protobuf) to the Serializer classes.
- `list_topics()` and `list_groups()` added to AdminClient.
- Added support for headers in the SerializationContext.
- Fix crash in header parsing.
- Added long package description in setuptools.
- Documentation fixes.
- Don’t raise AttributeError exception when CachedSchemaRegistryClient constructor raises a valid exception.

confluent-kafka-python is based on librdkafka v1.8.2, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.8.2) for a complete list of changes, enhancements, fixes, and upgrade considerations.

#### NOTE
There were no v1.8.0 and v1.8.1 releases.

### Upgrade considerations

#### Protobuf serialization format changes

Prior to this version the confluent-kafka-python client had a bug where nested Protobuf schemas indexes were incorrectly serialized, causing incompatibility with other Schema Registry Protobuf consumers and producers.

This has now been fixed, but since the old defect serialization and the new correct serialization are mutually incompatible the user of confluent-kafka-python will need to make an explicit choice which serialization format to use during a transitory phase while old producers and consumers are upgraded.

The `ProtobufSerializer` and `ProtobufDeserializer` constructors now both take a configuration dictionary that requires the `use.deprecated.format` configuration property to be explicitly set.

Producers should be upgraded first. As long as there are consumers from Python v1.7.0 and earlier that are reading from topics being produced to, the new Python producer in v1.8.2 and later must be configured with `use.deprecated.format` set to `True`.

When all existing messages in the topic have been consumed by older consumers the consumers should be upgraded and both new producers and the new consumers must set `use.deprecated.format` to `False`.

The requirement to explicitly set `use.deprecated.format` will be removed in a future version and the setting will then default to `False` (new format).

## v1.7.0

v1.7.0 is a maintenance release with the following fixes and enhancements:

- Add `error_cb` to `confluent_cloud.py` example.
- Clarify that doc output varies based on method.
- Fixed documentation to reference SchemaReference correctly instead of Schema.
- Add documentation for NewTopic and NewPartitions.

confluent-kafka-python is based on librdkafka v1.7.0, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.7.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v1.6.1

v1.6.1 is a feature release:

- KIP-429 - Incremental consumer rebalancing support.
- OAUTHBEARER support.

### Fixes

- Add `return_record_name=True` to AvroDeserializer.
- Fix deprecated `schema.Parse` call.
- Make reader schema optional in AvroDeserializer.
- Add `**kwargs` to legacy AvroProducer and AvroConsumer constructors to support all Consumer and Producer base class constructor arguments, such as `logger`.
- Add Boolean for permanent schema delete.
- The Avro package is no longer required for Schema Registry support.
- Only write to schema cache once, improving performance.
- Improve Schema Registry error reporting.
- `producer.flush()` could return a non-zero value without hitting the specified timeout.

confluent-kafka-python is based on librdkafka v1.6.1, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.6.1) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v1.6.0

v1.6.0 is a feature release with the following features, fixes, and enhancements:

- Bundles librdkafka v1.6.0 which adds support for incremental rebalancing, sticky producer partitioning, transactional producer scalability improvements, and more. For more, see [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.6.0).
- Rename `asyncio.py` example to avoid circular import.
- The Linux wheels are now built with manylinux2010 (rather than manylinux1) since OpenSSL v1.1.1 no longer builds on CentOS 5. Older Linux distros may thus no longer be supported, such as CentOS 5.
- The in-wheel OpenSSL version has been updated to 1.1.1i.
- Added `Message.latency()` to retrieve the per-message produce latency.
- Added trove classifiers.
- Consumer destructor will no longer trigger `consumer.close()`, which must now be explicitly called if the application wants to leave the consumer group properly and commit final offsets.
- Fix `PY_SSIZE_T_CLEAN` warning.
- Move `confluent_kafka/` to `src/` to prevent pytest and tox from picking up the local directory.
- Added `producer.purge()` to purge messages in queue and flight.
- Added `AdminClient.list_groups()` API.
- Rename `asyncio.py` example to avoid circular import.

confluent-kafka-python is based on librdkafka v1.6.0, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.6.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.

## v1.5.2

v1.5.2 is a maintenance release with the following fixes and enhancements:

- Add producer purge method with optional blocking argument.
- Add `AdminClient.list_groups` API.
- Rename `asyncio.py` example to avoid circular import.
- Upgrade bundled OpenSSL to v1.1.1h from v1.0.2u.
- The consumer destructor will no longer trigger `consumer.close()` callbacks. `consumer.close()` must now be explicitly called to cleanly close down the consumer and leave the group.
- Fix `PY_SSIZE_T_CLEAN` warning in calls to produce().
- Restructure source tree to avoid undesired local imports of confluent_kafka when running pytest.

confluent-kafka-python is based on librdkafka v1.5.2, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.5.2) for a complete list of changes, enhancements, fixes, and upgrade considerations.

#### NOTE
There was no v1.5.1 release

## v1.5.0

v1.5.0 is a maintenance release with the following fixes and enhancements:

- Bundles librdkafka v1.5.0 - see release notes for all enhancements and fixes.
- Documentation fixes.
- Dockerfile examples.
- List offsets example.

confluent-kafka-python is based on librdkafka v1.5.0, see the [librdkafka release notes](https://github.com/edenhill/librdkafka/releases/tag/v1.5.0) for a complete list of changes, enhancements, fixes, and upgrade considerations.
