bytecodealliance / bytecodealliance/componentize-py
Download dependencies automatically
- 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
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