Skip to main content

spaday

Build Status codecov License PyPI

Build reactive web-component UIs configured in Python, executed in the browser.

Overview

You author a UI as a tree of typed Python components — WebAwesome by default, or any library that ships a Custom Elements Manifest. You attach behavior as declarative data: an action DSL (toggle a prop, send a model edit, call an endpoint) and reactive bindings (a control two-way-bound to a state field, or a prop computed from others). spaday's JavaScript runtime renders the tree to real web components and interprets that behavior client-side — so a toggle or a derived value updates with no round-trip to Python.

That UI state is a transports model, so it syncs over any connection (WebSocket, SSE, Jupyter comm) and any codec; the same tree drops into a web app or a Jupyter notebook unchanged.

Like transports, spaday is a Rust core with thin bindings: the component tree, the diff engine, the CEM parser, the action interpreter, and the reactive engine live in Rust and compile to PyO3 (Python authors the tree) and wasm (the browser runs it). One core, two bindings.

from spaday import Widget
from spaday.components.webawesome import WaCard, WaSwitch

# a switch two-way-bound to a state field, rendered in a Jupyter cell
ui = WaCard().child(WaSwitch().text("Lamp").bind("checked", "on", mode="two-way"))
w = Widget(ui, state={"on": True})
w  # flip the switch → w.state["on"] flips in Python; set w.state → the switch follows

Install

pip install spaday            # core: author + serialize component trees
pip install "spaday[widget]"  # + the Jupyter / anywidget host

Documentation

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spaday-0.2.2.tar.gz (5.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

spaday-0.2.2-cp311-abi3-win_amd64.whl (5.1 MB view details)

Uploaded CPython 3.11+Windows x86-64

spaday-0.2.2-cp311-abi3-manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

spaday-0.2.2-cp311-abi3-macosx_11_0_arm64.whl (5.1 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

Details for the file spaday-0.2.2.tar.gz.

File metadata

  • Download URL: spaday-0.2.2.tar.gz
  • Upload date:
  • Size: 5.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for spaday-0.2.2.tar.gz
Algorithm Hash digest
SHA256 490f134c25abc9141900a7f32d91ec859e0372e648b2f33d024cd7562eb6ff24
MD5 630a04988d27eed48f61a776598e943d
BLAKE2b-256 0852cf7a20091a00dd1af6541ee5d7a23de2563a8196b6135b064eea9710d2f4

See more details on using hashes here.

File details

Details for the file spaday-0.2.2-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: spaday-0.2.2-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 5.1 MB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for spaday-0.2.2-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 50fd3612460a206c090dfe12e7435a4540022ec4f6042e71c278636c163a2930
MD5 cd7589b7f451ab5ee9e1a47ae0d42ba4
BLAKE2b-256 ae9a268350c2fbe3a6f56dc8bbac033b8c2acc0f66a0124004ea41c7308dea67

See more details on using hashes here.

File details

Details for the file spaday-0.2.2-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for spaday-0.2.2-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3b1fa8aa72ed2cca32ea5c16864e1be879251ce4d97a591a4663f3d54992a2a
MD5 93579794059632de999b4126147cdabe
BLAKE2b-256 40f07e6feaf46b17b08225e412149b2af1a487bf9b481ce2fef07f3c8ff05cfa

See more details on using hashes here.

File details

Details for the file spaday-0.2.2-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for spaday-0.2.2-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ed2201c91d98cc0173a854144fd8fe8c58d189e848c0dd4a6bfc0428562014f3
MD5 423950033a05e906493cbaa9413c268e
BLAKE2b-256 824272635bac40c25ce663b3dae948732352f944a77b0c6b1e4ad36b670dac17

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page