feat(packaging): PyPI distribution for dimos-viewer#4
Merged
spomichter merged 4 commits intomainfrom Mar 4, 2026
Merged
Conversation
- Rename binary from custom_callback_viewer to dimos-viewer - Remove unused custom_callback_app binary - Add pyproject.toml with maturin build backend (bindings=bin) - Add dimos_viewer Python package with main(), launch(), _find_viewer_binary() - Add __main__.py for 'python -m dimos_viewer' support - Add comprehensive Python tests (wrapper, binary, install) - Replace build-viewer.yml with build-and-publish.yml CI workflow - Build matrix: linux-x64, linux-arm64, macos-arm64 - Python versions: 3.10, 3.11, 3.12, 3.13 - Rust tests + Python tests - PyPI publish on tag push (v*) via maturin upload - GitHub Release with wheel artifacts - Version 0.1.0 (independent semver, based on Rerun 0.30.0-alpha.1) - Add README with usage, platform support, and versioning docs Closes DIM-646 (dimos-viewer side)
1 task
- Version tracks Rerun base: 0.30.0a1 (based on Rerun 0.30.0-alpha.1) - Remove comms/ (689 lines TCP protocol, unused) - Remove panel.rs (demo UI wrapper, unused) - Remove app.rs (demo app binary, already removed from Cargo.toml) - lib.rs now only exports interaction module
21b2632 to
63d28cb
Compare
Rework CI workflow to follow Rerun's patterns: - Renamed build-and-publish.yml → build-viewer.yml - Added push-to-main trigger alongside PR and tag triggers - Simplified wheel build: removed redundant --interpreter flag (bindings='bin' produces py3-none universal wheels) - Added concurrency group to cancel stale runs - Added workflow_dispatch for manual triggers - Cleaner job structure: check → build-wheel → test-wheel → publish → release - Uses GitHub Artifacts for wheel storage (not GCS) - Publish to PyPI via maturin upload on v* tags only Rerun's reusable_build_and_upload_wheels.yml cannot be called directly because it is tightly coupled to building rerun_py (uses pixi, GCS sccache, rerun-cli download, and rerun_py-specific feature flags). Instead, this workflow follows the same structural patterns: platform matrix, manylinux_2_28 compat, artifact upload per platform.
vikastechnoai-ai
pushed a commit
to vikastechnoai-ai/Ai-voice-cmd-control
that referenced
this pull request
Mar 21, 2026
Add [project.optional-dependencies] viewer = ['dimos-viewer>=0.1.0'] to enable 'pip install dimos[viewer]' for the interactive Rerun viewer with click-to-navigate support. Note: dimos-viewer is not yet published to PyPI. The uv.lock will resolve after the first release of dimos-viewer (see dimensionalOS/dimos-viewer#4). Once published, run 'uv lock' to update the lockfile. Relates to DIM-646
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Closes DIM-646
The custom Rerun viewer binary requires users to compile from source. This PR adds maturin-based Python packaging so
pip install dimos-viewerjust works.Changes
custom_callback_viewer→dimos-viewercustom_callback_appbinarypyproject.toml(maturin, bindings=bin)dimos_viewerPython package (main, launch, _find_viewer_binary)build-viewer.yml— clean maturin-based workflowbindings = "bin"produces universal py3 wheels (no per-interpreter builds)maturin uploadon tag pushWhy not call Rerun's reusable workflows directly?
reusable_build_and_upload_wheels.ymlis tightly coupled torerun_py:Instead,
build-viewer.ymlfollows the same structural patterns while building the right package.How to Test
git checkout feat/pypi-packaging maturin build --manifest-path examples/rust/custom_callback/Cargo.toml --release --out dist/ pip install dist/dimos_viewer-*.whl pytest examples/rust/custom_callback/tests/ -v