sdk/runanywhere-python/PACKAGING.md
runanywhere ships as a pybind11 native wheel (the _core extension over the rac_* C ABI)
plus a pure-Python facade. Because the wheel carries a compiled extension + vendored sidecar libs
(onnxruntime/sherpa), there is one wheel per platform + Python version — there is no universal
wheel. The sdist is source-only.
| Artifact | Built by | Repaired by | Sidecar location |
|---|---|---|---|
runanywhere-*-win_amd64.whl | scikit-build-core | delvewheel | runanywhere.libs/ |
runanywhere-*-manylinux_2_35_x86_64.whl | scikit-build-core | auditwheel | runanywhere.libs/ |
runanywhere-*-macosx_*_arm64.whl | scikit-build-core | delocate | runanywhere/.dylibs/ |
runanywhere-*.tar.gz (sdist) | scikit-build-core | — | source only (no binaries) |
CI (.github/workflows/pr-build.yml) already builds + repairs + validates + hermetic-tests the
wheel on python-windows, python-linux, and python-macos. The release just collects those
artifacts.
twine upload)sdk/runanywhere-commons/VERSION; scripts/release/sync-versions.sh propagates
it into pyproject.toml. Confirm pip show/__version__ match.python -m build --sdist -o dist.python scripts/validate_public_packages.py --dist dist --expected-version <VERSION> (asserts: _core + sidecar libs present in the right dir per
platform, no host-path leaks in text/metadata members, the sdist has sources only, version matches).twine check dist/* — long-description + metadata render.pip install <wheel> → import runanywhere (no fastapi/protobuf), runanywhere version,
runanywhere models.pip install "<wheel>[server]" → runanywhere serve boots; import runanywhere still
pulls in no fastapi.pip install "<wheel>[rag]" → from runanywhere.rag import RagSession imports.twine upload --repository testpypi dist/*, then
pip install -i https://test.pypi.org/simple/ runanywhere in a clean venv and re-run the smoke.twine upload dist/*.numpy + stdlib only). fastapi/uvicorn live under the
[server] extra; protobuf under [rag].sdist.include scopes the sdist to runanywhere/ + native/ so it stays a few MB (not the whole
monorepo).-C cmake.define.RAC_GPU_CUDA=ON, etc.) producing separate
distributions — not part of the default PyPI wheel.