question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Move micropip to a separate repo in the org

See original GitHub issue

Continuing with the effort of making the code base more approachable (https://github.com/pyodide/pyodide/issues/2014), I would propose to move micropip to a separate repo in the Pyodide org.

Advantages

  • mich faster iteration cycle to change anything in micropip. CI should take minutes not an hour as currently.
  • for new contributors, it’s also much easier to start since it’s a pure Python package they don’t need to deal with the rest of the build system.
  • can update micropip for a given Pyodide release by loading the pure Python wheel from PyPi with pyodide.loadPackage. The release schedule of micropip can become independent from Pyodide.
  • there are several other projects in this space (e.g. emscripten-forge, https://github.com/ethanhs/python-wasm) and this would make it easier to reuse and contribute back fixes if necessary. There is still the FFI question which is more difficult, but right now even if emscripten-forge wanted to support installing Pyodide packages (and assuming binary compatibility) they have no other way short of vendoring it. Similarly, I’m hoping this could encourage some of the micropip related fixes from JupyterLite to be contributed upstream.

Advantages

  • a bit more setup work, but we have done this for a lot of packages now, so it’s mostly copy-pasting
  • makes it harder to make large changes across different components of Pyodide, though I think micropip is pretty stable now and there are rarely PRs that need to change both the internals and micropip at the same time.

Issue Analytics

  • State:closed
  • Created a year ago
  • Reactions:1
  • Comments:5 (5 by maintainers)

github_iconTop GitHub Comments

1reaction
hoodmanecommented, Sep 13, 2022

I approve of this proposal. The idea of updating micropip more often than Pyodide is particularly exciting.

One thought is that we should consider having a way to override or patch _compat_in_pyodide in case something has to change in that file. micropip uses the following four internals:

  • API.loadBinaryFile
  • API.loadDynlib
  • API.repodata_packages
  • API.repodata_info

We should mark these to note that they are used by micropip. We might want to add some specific functions to pyodide to get repodata_packages and repodata_info. Also, loadDynlib takes a boolean as the second parameter, maybe we should change it to an options object for forwards compatibility.

0reactions
rthcommented, Sep 18, 2022
Read more comments on GitHub >

github_iconTop Results From Across the Web

Micropip API — Version 0.21.3 - Pyodide
Install the given package and all of its dependencies. See loading packages for more information. If a package is not found in the...
Read more >
Migrate Repositories from/to one Organisation to another
Migrate repo from BitBucket to GitHub, including all branches and commits. Can also use this to migrate a repository from one Organization to...
Read more >
Pyodide - Read the Docs
While micropip.install is written in Python and pyodide. ... The micropip package was moved to a separate repository pyodide/micropip.
Read more >
A First Look at PyScript: Python in the Web Browser
The micropip module and the implicit loop variable, ... Otherwise, the browser will refuse to fetch data from a different origin (protocol, ...
Read more >
Identification of functionally distinct macrophage ... - eLife
https://cdn.elifesciences.org/articles/58686/elife-58686-fig1-data1-v1. ... Movies showing localisation and movement of cells labelled using ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found