Vuer

v0.0.80rc2 - Workspace Link API & Image Encoders

This release candidate adds convenience methods for serving dynamic content and in-memory images.

New Features

Link callables to URL paths for serving dynamic content:

python
from vuer import Vuer
from vuer.workspace import jpg, png

vuer = Vuer()

# Serve in-memory images
vuer.workspace.link(lambda: jpg(camera.frame), "/live/frame.jpg")
vuer.workspace.link(lambda: png(depth_map), "/depth.png")

# JSON endpoints
vuer.workspace.link(lambda: {"status": "ok"}, "/api/status")

# With request parameter for query args
vuer.workspace.link(lambda r: jpg(render(r.query["angle"])), "/render.jpg")

Features:

  • Follows os.link(src, dst) convention: source first, destination second
  • Auto-detects content-type from MIME_TYPES (.jpgimage/jpeg)
  • Optional request parameter via signature inspection
  • Supports bytes, dict/list (JSON), Blob, and string return types

Image Encoders

New encoder utilities for serving in-memory images:

python
from vuer.workspace import jpg, png, b64jpg, b64png

# Encode as bytes (for HTTP responses)
jpg(image, quality=90)   # JPEG bytes (strips alpha)
png(image)               # PNG bytes (supports alpha)

# Encode as base64 data URIs (for embedding in HTML/JSON)
b64jpg(image)            # "data:image/jpeg;base64,..."
b64png(image)            # "data:image/png;base64,..."

Images should be numpy arrays or torch tensors with values in [0, 1] range.

Custom MIME Types

MIME_TYPES is now a MimeTypes class with a guess() method:

python
from vuer.workspace import MIME_TYPES

# Add custom types
MIME_TYPES[".npy"] = "application/x-npy"
MIME_TYPES[".h5"] = "application/x-hdf5"

# Guess content-type
MIME_TYPES.guess("data.npy")  # "application/x-npy"

New Exports

python
from vuer import Workspace, Blob
from vuer.workspace import jpg, png, b64jpg, b64png, MIME_TYPES