From b5e63f900f114aa8d12d8cf71de3e4a9faa983a0 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 8 Sep 2026 16:08:13 -0400 Subject: [PATCH 1/3] Feat: Add support for Python 3.15 Signed-off-by: Patrick M. Niedzielski --- .github/workflows/build.yaml | 1 + .github/workflows/build_wheels.yml | 4 ++-- README.md | 2 +- news/98.misc.rst | 1 + pyproject.toml | 5 +++-- 5 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 news/98.misc.rst diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 169eb84..6415c65 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -98,6 +98,7 @@ jobs: - "3.12" - "3.13" - "3.14" + - "3.15" steps: - uses: actions/checkout@v7 with: diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 608d0c7..b8447de 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -66,7 +66,7 @@ jobs: matrix: os: [ubuntu-latest] cibw_python: - ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314"] + ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp315"] cibw_arch: ${{ fromJSON(needs.choose_architectures.outputs.cibw_arches) }} steps: @@ -112,7 +112,7 @@ jobs: matrix: os: [macos-14] cibw_python: - ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314"] + ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp315"] cibw_arch: ["arm64"] steps: diff --git a/README.md b/README.md index adb1934..953cd5a 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ [![MessageQueue](https://img.shields.io/badge/MessageQueue-blue)](#) [![Documentation](https://img.shields.io/badge/Documentation-blue)](https://bloomberg.github.io/blazingmq) [![Code Style](https://img.shields.io/badge/Black-black)](#) -![Supported Python versions](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue?logo=python) +![Supported Python versions](https://img.shields.io/badge/python-3.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14%20%7C%203.15-blue?logo=python) # BlazingMQ Python SDK diff --git a/news/98.misc.rst b/news/98.misc.rst new file mode 100644 index 0000000..4f5f20d --- /dev/null +++ b/news/98.misc.rst @@ -0,0 +1 @@ +Support Python 3.15 diff --git a/pyproject.toml b/pyproject.toml index e7ddb44..7e10b3f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ build-backend = "setuptools.build_meta" name = "blazingmq" description = "Python BlazingMQ API" readme = "README.md" -requires-python = ">=3.9,<3.15" +requires-python = ">=3.9,<3.16" authors = [ {name = "Bloomberg Finance LP"} ] @@ -29,6 +29,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed", @@ -52,7 +53,7 @@ filename = "CHANGELOG.md" directory = "news" [tool.cibuildwheel] -build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"] +build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*", "cp315-*"] skip = "*-musllinux_*" manylinux-x86_64-image = "manylinux_2_28" From a9b4866db519cbd464f3dd3011f237123cc97a52 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 8 Sep 2026 16:16:48 -0400 Subject: [PATCH 2/3] Chore: Use Python 3.15 as default version in CI Signed-off-by: Patrick M. Niedzielski --- .github/workflows/build.yaml | 6 +++--- docs/BUILD.md | 2 +- tox.ini | 16 ++++++++-------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 6415c65..2ae787b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -201,10 +201,10 @@ jobs: key: ${{ needs.blazingmq-dependency.outputs.deps_cache_key }} - name: Restore cached BlazingMQ build artifacts run: tar xzf blazingmq_artifacts.tar.gz - - name: Set up Python 3.14 + - name: Set up Python 3.15 uses: actions/setup-python@v7 with: - python-version: "3.14" + python-version: "3.15" - name: Create virtual environment run: | python3 -m venv venv @@ -254,7 +254,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v7 with: - python-version: "3.14" + python-version: "3.15" - name: Create virtual environment run: | python3 -m venv venv diff --git a/docs/BUILD.md b/docs/BUILD.md index 407b256..9c7b604 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -8,7 +8,7 @@ CI to test on all other combinations in your pull request. See `.github/workflows/build.yaml` for more details on how we build and test on all supported interpreters and architectures. -The instructions below assume `PYEXEC=python3.14` and will focus on +The instructions below assume `PYEXEC=python3.15` and will focus on Linux only. This should be sufficient in most cases. Before following any of the instructions, make sure to `git clone` the project onto the host machine. diff --git a/tox.ini b/tox.ini index 5e91012..76a6f31 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py314,lint, lint-cython, lint-types, black, docs +envlist = py315,lint, lint-cython, lint-types, black, docs minversion = 3.2.1 isolated_build = true @@ -32,23 +32,23 @@ description = [testenv:.package] description = Isolated build environment -basepython = python3.14 +basepython = python3.15 -[testenv:py314-cov] +[testenv:py315-cov] usedevelop = True commands = {[testenv]commands_cov} deps = -rrequirements-test-coverage.txt [testenv:lint] description = Run lint checker on Python files -basepython = python3.14 +basepython = python3.15 deps = flake8 skip_install = true commands = {basepython} -m flake8 --config={toxinidir}/.flake8 src [testenv:lint-cython] description = Run lint checker on Cython files -basepython = python3.14 +basepython = python3.15 deps = flake8 skip_install = true commands = {basepython} -m flake8 --config={toxinidir}/.flake8.cython src @@ -56,21 +56,21 @@ commands = {basepython} -m flake8 --config={toxinidir}/.flake8.cython src [testenv:lint-types] description = Run mypy checker on examples -basepython = python3.14 +basepython = python3.15 deps = mypy commands = {basepython} -m mypy --strict examples [testenv:black] description = Check that python files are formatted with black -basepython = python3.14 +basepython = python3.15 deps = black skip_install = true commands = {basepython} -m black --check --verbose src tests [testenv:docs] description = Generate library documentation -basepython = python3.14 +basepython = python3.15 deps = -rrequirements-lint-docs.txt commands = make -C docs html {basepython} -c 'print("documentation available under file://{toxworkdir}/docs_out/index.html")' From 19043ab0c83c1e0e8fc32891b07a7911e4b7cf81 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 15 Sep 2026 10:30:31 -0400 Subject: [PATCH 3/3] Chore: Use ubuntu-26.04 runners in CI The current ubuntu-24.04 does not support Python 3.15. This patch bumps all jobs that use ubuntu-24.04 (or ubuntu-latest, which points to the same image) to the newer ubuntu-26.04 image. Signed-off-by: Patrick M. Niedzielski --- .github/workflows/build.yaml | 8 ++++---- .github/workflows/build_wheels.yml | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2ae787b..055d2b6 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -17,7 +17,7 @@ permissions: jobs: blazingmq-dependency: name: Build BlazingMQ as a dependency - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 outputs: deps_cache_key: ${{ steps.cache-key.outputs.deps_cache_key }} steps: @@ -88,7 +88,7 @@ jobs: linux-check: name: Test on Linux needs: blazingmq-dependency - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 strategy: matrix: python-version: @@ -188,7 +188,7 @@ jobs: lint-docs: name: Lint and Docs needs: blazingmq-dependency - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v7 with: @@ -238,7 +238,7 @@ jobs: coverage: name: Coverage needs: blazingmq-dependency - runs-on: ubuntu-24.04 + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v7 with: diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index b8447de..dd0f178 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -22,7 +22,7 @@ concurrency: jobs: build_sdist: name: Build source distribution - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - uses: actions/checkout@v7 with: @@ -50,7 +50,7 @@ jobs: choose_architectures: name: Decide which architectures to build wheels for - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - id: x86_64 run: echo "cibw_arch=x86_64" >> $GITHUB_OUTPUT @@ -64,7 +64,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest] + os: [ubuntu-26.04] cibw_python: ["cp39", "cp310", "cp311", "cp312", "cp313", "cp314", "cp315"] cibw_arch: ${{ fromJSON(needs.choose_architectures.outputs.cibw_arches) }} @@ -153,7 +153,7 @@ jobs: merge: needs: [build_wheels, build_wheels_macos, build_sdist] - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 steps: - uses: actions/upload-artifact/merge@v7 with: @@ -162,7 +162,7 @@ jobs: upload_pypi: needs: merge - runs-on: ubuntu-latest + runs-on: ubuntu-26.04 if: | github.event_name == 'release' && github.event.action == 'published' || github.event_name == 'workflow_dispatch'