From e50e4ea69bad1856d054f82b6fd0a4d78a39f69e Mon Sep 17 00:00:00 2001 From: Andres Marafioti Date: Fri, 25 Sep 2026 09:41:34 +0200 Subject: [PATCH] Prepare release 0.4.1 with macOS PyPI wheels --- README.md | 30 ++++++++++++++++++++---------- pyproject.toml | 2 +- src/qwentts_cpp/__init__.py | 2 +- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 181666e..a5bed5e 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,8 @@ CPU builds are still useful for development and smoke tests. ## Installation -The default PyPI package is built for CUDA 12.8: +Starting with 0.4.1, PyPI provides Linux CUDA 12.8 wheels and macOS 14+ +Apple Silicon Metal wheels. Pip selects the appropriate wheel automatically: ```bash pip install qwentts-cpp-python @@ -74,13 +75,10 @@ revision; validation artifacts are not reused for publishing. ### Apple Silicon (Metal) -The PyPI `0.4.0` release contains Linux CUDA wheels. For **macOS 14 or newer, -arm64 Python 3.10+**, use the `+metal` wheel published to Hugging Face. After -the **Publish Hugging Face Wheels** workflow completes, install it with: +For **macOS 14 or newer, arm64 Python 3.10+**, install directly from PyPI: ```bash -python -m pip install --only-binary=qwentts-cpp-python "qwentts-cpp-python==0.4.0+metal" \ - -f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/metal +python -m pip install --only-binary=qwentts-cpp-python "qwentts-cpp-python>=0.4.1" python -c "from qwentts_cpp import QwenLibrary; print(QwenLibrary().version())" ``` @@ -91,14 +89,26 @@ from macOS. The build applies a shader-only workaround for the pinned ggml's invalid scalar-to-BF16-vector fill cast, restoring the source checkout afterward; the C ABI is unchanged. Use a native arm64 Python, rather than an Intel Python under Rosetta. -The `+metal` version identifies the backend on Hugging Face; it is never sent to -PyPI and cannot collide with the Linux CUDA or other backend variants. +Downstream packages can declare `qwentts-cpp-python>=0.4.1` as a regular +dependency, without an extra index or a direct wheel URL. The macOS platform +tag distinguishes Metal wheels from Linux CUDA wheels on PyPI. Intel Macs and +macOS versions older than 14 are not supported by this Metal wheel. + +The earlier `0.4.0` Metal wheel remains available on Hugging Face: + +```bash +python -m pip install "qwentts-cpp-python==0.4.0+metal" \ + -f https://huggingface.co/datasets/andito/qwentts-cpp-python-wheels/tree/main/whl/metal +``` + +The `+metal` version identifies the backend on Hugging Face; PyPI wheels use +the plain public version without this suffix. Before publication, download the `hf-wheel-metal-macosx-arm64` artifact from the PR's **Apple Silicon Metal wheel** check, unzip it, and install its `.whl` -with `python -m pip install /path/to/qwentts_cpp_python-0.4.0+metal-*.whl`. +with `python -m pip install /path/to/qwentts_cpp_python-0.4.1+metal-*.whl`. This macOS check also runs for PRs; the Linux matrix remains dispatch-only. -The Hugging Face publisher rebuilds and checks its own Metal wheel. +Both publishers rebuild and check their own Metal wheels. Run a streaming smoke test using local GGUF weights (weights are not bundled): diff --git a/pyproject.toml b/pyproject.toml index 4a0f3c1..58edc32 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "qwentts-cpp-python" -version = "0.4.0" +version = "0.4.1" description = "Python ctypes bindings and wheel packaging for qwentts.cpp" readme = "README.md" license = "MIT" diff --git a/src/qwentts_cpp/__init__.py b/src/qwentts_cpp/__init__.py index e4d97a1..a82494e 100644 --- a/src/qwentts_cpp/__init__.py +++ b/src/qwentts_cpp/__init__.py @@ -16,7 +16,7 @@ ) from .models import GGUF_REPO, resolve_gguf_paths -__version__ = "0.4.0" +__version__ = "0.4.1" __all__ = [ "GGUF_REPO",