Ozobot forked the pyodide repository to allow customized builds of the pyodide npm package.
The customization only happens in the CI configuration and in the pyodide's package.json file.
- Build step was updated in main.yml workflow to build the
jedi
andscipy
packages. - Pyodide's package.json was updated to reference correctly the @ozobot namespace and fork.
- Additional step that automatically patches the pyodide's
package.json
to contain all the files that are part of the build was added. In the upstream pyodide repo, the content of thepackage.json
file is hardcoded and thefiles
section doesn't reflect what modules were actually built. Therefore, we needed to do adjustments in our fork, see the step Fixup package.json files to include built packages in the main workflow file. - Action that builds and deploys the pyodide npm package on tag push. The tag has to be prefixed
ozobot/
for the workflow to run.
The change to pyodide upstream (main
branch) are maintained in the master
branch of this repo. This is the suggested flow to build updated version of pyodide
:
- Pull the branches and tags from upstream repo:
git fetch --tags https://github.com/pyodide/pyodide
- Rebase the
master
branch on the particular pyodide version to be built:git rebase --onto 0.25.1 0.24.1 master
(replace0.25.1
with the pyodide version you want to deploy - preferably a release version - replace0.24.1
the versionmaster
branch is currently based on) - Resolve conflicts during rebase (if any).
- Force-push the
master
branch (git push --force origin master
), the CI will build the version with the Ozobot specific patches applied. - If the build passes OK, tag the current version, prefix it with
ozobot/
:git tag --annotate --sign ozobot/0.25.1
- Push the tag to deploy the version to Ozobot's Github npm registry:
git push origin ozobot/0.25.1
- Bump the version of the
pyodide
npm package in projects that use it:web$ npm install --save @ozobot/pyodide@latest
Pyodide is a Python distribution for the browser and Node.js based on WebAssembly.
Pyodide is a port of CPython to WebAssembly/Emscripten.
Pyodide makes it possible to install and run Python packages in the browser with micropip. Any pure Python package with a wheel available on PyPi is supported. Many packages with C extensions have also been ported for use with Pyodide. These include many general-purpose packages such as regex, PyYAML, lxml and scientific Python packages including NumPy, pandas, SciPy, Matplotlib, and scikit-learn.
Pyodide comes with a robust Javascript ⟺ Python foreign function interface so that you can freely mix these two languages in your code with minimal friction. This includes full support for error handling, async/await, and much more.
When used inside a browser, Python has full access to the Web APIs.
Try Pyodide in a REPL directly in your browser. For further information, see the documentation.
Pyodide offers three different ways to get started depending on your needs and technical resources. These include:
- Use a hosted distribution of Pyodide: see the Getting Started documentation.
- Download a version of Pyodide from the releases page and serve it with a web server.
- Build Pyodide from source
- Build natively with
make
: primarily for Linux users who want to experiment or contribute back to the project. - Use a Docker image: recommended for Windows and macOS users and for Linux users who prefer a Debian-based Docker image with the dependencies already installed.
- Build natively with
Pyodide was created in 2018 by Michael Droettboom at Mozilla as part of the Iodide project. Iodide is an experimental web-based notebook environment for literate scientific computing and communication.
Iodide is no longer maintained. If you want to use Pyodide in an interactive client-side notebook, see Pyodide notebook environments.
Please view the contributing guide for tips on filing issues, making changes, and submitting pull requests. Pyodide is an independent and community-driven open-source project. The decision-making process is outlined in the Project governance.
- Blog: blog.pyodide.org
- Mailing list: mail.python.org/mailman3/lists/pyodide.python.org/
- Gitter: gitter.im/pyodide/community
- Twitter: twitter.com/pyodide
- Stack Overflow: stackoverflow.com/questions/tagged/pyodide
Pyodide uses the Mozilla Public License Version 2.0.