Skip to content

EMRY-068: ship the emry CLI in the wheel - #120

Merged
vxfemboy merged 1 commit into
mainfrom
emry-cli-in-wheel
Jul 19, 2026
Merged

EMRY-068: ship the emry CLI in the wheel#120
vxfemboy merged 1 commit into
mainfrom
emry-cli-in-wheel

Conversation

@vxfemboy

Copy link
Copy Markdown
Member

Problem

The 0.2.0 wheel shipped only the SDK + emry._native extension. The emry command is a Rust binary (emry-cli) that maturin never bundled, and there was no console script — so pip install emry gave no emry watch/web/compare/export, and the SDK's live dashboard (which launches emry) silently degraded.

Fix (ruff/uv-style bundling)

  • scripts/build-cli.sh compiles emry into python/emry/_bin/ at wheel-build time; [tool.maturin] include bundles it (wheel only — the sdist rebuilds from source).
  • Console script emry = emry._cli:main + python -m emry: the shim execs the bundled binary.
  • live.py resolves the bundled binary directly (works even when the venv bin/ isn't on PATH; falls back to emry on PATH for source installs).
  • run(name=...) alias for the positional run name (papercut EMRY-002: Event types + Phase enum #3).
  • CI wheels job builds the CLI and verifies emry --version + python -m emry from a clean --no-index install — so the bundling is proven on every PR.
  • Release builds the binary inside the manylinux_2_28 container (cmake+perl for rustls/aws-lc-rs) so the bundled binary matches the wheel's glibc floor.
  • Bumped to 0.2.1.

Verified locally: built the wheel, installed into a clean venv, emry --versionemry 0.2.1, python -m emry runs --help works, SDK imports, name= alias + both/neither error paths correct. Python coverage 94.4%.

Closes #119

The 0.2.0 wheel shipped only the SDK + native extension, so `emry
watch/web/compare/export` weren't runnable after `pip install emry`, and
the SDK's live dashboard (which launches `emry`) silently degraded.

- Compile the emry-cli binary into python/emry/_bin/ at wheel-build time
  (scripts/build-cli.sh) and bundle it; expose it as the `emry` console
  script + `python -m emry` (emry._cli execs the bundled binary).
- live.py resolves the bundled binary directly, so the live dashboard
  works even when the interpreter's bin/ isn't on PATH.
- run(name=...) alias for the positional run name.
- CI wheels job builds + verifies `emry --version` from a clean install;
  release builds the binary inside the manylinux_2_28 container.
- Bump to 0.2.1.
@vxfemboy
vxfemboy merged commit a543d2a into main Jul 19, 2026
8 checks passed
@vxfemboy
vxfemboy deleted the emry-cli-in-wheel branch July 19, 2026 05:32
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.

EMRY-068: emry CLI missing from the pip wheel

1 participant