Skip to content

Epic: PyPI wheel support in cx-wasm (repodata v3 / conda-pypi) #3

Description

@jezdez

What?

Enable conda install <package> in the browser to install pure Python wheels from PyPI, extending cx-wasm beyond emscripten-forge packages. This uses the conda-pypi plugin and the upcoming repodata v3 format.

Why?

emscripten-forge has a limited package set. Many pure Python packages (requests, click, etc.) are available as noarch wheels on PyPI. The conda-pypi-test channel indexes ~500K pure Python wheels. With v3 repodata support, the solver can resolve these alongside conda packages.

User impact

  • %conda install requests works in the browser without needing the package on emscripten-forge
  • Massive expansion of available packages in JupyterLite notebooks

Goals

  • cx-wasm solver handles v3.whl repodata records
  • Wheel extraction works in MEMFS via conda-pypi extractor
  • End-to-end %conda install <pypi-package> in JupyterLite

Tasks

  • Parse v3.whl records in sharded.rs (parse_repodata_text currently ignores experimental_v3)
  • Handle absolute download URLs from WhlPackageRecord entries (pointing to files.pythonhosted.org)
  • Address repodata size (~500K packages in repodata.json — need .zst compression or subsetting)
  • Include conda-pypi extractor and installer library in the JupyterLite environment
  • Disable conda-pypi post_command hooks in WASM (subprocess-dependent, would cause confusing errors)

This epic is blocked by:

References

  • cx-wasm already uses rattler_conda_types v0.43.5 which supports v3.whl deserialization
  • Relevant CEPs: CEP 111, CEP 145, CEP 146
  • See PLAN.md §6 "Future: PyPI wheel support via conda-pypi" for full analysis

Metadata

Metadata

Assignees

No one assigned

    Labels

    cx-wasmBrowser/WASM relatedepicA collection of related tickets

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions