PyWry: Cross-Platform Rendering Engine in Python

· web coding · Source ↗

TLDR

  • PyWry wraps PyTauri to let a single Python codebase target Jupyter widgets, FastAPI browser deployments, and native desktop windows without Electron.

Key Takeaways

  • Uses native OS webviews via PyTauri instead of bundling Chromium, cutting the Electron weight while keeping standard HTML/CSS/JS.
  • One codebase covers three targets: Jupyter notebooks via anywidget, browser via FastAPI WebSockets, and standalone desktop executables.
  • UI components (toolbars, modals, toasts, inputs) are declared as Pydantic models and placed into 7 fixed layout positions.
  • Two-way Python-JavaScript event bridge ships with built-in support for AgGrid, Plotly, and TradingView.
  • Enterprise features included: OAuth2 auth, Redis-backed RBAC, hot reloading, and 60+ CSS theming variables.

Hacker News Comment Review

  • The core binary is a 30.8 MB vendored ext_mod.cpython shared object from the pytauri project, meaning PyWry is essentially a Python-friendly wrapper around PyTauri rather than an independent rendering engine.
  • Commenters questioned the framing: “rendering engine” carries 3D graphics connotations, and the actual product is closer to a web-based desktop UI toolkit deployed via Tauri.
  • The integration was called Rube-Goldberg-like, with skepticism about real-world adoption given the opinionated stack; Flet was raised as a comparable run-everywhere Python UI alternative with a simpler mental model.

Notable Comments

  • @simonw: posted a working uv run --with pywry one-liner, confirming zero-install tryout is possible.
  • @simonw: dug into the wheel and identified the 30.8 MB pytauri_wheel/ext_mod binary as the heavy-lifting component.

Original | Discuss on HN