Python Client

All notable changes to the GoFigr Python client (gofigr).

Current version: v2.0.1


v2.0.1 — March 5, 2026

Patch release improving widget resilience and @reproducible ergonomics.

Improvements

  • Graceful anywidget fallback — When anywidget is missing or its JupyterLab extension is not registered, interactive figures now fall back to non-interactive rendering with a warning banner instead of crashing

  • check_anywidget_health() utility — New diagnostic function for step-by-step troubleshooting of widget issues (checks package installation, traitlets, Jupyter kernel, and provides frontend extension guidance)

  • Bare @reproducible support — The decorator can now be used without parentheses (@reproducible is equivalent to @reproducible())

Files Changed

  • gofigr/reproducible.py — +142 lines: _ANYWIDGET_WARNING_HTML, check_anywidget_health(), _run_interactive_fallback(), updated reproducible() signature


v2.0.0 — March 5, 2026

Major release introducing Clean Room reproducibility and Pyodide support.

Clean Room: Reproducible Figures

  • @reproducible decorator — Capture source code, parameters, and package dependencies with every published figure

  • Interactive parameter widgetsSliderParam, DropdownParam, CheckboxParam, TextParam, and StaticParam for in-browser figure re-rendering

  • Parameter serialization supports JSON (primitives) and Parquet (DataFrames) with 100MB size limit

  • Cross-language parameter model enables future R client support

Pyodide Support

  • PyodidePublisher — Publish figures from browser-based Python environments (e.g., JupyterLite)

  • SVG added to default Pyodide image formats for vector export

  • Guarded all optional imports (IPython, blake3, git, py3Dmol, etc.) for restricted environments

Performance & Compatibility

  • API v1.4Workspace.list() uses shallow serialization, significantly speeding up configure() in Jupyter

  • Watermark stabilization — Padding no longer causes figure size shifts on publish

  • Python 3.12 compatibility — Replaced pkg_resources with pathlib.Path and updated importlib.resources APIs

  • Switched from pyqrcode to pyqrcodeng

  • Added pyarrow dependency for Parquet support

Breaking Changes

  • API version bumped from v1.3 to v1.4 — requires server v2.5.0+

  • Workspace.list() no longer returns nested analyses/assets/stories; call .fetch() on individual workspaces for full details


v1.3.2 and earlier

Previous releases focused on core figure publishing, Jupyter integration, and workspace management. See the GitHub repositoryarrow-up-right for the full commit history.

Last updated