This is sorta similar to rustpython_wasm[0] - I haven't been super focused on it recently, but I'd love to eventually have something as in-depth and well-designed as this. Currently it has all the necessary APIs (I think) to communicate however you want between JS and Python, but I'd like to have some sort of JSProxy object in Python so accessing JS APIs can look like it does in JS. Currently, you have to do something like:
import browser
from browser import window
document = window.get_prop('document')
document_body = document.get_prop('body')
document_body.set_prop('textContent', browser.jsstr('hi'))
[0]: https://rustpython.github.io/demo/