Skip to content

ENH: out-of-tree Pyodide builds in CI for pandas #57891

Closed
@agriyakhetarpal

Description

@agriyakhetarpal

Feature Type

  • Adding new functionality to pandas
  • Changing existing functionality in pandas
  • Removing existing functionality in pandas

Problem Description

This feature proposes adding out-of-tree Pyodide builds for pandas on its own CI. As opposed to in-tree builds in the Pyodide packages repository (see the recipe), this will enable building WASM wheels (which are 32-bit)1 via the Emscripten toolchain on GitHub Actions.

In my most recent work assignment, I am working on improving the interoperability for the Scientific Python ecosystem of packages with Pyodide and with each other (Quansight-Labs/czi-scientific-python-mgmt#18), which shall culminate with efforts towards bringing interactive documentation for these packages where they can then be run in JupyterLite notebooks, through nightly builds and wheels for these packages pushed to PyPI-like indices on Anaconda.org (Quansight-Labs/czi-scientific-python-mgmt#19) at and during a later phase during the project.

Feature Description

  1. A CI pipeline via GitHub Actions that builds and tests pandas in an activated virtual environment created and handled by Pyodide.
  2. Fixing up the tests wherever applicable, conforming to limitations that come from the Emscripten toolchain (current limitations include the lack of threading support and for running subprocesses, limited file system access, and others).

Alternative Solutions

N/A

Additional Context

I notice that the build and the tests are going to be split into separate packages in #53007, which can be handled (I assume that the imminent pandas-tests package will be a pure Python one, which does not need compilation for Pyodide – they are supported by default).

cc @lithomas1 for any additional comments here, as required. Thomas and I have been in conversation about this just about a fortnight ago, and we had agreed that reducing the size of the wheels would be helpful for the WebAssembly rendition of pandas as well – it is particularly useful where reducing bandwidth usage is in the question. I am happy to follow along on further developments on that regard.

Footnotes

  1. It is to be noted that DEPS: drop 32-bit support #15889 removed 32-bit support by removing the wheels, but if I understand correctly, pandas continues to be supported when building from source on 32-bit platforms.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BuildLibrary building on various platformsEnhancement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions