Cross the Atlantic by running Python from JavaScript.
The underlying protocol is a forked and trimmed version of JSPyBridge's pythonia
package.
Alterations include:
- Running from a browser context.
- Communicating via a WebSocket instead of a IO stream or pipe.
- Relies on the server being available already rather than spawned on first use.
- Built-in and transparent support for Python's
asyncio
.
This package does not yet supported connections over the internet; the intended use is in suites where the same localhost
is available to both the browser and Python runtime.
This tool is both a JS package and Python package. In JS environments, note that this package requires support for ES2017 and above. Transpilation, due to how it handles async / await, is not guaranteed to work.
$ poetry add git+https://github.com/thearchitector/mayflower.git
$ yarn add mayflower@git@github.com:thearchitector/mayflower.git
To start the websocket server, you can invoke mayflower as a module: python -m mayflower
.
Using the package in browser will automatically start the websocket client and listen.
For unified applications, like using this tool to invoke Python utilities with a Cypress suite, it's recommended to use concurrently
to ensure cleanup happens if the websocket fails / disconnects:
$ yarn add concurrently
# -u is required for Python to flush logs to stdout / stderr
$ concurrently "python -um mayflower" "cypress open"
See the JSPyBridge documentation for the syntactical sugar.
This package is license under BSD-3-Clause.
JSPyBridge, which this package is based on, is licensed under MIT.