Browser-based Python environment with rayforce-py, powered by Pyodide.
- rayforce-py running in the browser via WebAssembly
- Monaco Editor with Python syntax highlighting
- Real-time code execution with Shift+Enter
# Start local server
python serve.py
# Open in browser
http://localhost:8080/rayforce-pylab/index.htmlPrerequisites:
- Emscripten SDK (emcc)
- Pyodide xbuildenv
- rayforce-wasm built with latest rayforce core
# Build rayforce-py C extension for Pyodide
make -f Makefile.pyodiderayforce-pylab/
├── index.html # Main web application
├── serve.py # Development server with CORS
├── Makefile.pyodide # Build configuration for Pyodide
├── pyodide_compat.h # C compatibility header
└── dist/
└── rayforce-*.whl # Pre-built Pyodide wheel
- Fluent query API (
.select().where().execute()) has threading issues in WASM - Use
eval_str()with Rayfall syntax for queries as a workaround
The project uses GitHub Actions to automatically:
- Pull latest
rayforceandrayforce-pyfrom master - Build WASM with Emscripten
- Create Pyodide wheel
- Deploy to GitHub Pages
-
Enable GitHub Pages in repository settings:
- Go to Settings → Pages
- Source: "GitHub Actions"
-
Push to master - deployment happens automatically
-
Manual rebuild: Actions → "Build and Deploy" → "Run workflow"
Daily rebuilds are scheduled at midnight UTC to catch upstream updates.
- Pyodide 0.26.4 - Python 3.12 in WebAssembly
- Monaco Editor - Code editor
- rayforce - Core database
- rayforce-py - Python bindings