No worries!
And you are right, pyodide wheels or emscripten/wasm32 wheels cannot be uploaded to PyPi it seems. It is possible however to add a new package to the Pyodide distribution I think. (the current list of packages here
https://github.com/pyodide/pyodide/tree/main/packages). That could be something?
In terms of what I had to do to compile, I feel like they were just amateur problems on my part haha. I had tried to follow the Pyodide docs about building a package out of tree, I kept running into issues with the emscripten compiler not finding the right Python modules on my system. I then tried to use the Docker image from Pyodide to see if I would fare any better. It is an x86_64 based image so it would run in emulation mode on my arm64, painfully slow haha. But it looked like it kind of worked! Until it crashed at file 1462/1463 with this function mismatch error
![]()

This was after it took a really long time so I started getting less interested in "learning" and more interested in hacking my way through lol. So for whatever reason this file, HyperPage.cpp, had a different function call signature than "what it was supposed to be" or something. I have no idea why or what it really means. It's used to enable some kind of menu item in the GUI it seemed like, something that was maybe irrelevant to my needs.
So I just changed that function signature and call in that file to add one more parameter so that it would match up with the definition the compiler was expecting. And because the parameter didn't actually matter, I decided to name it "wtf" and make it a boolean and call it true LOL
This totally worked and produced a pyodide wasm32 wheel! I then tried it out in PyScript and it was mostly working seamlessly. I ran into one issue for my purposes, which was this call:
intensity = call(sound, "To Intensity", 75, 0.0) # create a praat intensity object
Other "call" functions worked fine, like "To Pitch" and stuff, so I wasn't sure why this wasn't. BUT luckily, there was a function in Parselmouth called ".to_intensity" and then could do ".get_average" on that. I imagine it's something to do maybe with like creating temporary files underneath but file creating and accessing is a bit wonky when handled by Pyodide. This is purely a guess though, I've done little to no investigation.
With that, everything I needed for my current use case was working so I just decided to update this thread and move on. But it would be kind of cool to have this done "properly" haha - if you have any other questions about my experience, I'm happy to share. Thanks for your wonderful work on this library!
Ani