pyodide / pyodide/pyodide-lock

RFC 2: partial lockfiles

Open
#9 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
8
Forks
12
Avg merge
5d 7h
Merged PRs (30d)
1

Description

As proposed by @bollwyvl https://github.com/pyodide/pyodide-lock/issues/4#issuecomment-1608118850

The way the in-flight jupyterlite PR works is by:

  • generating partial lockfiles
    • these wouldn't be sufficient to run anything
  • layering them, by name, on top of the as-loaded runtime with whatever index is hosted with it
    • this could be hoisted/normalized in pyodide's initializer with e.g. extraLockUrls: []
      • this could be non-destructive, which might be better, and potentially support "punch-out" by setting a name to a null (ick!)

The concrete things this solves there:

  • auto-install-on-import
  • replacing packages in the pyodide stdlib
    • IPython has an optional dependency on jedi/parso (but still downloads them)
      • we haven't been able to make jedi work well enough in jupyterlite to use, so would rather replace it with dummy shims to save a couple megabytes on the wire
    • per-PR docs builds of packages that are in the pyodide stdlib and really just want one different

Alternative proposals: https://github.com/pyodide/pyodide-lock/issues/8 https://github.com/pyodide/pyodide-lock/issues/10

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the linked jupyterlite PR and the referenced pyodide-lock issues, then inspect how the pyodide initializer currently loads lockfiles. The issue needs a settled design for partial lockfile layering and explicit acceptance criteria before implementation can be considered done.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.