Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
cc164a1
DGS-23025 Add AssociatedNameStrategy (#2194)
rayokota Mar 13, 2026
51ec85d
KIP-932 : Implement Share consumer interface with poll API
k-raina Mar 12, 2026
0ed043f
Fix typo (#1691)
lpsinger Mar 16, 2026
fc5ef4f
BUILD-KIP932: Commit to build branch with kip-932 librdkafka branch
k-raina Mar 16, 2026
40e8a6f
Implement async context manager protocol for AIO clients (#2180)
lpsinger Mar 16, 2026
d313cac
Fix return type signature for context managers (#2181)
lpsinger Mar 16, 2026
f3af6aa
Remove callback wrapping for oauth_cb in AIO clients (#2219)
ojasvajain Mar 17, 2026
e23df2e
Address copilor comments
k-raina Mar 17, 2026
88b4a3a
Address first pass feedback
k-raina Mar 18, 2026
852d090
Style fix
k-raina Mar 18, 2026
410a59c
Add enableAt to RuleSet (#2218)
rayokota Mar 20, 2026
73c7953
Avoid redundant lookup_schema call in _get_reader_schema when use_sch…
Jthai006 Mar 30, 2026
ea948da
v2.14.0rc1 (#2224)
emasab Apr 1, 2026
d80ff36
Add current release candidate to setup_all_versions.py (#2226)
emasab Apr 1, 2026
a2f066d
v2.14.0 (#2227)
emasab Apr 1, 2026
6c3bd6d
DGS-23862 Fix URL joining in Python client (#2228)
rayokota Apr 2, 2026
d59b196
Style fix
k-raina Apr 8, 2026
48208f4
Address feedback
k-raina Apr 10, 2026
f5f03dc
Fix uv venv picking up Python 3.14 on new Semaphore AMI (#2233)
k-raina Apr 20, 2026
1e41691
Address feedback
k-raina Apr 21, 2026
59db830
Merge remote-tracking branch 'origin/master' into dev_kip-932_share_c…
k-raina Apr 21, 2026
9580e6d
Style fix
k-raina Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 40 additions & 39 deletions .semaphore/semaphore.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ execution_time_limit:
global_job_config:
env_vars:
- name: LIBRDKAFKA_VERSION
value: v2.13.2
value: v2.14.0
# TODO KIP-932: Remove LIBRDKAFKA_BRANCH once LIBRDKAFKA_VERSION includes share consumer support
- name: LIBRDKAFKA_BRANCH
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a TODO to remove this env_vars when the LIBRDKAFKA_VERSION has QfK changes.

value: dev_kip-932_queues-for-kafka
prologue:
commands:
- checkout
Expand All @@ -26,13 +29,13 @@ blocks:
env_vars:
- name: OS_NAME
value: osx
- name: ARCH
value: x64
jobs:
- name: Build
commands:
- export ARCH=x64
- sem-version python 3.11
- pip install uv
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse 2.16.2
- tar -czf wheelhouse-macOS-${ARCH}.tgz wheelhouse
- artifact push workflow wheelhouse-macOS-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
Expand All @@ -48,17 +51,17 @@ blocks:
env_vars:
- name: OS_NAME
value: osx
- name: ARCH
value: x64
- name: CIBW_SKIP
value: cp36-* cp37-* cp38-* cp39-* cp310-* cp311-* cp312-*
- name: CIBW_ENVIRONMENT_MACOS
value: MACOSX_DEPLOYMENT_TARGET=13
jobs:
- name: Build
commands:
- export ARCH=x64
- sem-version python 3.13
- pip install uv
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
- tar -czf wheelhouse-macOS-${ARCH}-py313-plus.tgz wheelhouse
- artifact push workflow wheelhouse-macOS-${ARCH}-py313-plus.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}-py313-plus.tgz/
Expand All @@ -76,13 +79,13 @@ blocks:
value: osx
- name: CIBW_ARCHS
value: arm64
- name: ARCH
value: arm64
jobs:
- name: Build
commands:
- export ARCH=arm64
- sem-version python 3.11
- pip install uv
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse 2.16.2
- tar -czf wheelhouse-macOS-${ARCH}.tgz wheelhouse
- artifact push workflow wheelhouse-macOS-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
Expand All @@ -100,17 +103,17 @@ blocks:
value: osx
- name: CIBW_ARCHS
value: arm64
- name: ARCH
value: arm64
- name: CIBW_SKIP
value: cp38-* cp39-* cp310-* cp311-* cp312-*
- name: CIBW_ENVIRONMENT_MACOS
value: MACOSX_DEPLOYMENT_TARGET=13
jobs:
- name: Build
commands:
- export ARCH=arm64
- sem-version python 3.13
- pip install uv
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- PIP_INSTALL_OPTIONS="--user" tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
- tar -czf wheelhouse-macOS-${ARCH}-py313-plus.tgz wheelhouse
- artifact push workflow wheelhouse-macOS-${ARCH}-py313-plus.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}-py313-plus.tgz/
Expand All @@ -126,13 +129,13 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: arm64
jobs:
- name: Build
commands:
- export ARCH=arm64
- sem-version python 3.13
- pip install uv
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- ./tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
- tar -czf wheelhouse-linux-${ARCH}.tgz wheelhouse
- artifact push workflow wheelhouse-linux-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
Expand All @@ -148,13 +151,13 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: x64
jobs:
- name: Build
commands:
- export ARCH=x64
- sem-version python 3.11
- pip install uv
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- ./tools/wheels/build-wheels.sh "${LIBRDKAFKA_VERSION#v}" wheelhouse
- tar -czf wheelhouse-linux-${ARCH}.tgz wheelhouse
- artifact push workflow wheelhouse-linux-${ARCH}.tgz --destination artifacts/wheels-${OS_NAME}-${ARCH}.tgz/
Expand Down Expand Up @@ -187,6 +190,7 @@ blocks:
commands:
- sem-version python 3.11.9
- bash tools/mingw-w64/semaphore_commands.sh
# TODO KIP-932: Add LIBRDKAFKA_BRANCH fallback for share consumer support
- bash tools/wheels/install-librdkafka.sh $env:LIBRDKAFKA_VERSION.TrimStart("v") dest
- tools/wheels/build-wheels.bat x64 win_amd64 dest wheelhouse
- tar -czf wheelhouse-windows-${Env:ARCH}.tgz wheelhouse
Expand All @@ -200,10 +204,9 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: x64
prologue:
commands:
- export ARCH=x64
- '[[ -z $DOCKERHUB_APIKEY ]] || docker login --username $DOCKERHUB_USER --password $DOCKERHUB_APIKEY'
- sudo apt-get update -qq && sudo apt-get install -y -qq clang-format
jobs:
Expand All @@ -212,7 +215,7 @@ blocks:
- sem-version python 3.11
- pip install uv
# use a virtualenv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate
- chmod u+r+x tools/source-package-verification.sh
- tools/source-package-verification.sh
- name: Build and Tests with 'consumer' group protocol
Expand All @@ -221,7 +224,7 @@ blocks:
- sem-version java 17
- pip install uv
# use a virtualenv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate
- chmod u+r+x tools/source-package-verification.sh
- export TEST_CONSUMER_GROUP_PROTOCOL=consumer
- tools/source-package-verification.sh
Expand All @@ -230,7 +233,7 @@ blocks:
- sem-version python 3.11
- pip install uv
# use a virtualenv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate
- chmod u+r+x tools/source-package-verification.sh
- export RUN_COVERAGE=true
- tools/source-package-verification.sh
Expand All @@ -247,15 +250,14 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: arm64
jobs:
- name: Build
commands:
- export ARCH=arm64
- sem-version python 3.11
- pip install uv
# use a virtualenv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate
- chmod u+r+x tools/source-package-verification.sh
- tools/source-package-verification.sh
- name: "Source package verification with Python 3 (OSX x64) +docs"
Expand All @@ -267,15 +269,14 @@ blocks:
env_vars:
- name: OS_NAME
value: osx
- name: ARCH
value: x64
jobs:
- name: Build
commands:
- export ARCH=x64
- sem-version python 3.11
- pip install uv
# use a virtualenv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate
- chmod u+r+x tools/source-package-verification.sh
- tools/source-package-verification.sh
- name: "Source package verification with Python 3 (OSX arm64) +docs"
Expand All @@ -287,15 +288,14 @@ blocks:
env_vars:
- name: OS_NAME
value: osx
- name: ARCH
value: arm64
jobs:
- name: Build
commands:
- export ARCH=arm64
- sem-version python 3.11
- pip install uv
# use a virtualenv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate
- chmod u+r+x tools/source-package-verification.sh
- tools/source-package-verification.sh
- name: "Ducktape Performance Tests (Linux x64)"
Expand All @@ -307,8 +307,6 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: x64
- name: BENCHMARK_BOUNDS_CONFIG
value: tests/ducktape/producer_benchmark_bounds.json
- name: BENCHMARK_ENVIRONMENT
Expand All @@ -320,19 +318,26 @@ blocks:
- name: Build and Tests
commands:
# Setup Python environment
- export ARCH=x64
- sem-version python 3.11
- pip install uv
- uv venv _venv && source _venv/bin/activate
- uv venv _venv --python "$(command -v python)" && source _venv/bin/activate

# Install ducktape framework and additional dependencies
- uv pip install ducktape psutil

# Install existing test requirements
- uv pip install -r requirements/requirements-tests-install.txt

# TODO KIP-932: Remove LIBRDKAFKA_BRANCH fallback once LIBRDKAFKA_VERSION includes share consumer support
# Build and install confluent-kafka from source
- lib_dir=dest/runtimes/$OS_NAME-$ARCH/native
- tools/wheels/install-librdkafka.sh "${LIBRDKAFKA_VERSION#v}" dest
- |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need these changes in other jobs as well. Either add them or add a TODO for those.

if [[ -n $LIBRDKAFKA_BRANCH ]]; then
tools/wheels/build-librdkafka-branch.sh "$LIBRDKAFKA_BRANCH" dest
else
tools/wheels/install-librdkafka.sh "${LIBRDKAFKA_VERSION#v}" dest
fi
- export CFLAGS="$CFLAGS -I${PWD}/dest/build/native/include"
- export LDFLAGS="$LDFLAGS -L${PWD}/${lib_dir}"
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/$lib_dir"
Expand Down Expand Up @@ -411,11 +416,10 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: x64
jobs:
- name: Verify
commands:
- export ARCH=x64
- sem-version python 3.9
- artifact pull workflow artifacts
- cd artifacts && ls *.tgz |xargs -n1 tar -xvf && cd ..
Expand All @@ -432,11 +436,10 @@ blocks:
env_vars:
- name: OS_NAME
value: linux
- name: ARCH
value: arm64
jobs:
- name: Verify
commands:
- export ARCH=arm64
- sem-version python 3.9
- artifact pull workflow artifacts
- cd artifacts && ls *.tgz |xargs -n1 tar -xvf && cd ..
Expand All @@ -454,11 +457,10 @@ blocks:
env_vars:
- name: OS_NAME
value: osx
- name: ARCH
value: x64
jobs:
- name: Verify
commands:
- export ARCH=x64
- checkout
- sem-version python 3.11
- pip install uv
Expand Down Expand Up @@ -487,13 +489,12 @@ blocks:
env_vars:
- name: OS_NAME
value: osx
- name: ARCH
value: arm64
jobs:
- name: Verify
commands:
- checkout
- sem-version python 3.11
- export ARCH=arm64
- pip install uv
- uv pip install --system pytest
- uv pip install --system -r requirements/requirements-tests-install.txt
Expand Down
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,30 @@

### Fixes

- Fix URL joining in Python client (#2228)


## v2.14.0 - 2026-04-01

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

### Enhancements

- Implement async context manager protocol for AIOProducer and AIOConsumer (#2180)
- Add AssociatedNameStrategy (#2194)
- Add enableAt to RuleSet (#2218)

### Fixes

- Ensure normalize.schemas config is passed during Protobuf ref lookup #2214
- Fix type annotations for context manager hooks so that they are correct for subclasses (#2181)
- Fix OAuth callback handling for Async IO clients to prevent initialization failures (#2219)


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



## v2.13.2 - 2026-03-02
Expand Down
2 changes: 1 addition & 1 deletion examples/docker/Dockerfile.alpine
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ FROM alpine:3.12

COPY . /usr/src/confluent-kafka-python

ENV LIBRDKAFKA_VERSION="v2.13.2"
ENV LIBRDKAFKA_VERSION="v2.14.0"
ENV KCAT_VERSION="master"
ENV CKP_VERSION="master"

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "confluent-kafka"
version = "2.13.2"
version = "2.14.0"
description = "Confluent's Python client for Apache Kafka"
classifiers = [
"Development Status :: 5 - Production/Stable",
Expand Down
1 change: 1 addition & 0 deletions requirements/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
typing-extensions; python_version < "3.11"
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
os.path.join(ext_dir, 'confluent_kafka.c'),
os.path.join(ext_dir, 'Producer.c'),
os.path.join(ext_dir, 'Consumer.c'),
os.path.join(ext_dir, 'ShareConsumer.c'),
os.path.join(ext_dir, 'Metadata.c'),
os.path.join(ext_dir, 'AdminTypes.c'),
os.path.join(ext_dir, 'Admin.c'),
Expand Down
2 changes: 2 additions & 0 deletions src/confluent_kafka/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
Consumer,
Message,
Producer,
ShareConsumer,
TopicPartition,
Uuid,
consistent,
Expand All @@ -54,6 +55,7 @@
__all__ = [
"admin",
"Consumer",
"ShareConsumer",
"aio",
"KafkaError",
"KafkaException",
Expand Down
Loading