Skip to content

detail how to deliver both JS and Python assets needed by a project #172

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ntoll opened this issue Feb 26, 2025 · 1 comment
Open

detail how to deliver both JS and Python assets needed by a project #172

ntoll opened this issue Feb 26, 2025 · 1 comment

Comments

@ntoll
Copy link
Member

ntoll commented Feb 26, 2025

From discord:

https://discord.com/channels/972017612454232116/972020206538997822/1344294149922230364

For example, perhaps the README for my wheel should say:

To use libfoo in pyscript, you will need to declare the following in your pyscript.toml:

packages = ["libfoo@2.0.1"]
[js.modules]
"https://cdn.pyscript.com/serve-files-from-wheels/pypi/libfoo@2.0.1/subpath/shim.js" = "libfooshim"

that's how we basically use 3rd party and there's nothing wrong in there ... .js stuff gotta be published on .js places, .py and wheels stuff gotta be published on .py places ... so you publish your wheel and you publish on npm your wheel module ... you sync versioning between the two, you use one out of dozen CDN providers for your JS that ends up in the config. https://esm.run/ would be my suggestion as it's provided by JSDelivr which is likely the most used CDN out there on the web ... it automatically packages your stuff as ESM too so your config would look like:

packages = ["libfoo@2.0.1"]

[js_modules.main]
"https://esm.run/libfoo@2.0.1" = "libfooshim"

and ... that's it? 🤔

@Neon22
Copy link
Contributor

Neon22 commented Apr 18, 2025

Would you mind including in this idea:

  • if using micropython - what is required to import a regular python module that is not already in micropython.
  • A good (IMHO) example is the Configparser module (which reads/writes ini files). This is importable in pyodide but not mpy.
  • However there is a pure python wheel on pypi which is 17kB long
  • What would the procedure be to import this and make it work.

Conversely how does a user discover that a given pure python module will not work,

  • and they would then decide to either do that task in a worker,
  • or move to py instead of mpy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants