TauPy Framework
Project description
TauPy
Build desktop apps with Python + Rust, and drop in React/Vite when you want. Fast reloads, native window controls, and a tiny API surface.
Why TauPy
- Hybrid by design - Python backend + Rust launcher; use Python widgets or a full React front-end.
- Hot dev loop - edit → window refreshes near-instantly, no page reload dance.
- Native window API - minimize/maximize/resize/drag, all routed through Python to the launcher.
- Shipping ready -
taupy buildbundles your front-end, rebuilds the launcher, and Nuitka-packages the backend.
Code example (Python UI)
from taupy import App, VStack, Text, Button, State
from taupy.events import Click
app = App("Hello TauPy", 800, 500)
msg = State("Hello, TauPy!")
@app.dispatcher.on_click("btn_hello")
async def hello(_: Click):
msg.set("Button clicked!")
@app.route("/")
def home():
return VStack(Text(msg), Button("Click me", id="btn_hello"))
if __name__ == "__main__":
import asyncio
asyncio.run(app.run(VStack(id="root")))
Install
pip install taupy-framework
Quick start (React front-end)
taupy new [app_name]
cd [app_name]
npm install
taupy dev
Build
taupy build
Pipeline:
- Build React/Vite (if present) →
target/dist cargo build --releasefor the launcher →target/launcher- Nuitka bundle backend →
target/app.exe
Performance snapshot (indicative)
| Scenario | TauPy (Python + Rust) | PyQt / PySide | Tkinter | Electron |
|---|---|---|---|---|
| Cold start (release build) | ~300–600 ms | ~900 ms – 1.8 s | ~500–900 ms | ~1.5 – 3 s |
| Hot reload (code → UI) | ~40–120 ms (WS diff) | Full widget refresh | Full redraw | ~200–500 ms |
| UI update (state → render) | ~10–40 ms | QWidget update | Full widget update | Virtual DOM diff |
| Bundle size | ~6–15 MB + dist | 40–80 MB | ~2–5 MB | 120+ MB |
| UI stack | HTML/CSS (WebView) | Native Qt | Native Tk | Chromium |
Measurement conditions
Measurements taken on Windows 11, Ryzen 7 5800X, NVMe SSD.
Release builds, minimal "hello world" applications.
Numbers are indicative and vary by project size and configuration.
TauPy CLI
taupy dev— run backend + external front-end (Vite) with hot reload.taupy build— build front-end, launcher, and Nuitka bundle intotarget/.taupy new <name>— scaffold a new TauPy project.
Dev vs Prod (auto)
- Dev (
--dev): external HTTP (Vite 5173), hot reload. - Prod: serves bundled
dist/on 8000. Override withTAUPY_EXTERNAL_HTTP/TAUPY_HTTP_PORT.
Roadmap
- Cross-platform launcher (Linux/macOS)
- Native dialogs & notifications
- Packaging presets (single-file)
- Built-in icon set & theme presets
- DevTools/inspector mode
- Playground in browser
Requirements
- Windows 64-bit, Python 3.11+
- Rust toolchain (launcher rebuild)
- Node.js (for React/Vite, optional)
📜 License
TauPy is released under the MIT License. Free for commercial and personal use.
💬 Contributing
Contributions are welcome!
⭐ Support the Project
If TauPy inspires you - please star the repository. Every ⭐ makes development faster ❤️
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file taupy_framework-0.0.3.tar.gz.
File metadata
- Download URL: taupy_framework-0.0.3.tar.gz
- Upload date:
- Size: 2.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.4 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0ba90f26cbd4b2fa3b90a044c23576efb05403b9beb5318acec74e0fefa4a09
|
|
| MD5 |
f161d8317fe22b73be26ef712e1cd64b
|
|
| BLAKE2b-256 |
9dd17ec8e005221e7a01fbe92bacb29c33fd3a9b3036d508d6098b32c2786dab
|
File details
Details for the file taupy_framework-0.0.3-py3-none-any.whl.
File metadata
- Download URL: taupy_framework-0.0.3-py3-none-any.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.4 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae0263330876b771def3178692a00d08ffddf4406d56bee8ffd69a08fad8fdb3
|
|
| MD5 |
5a0f1e5ac9ba15615e878ea836a284dc
|
|
| BLAKE2b-256 |
c32bf3b96d13f881a0586e7b215be035121bd00595efb2ba4c2e46d42ef70646
|