Skip to content

Support Python 3.15 - #317

Open
hkad98 wants to merge 1 commit into
apache:mainfrom
hkad98:python-3.15
Open

hkad98 wants to merge 1 commit into
apache:mainfrom
hkad98:python-3.15

Conversation

@hkad98

@hkad98 hkad98 commented Nov 2, 2026 •

Copy link
Copy Markdown

Motivation

Python 3.15.0 was released on 2026-10-01. pulsar-client publishes no wheels for it and has no sdist, so it can't be installed on 3.15 at all.

Modifications

Same shape as #274 for 3.14:

  • Upgrade pybind11 from 3.0.1 to 3.1.0, the first release tested on Python 3.15 (ci: test Python 3.15 pybind/pybind11#6107).
  • Add Python 3.15 to the Linux, macOS and Windows wheel build matrices. Move the PR validation jobs from 3.14 to 3.15.
  • The ubuntu-latest and windows-2022 runners ship CMake 3.31.6, whose FindPython does not know Python 3.15 (Could NOT find Python3 (missing: Python3_INCLUDE_DIRS Development.Module)). Rather than install a newer CMake into the build, those jobs pass Python3_EXECUTABLE, Python3_INCLUDE_DIR and, on Windows, Python3_LIBRARY to FindPython, all read from the interpreter that setup-python installed. The manylinux, musllinux and macOS builds already have CMake 4.x and are unchanged.
  • Update the supported version lists in README.md, RELEASE.md and pulsar/__init__.py.

I built it locally in python:3.15-trixie (Python 3.15.2, linux/arm64) against the pulsar-client-cpp 4.2.0 debs. The extension compiles and imports, and a produce/consume round trip against an apachepulsar/pulsar:4.0.0 standalone broker works. With Debian's CMake 3.31.6, the same version as the runners, the configure step fails without the FindPython hints and succeeds with them. The Windows Python3_LIBRARY hint has not been tested outside this PR's CI.

Upgrade pybind11 to 3.1.0, the first release tested on Python 3.15, and
add Python 3.15 to the wheel build and PR validation matrices.

The Ubuntu and Windows runners ship CMake 3.31, whose FindPython does not
know Python 3.15 and fails with "Could NOT find Python3 (missing:
Python3_INCLUDE_DIRS Development.Module)". Instead of installing a newer
CMake, those jobs pass the interpreter, include directory and (on
Windows) import library to FindPython, taken from the Python that
setup-python installed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants