Welcome to PuePy!

A pure Python frontend web framework with reactivity, routing, and all the batteries of Python! See those plus/minus buttons right there? Those are running Python code, right in your browser. No transpiling, no build step, no funny business.

							class CounterPage(Page):
    def initial(self):
        return {"current_value": 0}

    def populate(self):
        with t.div(classes="inc-box"):
            t.button("-", on_click=self.on_decr)
            t.span(str(self.state["current_value"]))
            t.button("+", on_click=self.on_incr)

    def on_decr(self, event):
        self.state["current_value"] -= 1

    def on_incr(self, event):
        self.state["current_value"] += 1
						

Why PuePy? ๐Ÿ

PuePy is a lightweight web framework that uses Webassembly via PyScript to put Python right in your browser with all the modern conveniences of a web framework, but none of the headaches of Webpack, NPM, or even JavaScript.

Features ๐Ÿง‘โ€๐Ÿ’ป

  • Reactive data binding with Component-based architecture
  • Single Page App router included
  • No build layer: direct execution like other Python projects
  • Choice of full CPython/ Pyodide or Micropython

Why not PuePy? ๐Ÿ™…

Not all sites need "web frameworks." Does yours? And if it does, will you miss in-browser debuggers, mature JavaScript tooling, and the vast communities around frameworks like React or Vue? You might.

Experiment ๐Ÿงช

RTFM ๐Ÿ“š

Ready to dive in? Check out our tutorial and see how easy it is to build your first project with PuePy.

Documentation

Participate ๐Ÿ––

You are not the only one looking for a Pure Python development stack. There might be dozens of us!

PuePy on GitHub