bytecodealliance / bytecodealliance/componentize-py

Download dependencies automatically

Open
#25 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
277
Forks
51
Avg merge
12h 10m
Merged PRs (30d)
10

Description

Per [yesterday's Python guest tooling](https://github.com/bytecodealliance/meetings/pull/152) meeting, we'd like `componentize-py` to download any dependencies found in the application's `pyproject.toml` (including transitive dependencies), placing them in a temporary directory for use while building the component.

Similar to [micropip](https://micropip.pyodide.org/en/stable/project/api.html), `componentize-py` should grab any pure Python packages from PyPI, only looking to an alternative repo for packages with native extensions. We (i.e. the Bytecode Alliance) will need to maintain this repo and populate it with WASI builds of popular projects until WASI wheels are standardized and published upstream to PyPI.

To start with, `componentize-py` could shell out to e.g. `pip --install --platform wasi-sdk-22 --abi cp311 --root `, but eventually we'd like to make it fully self-contained (i.e. not require Python or `pip` to be installed).

Contributor guide

Open the contributing guide

Research direction

Start at the componentize-py dependency-handling entry point and review the application's pyproject.toml, the linked guest-tooling meeting discussion, and the micropip behavior. The initial scope mentions using pip with wasi-sdk-22, cp311, and a temporary directory; done would include transitive pure-Python dependencies and an alternative source for native-extension packages, with a later self-contained mode remaining a larger goal.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust, wasm
Domain
build-system, devtools, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.