docs/guides/lint_rules/rules/incompatible_package.md
š WASM ā Not Fixable
MW003: Packages in the dependency tree incompatible with WASM.
Reads the notebook's PEP 723 dependencies, filters out requirements whose
PEP 508 markers exclude Emscripten (for example
torch; sys_platform != 'emscripten'), walks the transitive dependency tree
via installed metadata, then queries PyPI's JSON API to check whether each
package has a py3-none-any, emscripten, or wasm32 wheel available.
Packages only in pyodide-lock.json are also accepted.
Pyodide can only install pure-Python wheels via micropip, or packages that are pre-built in the Pyodide distribution. Packages with only platform-specific native wheels will fail to install in the browser.
Problematic:
import jax # jaxlib (transitive dep) has only native wheels
Not flagged:
import numpy # Native, but pre-built in Pyodide
Not flagged:
import requests # Pure Python wheel on PyPI
Not flagged (PEP 723 metadata):
# /// script
# dependencies = ["jax; sys_platform != 'emscripten'"]
# ///
# jax is excluded from WASM checks via PEP 508 marker