Skip to content

Add ci for pyodide marimo #502

Closed
Closed

Description

@paddymul

Checks

  • I have checked that this enhancement has not already been requested

How would you categorize this request. You can select multiple if not sure

Developer Experience/CI (feature to make it easier to devlop on Buckaroo)

Enhancement Description

it fails because of fasparquet error. make sure we build pyodide marimo in ci, check to make sure renders in browser
https://marimo.io/p/@paddy-mullen/buckaroo-styling-gallery

Pseudo Code Implementation

No response

Prior Art

n/a

Activity

  1. paddymul commented on Feb 26, 2026

    @paddymul
    CollaboratorAuthor

    Implementation Plan

    Overview

    Add a CI job that tests Buckaroo in a pyodide/marimo WASM environment.

    Steps

    1. Identify the blocker — the issue mentions fastparquet fails in pyodide. Determine:

      • Is fastparquet imported unconditionally? → Make it conditional
      • Can we use a WASM-compatible serialization fallback (JSON, or Arrow IPC via pyarrow-wasm)?
    2. Make fastparquet optional — wrap import fastparquet in try/except everywhere it's used. Fall back to JSON serialization in pyodide environments (detect via sys.modules.get('pyodide')).

    3. Add CI job in .github/workflows/:

      • Use pyodide-build or a Playwright-based approach that loads pyodide in a browser
      • Install buckaroo via micropip.install("buckaroo")
      • Run a basic smoke test: create a DataFrame, render with BuckarooWidget, verify no errors
    4. Coordinate with Re-enable full WASM marimo Playwright test suite #513 — the WASM marimo Playwright tests are related. This CI job could be the same infrastructure.

    Files to modify

    • buckaroo/serialization_utils.py — conditional fastparquet import
    • .github/workflows/ — new or extended CI job
    • pyproject.toml — make fastparquet an optional dependency if not already

    @codex

  2. chatgpt-codex-connector commented on Feb 26, 2026

    @chatgpt-codex-connector

    Summary

    • Made fastparquet non-mandatory for base installs by removing it from core dependencies and introducing a new optional parquet extra (fastparquet>=2024.5.0). This helps Pyodide installs avoid pulling an incompatible package by default. pyproject.tomlL34-L41 pyproject.tomlL108-L111
    • Added explicit Pyodide runtime detection in serialization utilities and introduced a fallback path in to_parquet:
    • Added a new CI workflow job PyodideBuckarooSmoke that runs a browser-based Playwright smoke test:
      • loads Pyodide in Chromium,
      • runs micropip.install("buckaroo"),
      • creates a pandas DataFrame and BuckarooWidget,
      • fails if browser/page errors are detected. .github/workflows/checks.ymlL526-L587

    Testing

    • ✅ python -m py_compile buckaroo/serialization_utils.py
    • ⚠️ pytest -q tests/unit/serialization_utils_test.py (failed in this environment because pandas is not installed)
    • ⚠️ uv sync --dev --extra test (failed due network/tunnel fetch error to PyPI metadata in this environment)

    Committed on branch work as:

    • e396219 — Add pyodide smoke CI and make fastparquet optional.

    Also created the follow-up PR via the make_pr tool with title:

    • “Follow-up: make fastparquet optional and add Pyodide Buckaroo smoke CI”

    View task →

  3. paddymul commented on Feb 26, 2026

    @paddymul
    CollaboratorAuthor

    Related: PRs #532, #509, #549

    The fastparquet blocker will be resolved when PR #549 merges. The WASM marimo CI is partially working via PR #532's approach. See also #513 (re-enable full WASM tests).

  4. paddymul commented on May 17, 2026

    @paddymul
    CollaboratorAuthor

    Done. TestWASMMarimo job in .github/workflows/checks.yml runs scripts/test_playwright_wasm_marimo.sh against packages/buckaroo-js-core/pw-tests/wasm-marimo.spec.ts (Pyodide marimo build) on every CI run. Re-enabling the full suite (currently smoke-only) is tracked in #513.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions