Skip to main content

fg-data-profiling-wasm

Pyodide-friendly fork of fg-data-profiling (formerly ydata-profiling / pandas-profiling).

You do not compile this package to WASM. Upstream already ships as a pure-Python wheel (py2.py3-none-any). This fork only does dependency surgery so it can install and run under Pyodide.

What changed vs upstream

Change Why
Drop hard deps: numba, minify-html, phik Native / JIT; broken or impractical in browser WASM
Default html.minify_html = False Avoid lazy-importing the Rust minify-html extension
Soft-fail if minify is requested but missing Safer in constrained environments
Keep phi_k off (already upstream default) Avoid needing phik
Package name fg-data-profiling-wasm Distinguish the Pyodide wheel from upstream
Allow pandas>=3 (<4) Upstream still pins <3.0; this fork patches typeset/string paths

Optional native extras remain under [project.optional-dependencies] native for desktop use.

Layout

src/                  # vendored upstream + patches
patches/              # 0001 pyodide + 0002 pandas3 + 0003 display + 0004 font scale (reapplied on sync)
scripts/sync-upstream.sh
upstream.lock.json    # pinned upstream ref + commit
pyodide/              # install helper + dependency matrix
pyproject.toml        # Pyodide-friendly dependency set

Upgrading from upstream

Pinned upstream lives in upstream.lock.json.

# Is upstream ahead of our lock?
make check-upstream
# or: ./scripts/sync-upstream.sh --check

# Pull latest develop (or whatever ref is in the lock), re-apply patches,
# refresh dependency pins, update the lockfile
make sync
# or: ./scripts/sync-upstream.sh

# Sync a release tag / other ref
make sync-ref REF=v4.9.0
# or: ./scripts/sync-upstream.sh --ref v4.9.0

# After a successful sync, bump our PyPI version
./scripts/sync-upstream.sh --bump patch

# If a patch no longer applies: fix src/ by hand, then regenerate the patch series
./scripts/sync-upstream.sh --regen-patches

Typical release flow after upstream moves:

./scripts/sync-upstream.sh --ref develop --bump patch
python -m build
# review git diff, commit, push, twine upload dist/*

A weekly GitHub Action (.github/workflows/upstream-check.yml) opens/comments on an issue when the lock is behind.

Build a wheel

python -m pip install build
python -m build    # → dist/fg_data_profiling_wasm-*-py2.py3-none-any.whl

Current artifact:

  • dist/fg_data_profiling_wasm-0.1.1-py2.py3-none-any.whl (purelib; PyPI-compatible; pandas <4)

Publish to PyPI (GitHub Actions)

The package is not on PyPI yet. Publishing is automated via Trusted Publishing (OIDC) — no long-lived API token in the repo.

One-time PyPI setup

  1. Sign in at https://pypi.org/
  2. Open Publishing → Add a new pending publisher (project does not exist yet):
    • PyPI project name: fg-data-profiling-wasm
    • Owner: awesome-wasm-packages
    • Repository: fg-data-profiling-wasm
    • Workflow name: publish.yml
    • Environment name: pypi
  3. In GitHub → Settings → Environments → create environment pypi (optional protection rules / required reviewers).

Publish a version

# bump version in VERSION + pyproject.toml (or)
./scripts/sync-upstream.sh --bump patch
git add -A && git commit -m "Release $(tr -d '[:space:]' < VERSION)"
git tag "v$(tr -d '[:space:]' < VERSION)"
git push && git push --tags

Then create a GitHub Release for that tag (or use the UI). The Publish to PyPI workflow builds the wheel and uploads it.

You can also run the workflow manually: Actions → Publish to PyPI → Run workflow.

Use in Pyodide / PyConsole

Package name on PyPI is fg-data-profiling-wasm; import name is data_profiling.

import micropip
await micropip.install("fg-data-profiling-wasm")

import pandas as pd
from data_profiling import ProfileReport

df = pd.DataFrame({"a": [1, 2, 3], "b": ["x", "y", "x"]})
report = ProfileReport(
    df,
    minimal=True,
    progress_bar=False,
    correlations={"phi_k": {"calculate": False}},
    html={"minify_html": False},
)
html = report.to_html()

Notes for PyConsole (Pyodide 314 / Python 3.14):

  • Use >=0.1.2 (older releases reject Python 3.14 / pin numpy/scipy/matplotlib too tightly).
  • Auto-install-on-import will not find this package from import data_profiling — install by PyPI name first.
  • Prefer minimal=True and turn off phi_k / HTML minify for speed and missing native deps.

Display

PyConsole already detects ProfileReport and calls to_html() (no package API required). This fork also adds:

  • report.display() — js.render in PyConsole, else Jupyter to_notebook_iframe()
  • _repr_html_() — returns an iframe HTML string (works without IPython)
report = ProfileReport(df, minimal=True, progress_bar=False)
report  # last expression: PyConsole / Jupyter rich display
# or: report.display()

Helpers live in pyodide/install.py; dependency notes in pyodide/DEPS.md.

Difficulty (recap)

Goal Difficulty
Install this pure wheel in Pyodide Easy
Usable ProfileReport (core EDA, minimal=True) Medium
Full upstream fidelity (phik, minify, numba-shaped features) Hard / skip

Upstream

Based on Data-Centric-AI-Community/fg-data-profiling. Tracked commit is in upstream.lock.json. MIT-licensed; see LICENSE.

Release files for fg-data-profiling-wasm 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fg-data-profiling-wasm 0.2.0
File Size Uploaded
fg_data_profiling_wasm-0.2.0.tar.gz 313.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fg-data-profiling-wasm 0.2.0
File Interpreter ABI Platform
fg_data_profiling_wasm-0.2.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 710.9 kB

Release files / fg_data_profiling_wasm-0.2.0.tar.gz

Download URL fg_data_profiling_wasm-0.2.0.tar.gz
Size 313.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3bf7bbdd908e385f511c1165d812c96633d37670dafd839494b433de74d9c901
BLAKE2b-256 checksum
How to use checksums
81b50c9064aef676ce54f4904f288dd824f9316eb38e0838c0636dabad1b517a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Release files / fg_data_profiling_wasm-0.2.0-py2.py3-none-any.whl

Download URL fg_data_profiling_wasm-0.2.0-py2.py3-none-any.whl
Size 398.0 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
308a4d5fd327534da7cdcf9ab84723008105762db565df7fb91637c5186beb09
BLAKE2b-256 checksum
How to use checksums
119d56d6e40277f7edd85de3a3ae4e47b0b6fbc2bc0834499bed3236eb86231a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page