Skip to main content

PYSX

Reactive interfaces, written in Python.

PYSX brings the feel of a reactive web app to Python. Write your interface with readable, indentation-based templates, keep state in signals, and let the page update as that state changes.

Python runs on the server. A small JavaScript client connects the browser to your application, sends user events, and applies the updates it receives.

How it works

The initial HTTP response contains the rendered page. The browser attaches to that same graph, preserving edits made before attachment. Each session gets its own reactive state. Signals hold values, derived signals compute from them, and effects track dependencies automatically. When a user clicks a button or edits a field, Python handles the event and sends changes back to the page.

Templates use Python 3.14+ t-strings to keep markup and live values together:

Python counter example with PYSX template syntax highlighting

Changing count updates the displayed value. The browser applies targeted patches, and keyed lists preserve unchanged rows so focus, selection, and scroll survive updates.

Build with PYSX

  • Reactive state: signals, derived values, batched updates, and writable views into structured data.
  • Readable interfaces: t-string templates and composable, typed native elements.
  • Live forms: two-way bindings, native validation, reset and submit handling, and caret-preserving server corrections.
  • Async applications: owned resources, timers and server push update pages without another browser event.
  • Document continuity: open pages restore compatible UI state after server loss. See recovery.
  • Hosting: shared standalone and optional ASGI serving, request context, static assets and lifecycle hooks. See hosting.
  • Scoped styling: typed styled bases, inherited rules, live CSS variables and isolated themes. See the styling guide.
  • Editor support: VSCode syntax highlighting and advisory template diagnostics.

Playgrounds

Copy runnable starter applications into your own project, then run them the ordinary way:

pysx-playground                        # all of them, into ./playgrounds
pysx-playground counter                # just one
pysx --app playgrounds.counter         # run it
pysx --app playgrounds.counter --watch # edit the file and watch it reload

counter is the smallest useful live application, recovery a draft that survives a restart with the tab open, and durable declared state reconstructed through a fresh application graph. Re-running pysx-playground <name> restores that playground to its shipped source and clears its state, so it is also the reset.

Supported platforms

Python 3.14 or newer. The quality matrix has passed on Linux, macOS and Windows. See compatibility and support for tested versions, deployment requirements and maintenance windows.

PYSX is available under the MIT license.

Explore

Start with the quickstart, work through the interactive tutorial, or browse the API index.

  • Examples — run the demos and explore reactive state and live forms.
  • Tests — run the test suite and quality checks.
  • Editor support — install the VSCode extension.

For the technical details, see the template grammar, native elements and bindings, and wire protocol.

Metadata

Release files for pysx-framework 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pysx-framework 0.1.0
File Interpreter ABI Platform Actions
pysx_framework-0.1.0-py3-none-any.whl Python 3 none any Details for pysx_framework-0.1.0-py3-none-any.whl

Release files / pysx_framework-0.1.0-py3-none-any.whl

Download URL pysx_framework-0.1.0-py3-none-any.whl
Size 350.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6673f4819075909d4e7fc28093425bcf1ffab96b8a6c7d0b00a127bf534a65a2
BLAKE2b-256 checksum
How to use checksums
c5b207570bd92b2bbc3e8bc486a8e755d4233346a8f7745abdf2b9fe6e976c69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 14, 2026.

Transparency log

Security for pysx-framework 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

1 file in this release has been uploaded with provenance metadata.

Attestation for pysx_framework-0.1.0-py3-none-any.whl

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 14, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page