Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
ogrodnek/pyview: A Python implementation of Phoenix LiveView

ogrodnek/pyview: A Python implementation of Phoenix LiveView

13 hours ago

PyView

A Python implementation of Phoenix LiveView

PyView enables dynamic, real-time web apps, using server-rendered HTML.

Documentation: https://pyview.rocks

Source Code: https://github.com/ogrodnek/pyview

Installation

pip install pyview-web

Quickstart

There's a cookiecutter template available

cookiecutter gh:ogrodnek/pyview-cookiecutter

Live Examples

https://examples.pyview.rocks/

Other Examples

Simple Counter

See it live!

count.py:

from pyview import LiveView, LiveViewSocket
from typing import TypedDict

class CountContext(TypedDict): count: int

class CountLiveView(LiveView[CountContext]): async def mount(self, socket: LiveViewSocket[CountContext], _session): socket.context = {"count": 0}

async def handle_event(self, event, payload, socket: LiveViewSocket[CountContext]): if event == "decrement": socket.context["count"] -= 1

if event == "increment": socket.context["count"] += 1

async def handle_params(self, url, params, socket: LiveViewSocket[CountContext]): if "c" in params: socket.context["count"] = int(params["c"][0])

count.html:

<div>
  <h1>Count is {{count}}</h1>
  <button phx-click="decrement">-</button>
  <button phx-click="increment">+</button>
</div>

Acknowledgements

  • Obviously this project wouldn't exist without Phoenix LiveView, which is a wonderful paradigm and implementation. Besides using their ideas, we also directly use the LiveView JavaScript code.
  • Thanks to Donnie Flood for the encouragement, inspiration, help, and even pull requests to get this project started! Check out LiveViewJS for a TypeScript implementation of LiveView (that's much more mature than this one!)

Additional Thanks

Status

PyView is in the very early stages of active development. Please check it out and give feedback! Note that the API is likely to change, and there are many features that are not yet implemented.

Running the included Examples

Setup

uv sync

Running

uv run uvicorn examples.app:app --reload

Then go to http://localhost:8000/

uv Install

brew install uv

or

curl -LsSf https://astral.sh/uv/install.sh | sh

(see https://docs.astral.sh/uv/getting-started/installation/ for more details)

License

PyView is licensed under the MIT License.

Chat with me