patx/micropie
copy repo from github
Commit 9f9f4818cf81 · Harrison Erd · 2026-05-02 21:07 -0400
Comments
No comments yet.
Diff
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,16 @@
+# Read the Docs configuration file
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+
+# Required
+version: 2
+
+# Set the OS, Python version, and other tools you might need
+build:
+ os: ubuntu-24.04
+ tools:
+ python: "3.12"
+
+# Build documentation in the "docs/" directory with Sphinx
+sphinx:
+ configuration: docs/apidocs/conf.py
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,27 @@
+ Copyright 2025 Harrison Erd
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+contributors may be used to endorse or promote products derived from this
+software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,366 @@
+[](https://patx.github.io/micropie)
+
+[](LICENSE)
+[](https://pypi.org/project/micropie/)
+[](https://pepy.tech/projects/micropie)
+
+## **Introduction**
+**MicroPie** is a fast, lightweight, modern Python web framework built on ASGI for asynchronous web applications. Designed for flexibility and simplicity, it enables high-concurrency web apps with built-in WebSockets, session management, middleware, lifecycle event handling, and optional template rendering. Extensible for integration with ASGI-compatible tools like [python-socketio](https://python-socketio.readthedocs.io/en/stable/server.html#running-as-an-asgi-application) and [ServeStatic](https://archmonger.github.io/ServeStatic/latest/asgi/), it’s inspired by CherryPy and licensed under the BSD 3-Clause License.
+
+### **Key Features**
+- 📬 **Routing:** Automatic mapping of URLs to functions with support for dynamic and query parameters.
+- 🔑 **Sessions:** Simple, pluggable session management using cookies.
+- 🎨 **Templates:** Jinja2, if installed, for rendering dynamic HTML pages.
+- 🚧 **Middleware:** Support for custom request middleware enabling functions like rate limiting, authentication, logging, and more.
+- 💨 **Real-Time Communication:** Built-in WebSocket support for real-time, bidirectional communication.
+- ☀️ **ASGI-Powered:** Built with asynchronous support for modern web servers like Uvicorn, Hypercorn, and Daphne, enabling high concurrency.
+- ☁️ **Lightweight Design:** Only optional dependencies for flexibility and faster development/deployment.
+- 👶 **Lifecycle Events:** ASGI lifespan event handling for startup and shutdown tasks (e.g., database initialization).
+- 🏁 **Competitive Performance:** Check out how MicroPie compares to other popular ASGI frameworks below!
+
+### **Useful Links**
+- **Homepage**: [patx.github.io/micropie](https://patx.github.io/micropie)
+- **Official Documentation**: [micropie.readthedocs.io](https://micropie.readthedocs.io/)
+- **PyPI Page**: [pypi.org/project/MicroPie](https://pypi.org/project/MicroPie/)
+- **GitHub Project**: [github.com/patx/micropie](https://github.com/patx/micropie)
+- **File Issue/Request**: [github.com/patx/micropie/issues](https://github.com/patx/micropie/issues)
+- **Example Applications**: [github.com/patx/micropie/tree/main/examples](https://github.com/patx/micropie/tree/main/examples)
+- **Introduction Lightning Talk**: [Introduction to MicroPie on YouTube](https://www.youtube.com/watch?v=BzkscTLy1So)
+
+### Latest Release Notes
+View the latest release notes [here](https://github.com/patx/micropie/blob/main/docs/release_notes.md). It is useful to check release notes each time a new version of MicroPie is published. Any breaking changes (rare, but do happen) also appear here.
+
+### **Table of Contents**
+- [Installing MicroPie](#installing-micropie)
+- [Getting Started](#getting-started)
+- [Core Features](#core-features)
+- [Learn by Examples](#learn-by-examples)
+- [Comparisons](#comparisons)
+- [Benchmark Results](#benchmark-results)
+- [Suggestions or Feedback?](#suggestions-or-feedback)
+
+### **Documentation Roadmap**
+- **Tutorials**: [quick start](https://micropie.readthedocs.io/en/latest/tutorial/quickstart.html), [routing](https://micropie.readthedocs.io/en/latest/tutorial/routing.html), and [websockets](https://micropie.readthedocs.io/en/latest/tutorial/websockets.html).
+- **How-to Guides**: Practical recipes for [sessions](https://micropie.readthedocs.io/en/latest/howto/sessions.html), [middleware](https://micropie.readthedocs.io/en/latest/howto/middleware.html), [streaming](https://micropie.readthedocs.io/en/latest/howto/streaming.html), and more.
+- **Reference**: Full API docs for [App](https://micropie.readthedocs.io/en/latest/reference/app.html), [Request](https://micropie.readthedocs.io/en/latest/reference/request.html), [WebSocket](https://micropie.readthedocs.io/en/latest/reference/websocket.html), and related classes.
+- **What’s New**: Version-by-version highlights at [What's new in MicroPie](https://micropie.readthedocs.io/en/latest/whats_new.html).
+
+## **Installing MicroPie**
+
+### **Installation Profiles**
+Install whichever profile fits your use case:
+
+| Profile | Command | Includes |
+|---------|---------|----------|
+| Minimal | `pip install micropie` | Core framework only |
+| Standard | `pip install micropie[standard]` | Core + `jinja2` + `multipart` |
+| All | `pip install micropie[all]` | Standard + `orjson` + `uvicorn` |
+
+If you are just getting started, use **standard**:
+```bash
+pip install micropie[standard]
+```
+
+For an ultra-minimal setup, you can also use the standalone script (development version):
+
+[micropie.py](https://raw.githubusercontent.com/patx/micropie/refs/heads/main/micropie.py)
+
+Place it in your project directory and you are ready to go. Install optional packages only if needed:
+```bash
+pip install jinja2 multipart
+```
+Use `jinja2` for `_render_template` and `multipart` for multipart file/form parsing.
+
+By default MicroPie will use the `json` library from Python's standard library. If you need faster performance you can use `orjson`. MicroPie *will* use `orjson` *if installed* by default. If it is not installed, MicroPie will fallback to `json`. This means with or without `orjson` installed MicroPie will still handle JSON requests/responses the same. To install `orjson` and take advantage of its performance, use:
+```bash
+pip install orjson
+```
+
+### **Install an ASGI Web Server**
+In order to test and deploy your apps you will need an ASGI web server like Uvicorn, Hypercorn, or Daphne.
+
+If you installed `micropie[all]` Uvicorn *should* be ready to use. If you didn't install all of MicroPie's optional dependencies, use:
+```bash
+pip install uvicorn
+```
+
+## **Getting Started**
+
+### **Create Your First ASGI App**
+
+Save the following as `app.py`:
+```python
+from micropie import App
+
+class MyApp(App):
+ async def index(self):
+ return "Welcome to MicroPie ASGI."
+
+app = MyApp()
+```
+Run the server with:
+```bash
+uvicorn app:app
+```
+Access your app at [http://127.0.0.1:8000](http://127.0.0.1:8000).
+
+## **Core Features**
+
+### **Route Handlers**
+
+MicroPie's route handlers map URLs to methods in your `App` subclass. Handler input can come from automatic argument binding or request helper methods.
+
+#### **Key Points**
+- **Automatic Mapping**: URLs map to method names (e.g., `/greet` → `greet`, `/` → `index`).
+- **Private Methods**: Methods starting with `_` (e.g., `_private_method`) are private and inaccessible via URLs, returning 404. **Security Note**: Use `_` for sensitive methods to prevent external access.
+- **Automatic Argument Binding**: Handler args are populated from path/query/body data by parameter name.
+- **Request Helpers**:
+ - `self.request.query(name, default)` for query-string values.
+ - `self.request.form(name, default)` for form/body values.
+ - `self.request.json()` for full JSON payloads, or `self.request.json(name, default)` for a key lookup.
+- **HTTP Methods**: Handlers support all methods (GET, POST, etc.). Check `self.request.method` to handle specific methods.
+- **Responses**:
+ - String, bytes, or JSON-serializable object.
+ - Tuple: `(status_code, body)` or `(status_code, body, headers)`.
+ - Sync/async generator for streaming.
+
+#### **Advanced Usage**
+- **Custom Routing**: Use middleware for explicit routing (see [examples/middleware](https://github.com/patx/micropie/tree/main/examples/middleware) and [examples/explicit_routing](https://github.com/patx/micropie/tree/main/examples/explicit_routing)).
+- **Errors**: Auto-handled 404/400; customize via middleware.
+- **Dynamic Params**: Use `*args` for multiple path parameters.
+
+#### **Automatic Argument Binding**
+MicroPie can bind handler parameters directly from incoming request data:
+```python
+class MyApp(App):
+ async def greet(self, name="Guest"):
+ return f"Hello, {name}!"
+
+ async def submit(self, username="Anonymous"):
+ return f"Submitted by: {username}"
+```
+**Access:**
+- [http://127.0.0.1:8000/greet/Alice](http://127.0.0.1:8000/greet/Alice) returns `Hello, Alice!`.
+- [http://127.0.0.1:8000/greet?name=Alice](http://127.0.0.1:8000/greet?name=Alice) also returns `Hello, Alice!`.
+- POST `application/x-www-form-urlencoded` to `/submit` with `username=bob` returns `Submitted by: bob`.
+- POST `application/json` to `/submit` with `{"username": "bob"}` also returns `Submitted by: bob`.
+
+#### **Helper-Based Request Access**
+Use helper methods for query, form, and JSON payload access:
+```python
+class MyApp(App):
+ async def greet(self):
+ name = self.request.query("name", "Guest")
+ return f"Hello, {name}!"
+
+ async def submit(self):
+ username = self.request.form("username", "Anonymous")
+ return f"Submitted by: {username}"
+
+ async def submit_json(self):
+ data = self.request.json()
+ username = self.request.json("username", "Anonymous")
+ return {"submitted_by": username, "raw": data}
+```
+**Access:**
+- [http://127.0.0.1:8000/greet?name=Alice](http://127.0.0.1:8000/greet?name=Alice) returns `Hello, Alice!`.
+- POST `application/x-www-form-urlencoded` to `/submit` with `username=bob` returns `Submitted by: bob`.
+- POST `application/json` to `/submit_json` with `{"username": "bob"}` returns JSON including `submitted_by: "bob"`.
+
+By default, MicroPie's route handlers can accept any request method. Check `self.request.method` in a handler when route behavior differs by method. For lower-level request internals such as `query_params`, `body_params`, and `get_json`, see `docs/apidocs/reference/request.rst`.
+
+### **Lifecycle Event Handling**
+MicroPie supports ASGI lifespan events, allowing you to register asynchronous handlers for application startup and shutdown. This is useful for tasks like initializing database connections or cleaning up resources.
+
+#### **Key Points**
+- **Startup Handlers**: Register async handlers to run during `lifespan.startup` using `app.startup_handlers.append(handler)`.
+- **Shutdown Handlers**: Register async handlers to run during `lifespan.shutdown` using `app.shutdown_handlers.append(handler)`.
+- **Error Handling**: Errors during startup or shutdown are caught and reported via `lifespan.startup.failed` or `lifespan.shutdown.failed` events.
+- **Use Cases**: Ideal for setting up database pools, external service connections, or logging systems on startup, and closing them on shutdown.
+
+#### **Example**
+```python
+from micropie import App
+
+async def setup_db():
+ print("Setting up database...")
+ # DB init code here
+ print("Database setup complete!")
+
+async def close_db():
+ print("Closing database...")
+ # DB close code here
+ print("Database closed!")
+
+class MyApp(App):
+ async def index(self):
+ return "Welcome to MicroPie ASGI."
+
+app = MyApp()
+app.startup_handlers.append(setup_db)
+app.shutdown_handlers.append(close_db)
+```
+On startup, the `setup_db` method initializes the database connection. On shutdown (e.g., Ctrl+C), the `close_db` method closes it.
+
+### Real-Time Communication with WebSockets and Socket.IO
+MicroPie includes built-in support for WebSocket connections. WebSocket routes are defined in your App subclass using methods prefixed with `ws_`, mirroring the simplicity of MicroPie's HTTP routing. For example, a method named `ws_chat` handles WebSocket connections at `ws://<host>/chat`.
+
+#### MicroPie’s WebSocket support allows you to:
+- Define WebSocket handlers with the same intuitive automatic routing as HTTP (e.g., `/chat` maps to `ws_chat` method).
+- Access query parameters, path parameters, and session data in WebSocket handlers, consistent with HTTP requests.
+- Manage WebSocket connections using the WebSocket class, which provides methods like `accept`, `receive_text`, `send_text`, and `close`.
+
+Check out a basic example:
+```python
+from micropie import App
+
+class Root(App):
+ async def ws_echo(self, ws):
+ await ws.accept()
+ while True:
+ msg = await ws.receive_text()
+ await ws.send_text(f"Echo: {msg}")
+
+app = Root()
+```
+
+#### Use Socket.IO for Advanced Real-Time Features
+If you want more advanced real-time features like automatic reconnection, broadcasting, or fallbacks (e.g., polling), you can integrate Socket.IO with your MicroPie app using Uvicorn as the server. See [examples/socketio](https://github.com/patx/micropie/tree/main/examples/socketio) for integration instructions and examples.
+
+### **Jinja2 Template Rendering**
+Dynamic HTML generation is supported via Jinja2. This happens asynchronously using Python's `asyncio` library, so make sure to use `async` and `await` with this method.
+
+#### **`app.py`**
+```python
+class MyApp(App):
+ async def index(self):
+ return await self._render_template("index.html", title="Welcome", message="Hello from MicroPie!")
+```
+
+#### **`templates/index.html`**
+```html
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>{{ title }}</title>
+</head>
+<body>
+ <h1>{{ message }}</h1>
+</body>
+</html>
+```
+
+### **Static File Serving**
+MicroPie does not natively support static files, if you need them, you can easily implement it in your application code or integrate dedicated libraries like **ServeStatic** or **Starlette’s StaticFiles** alongside Uvicorn to handle async static file serving. Check out [examples/static_content](https://github.com/patx/micropie/tree/main/examples/static_content) to see this in action.
+
+### **Streaming Responses**
+Support for streaming responses makes it easy to send data in chunks.
+
+```python
+class MyApp(App):
+ async def stream(self):
+ async def generator():
+ for i in range(1, 6):
+ yield f"Chunk {i}\n"
+ return generator()
+```
+
+### **Sessions and Cookies**
+Built-in session handling simplifies state management:
+
+```python
+class MyApp(App):
+ async def index(self):
+ if "visits" not in self.request.session:
+ self.request.session["visits"] = 1
+ else:
+ self.request.session["visits"] += 1
+ return f"You have visited {self.request.session['visits']} times."
+```
+
+You also can use the `SessionBackend` class to create your own session backend. You can see an example of this in [examples/sessions](https://github.com/patx/micropie/tree/main/examples/sessions).
+
+### **Middleware**
+MicroPie allows you to create pluggable middleware to hook into the request lifecycle. Take a look at a trivial example using `HttpMiddleware` to send console messages before and after the request is processed. Check out [examples/middleware](https://github.com/patx/micropie/tree/main/examples/middleware) to see more.
+```python
+from micropie import App, HttpMiddleware
+
+class MiddlewareExample(HttpMiddleware):
+ async def before_request(self, request):
+ print("Hook before request")
+
+ async def after_request(self, request, status_code, response_body, extra_headers):
+ print("Hook after request")
+
+class Root(App):
+ async def index(self):
+ print("Hello, World!")
+ return "Hello, World!"
+
+app = Root()
+app.middlewares.append(MiddlewareExample())
+```
+
+Middleware provides an easy and **reusable** way to extend the MicroPie framework. We can do things such as rate limiting, checking for max upload size in multipart requests, **explicit routing**, CSRF protection, and more.
+
+MicroPie apps can be deployed using any ASGI server. For example, using Uvicorn if our application is saved as `app.py` and our `App` subclass is assigned to the `app` variable we can run it with:
+```bash
+uvicorn app:app --workers 4 --port 8000
+```
+
+## **Learn by Examples**
+The best way to get an idea of how MicroPie works is to see it in action! Check out the [examples folder](https://github.com/patx/micropie/tree/main/examples) for more advanced usage, including:
+- Template rendering
+- Custom HTTP request handling
+- File uploads
+- Serving static content
+- Session usage
+- JSON Requests and Responses
+- Socket.io Integration
+- Async Streaming
+- Middleware including explicit routing and more
+- Form handling and POST requests
+- WebSockets
+- Lifecycle event handling
+- URL shortener app ([live demo @ erd.sh](https://erd.sh/))
+- And more
+
+## **Comparisons**
+
+### **Features vs Other Popular Frameworks**
+| Feature | MicroPie | Flask | CherryPy | Bottle | Django | FastAPI |
+|---------------------|---------------|--------------|------------|--------------|--------------|-----------------|
+| **Routing** | Automatic | Manual | Automatic | Manual | Views | Manual |
+| **Template Engine** | Jinja2 (Opt.) | Jinja2 | Plugin | SimpleTpl | Django | Jinja2 |
+| **Middleware** | Yes | Yes | Yes | Yes | Yes | Yes |
+| **Session Handling**| Plugin | Plugin | Built-in | Plugin | Built-in | Plugin |
+| **Async Support** | Yes | No | No | No | Yes | Yes |
+| **Built-in Server** | No | No | Yes | Yes | Yes | No |
+| **Lifecycle Events**| Yes | No | Yes | No | Yes | Yes |
+
+## Benchmark Results
+
+The table below summarizes the performance of various ASGI frameworks based on a 15-second `wrk` test with 4 threads and 64 connections, measuring a simple "hello world" JSON response. [Learn More](https://gist.github.com/patx/39e846ed66bead3e42270ff193db35f8).
+
+| Framework | Requests/sec | Avg Latency (ms) | Max Latency (ms) | Transfer/sec (MB) | Total Requests | Data Read (MB) |
+|------------|--------------|------------------|------------------|-------------------|----------------|----------------|
+| Starlette | 21615.41 | 3.00 | 90.34 | 2.93 | 324374 | 43.93 |
+| MicroPie | 18519.02 | 3.53 | 105.00 | 2.84 | 277960 | 42.68 |
+| FastAPI | 8899.40 | 7.22 | 56.09 | 1.21 | 133542 | 18.08 |
+| Quart | 8601.40 | 7.52 | 117.99 | 1.17 | 129089 | 17.60 |
+
+## **Suggestions or Feedback?**
+We welcome suggestions, bug reports, and pull requests!
+- File issues or feature requests [here](https://github.com/patx/micropie/issues).
+- Security issues that should not be public, email `harrisonerd [at] gmail.com`.
+
+## **Rock Your Powered by MicroPie Badge**
+[](https://patx.github.io/micropie)
+
+You can add a Powered by MicroPie badge to your projects README using the following markdown:
+```
+[](https://patx.github.io/micropie)
+```
+
+© 2025 Harrison Erd
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,41 @@
+[](https://patx.github.io/micropie)
+
+[MicroPie](https://patx.github.io/micropie) is an ultra-micro ASGI Python web framework for building fast, async web apps with minimal boilerplate. It includes convention-based routing, sessions, middleware, WebSocket support, lifespan hooks, and optional template rendering.
+
+## Quick Start
+```python
+from micropie import App
+
+class MyApp(App):
+ async def index(self):
+ return "Hello, MicroPie!"
+
+app = MyApp() # Run with `uvicorn app:app`
+```
+
+Run:
+
+```bash
+uvicorn app:app
+```
+
+## Installation
+
+```bash
+$ pip install micropie[standard]
+```
+
+Other profiles:
+
+```bash
+$ pip install micropie # minimal
+$ pip install micropie[all] # standard + orjson + uvicorn
+```
+
+## Useful Links
+- **Homepage**: [patx.github.io/micropie](https://patx.github.io/micropie)
+- **Official Documentation**: [micropie.readthedocs.io](https://micropie.readthedocs.io/)
+- **PyPI Page**: [pypi.org/project/MicroPie](https://pypi.org/project/MicroPie/)
+- **GitHub Project**: [github.com/patx/micropie](https://github.com/patx/micropie)
+- **Examples**: [github.com/patx/micropie/tree/main/examples](https://github.com/patx/micropie/tree/main/examples)
+
diff --git a/docs/apidocs/__pycache__/conf.cpython-312.pyc b/docs/apidocs/__pycache__/conf.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..557334b8772a85af27ee53629fc82f336fe96f22
GIT binary patch
literal 971
zc${5QJ#Q015Z$vK`+SZ+VmrZxBsxkrcA$g^DH0)21VuoBt~qUP*XJd7x2N58V!Ofo
zgLE`hbo>??)19`8#2+xE3k_pC2@WgW&dtu7*?DjFd$DLCSbq)(`;<oLCt6zBYkT<~
zw$F$l2NA<DNXkk1h@`(7PMTz#3|Vnjz-CF-$$>RV&NrOAj~t7bPJ!f!MG7QCR!NZ=
zr1WLQStVtsNGgCT4cA&#Z5}dD@FPY?t1qz-O!COy7i5&#X+Pd+<wjK*_gFM&(}8N^
zzT$*?qmBR0WIqhC7~a7GPEo1uU|FQ7Soovb(s_hq9#9^Q%1ei{tL~sq89nnjq3?8o
zQ0WO4E5@T2+Hw^Q;{d~TI*$W<j3rz%+T6247O@Zq_TJlrSN0h_wz~p{^o)xWor$p;
zXfvFVkAZyYNbnETQ}&zvz2}GfBfF<mET42bK2yE^aogizXO_~r$!M(z7#Y%q1;Fh~
zDsCM?W3G!`HlW0njL>5&bQw4Z>_+(14Ony{wb>PnMkE;OoGTSp%zND`>s-8OL}x+S
z9v3<%Xh5-~+JXW!lE7K&`jYIfPa`UTzFxZ?kgJ9<1>Ka?%^Pi9pL0K;E`+5LEb?{Z
zHWc;4c(@d)&Z@X9@`660?#z+8bStt8I`njf4i;hXKyK*C>ZverRgZ>LSO5LHd_E_r
z5D)#3LQ}wY7*JiAV;0QkHNT<D*^9s0Xm@74ba2e(*5gsP9S^U}-H?-hK%WU4U<Q2h
zBW%;OVHndaDy)xlN&enAn^=``?svv4rN-8@jvAX2R8Q&;Cul9%v?r*UJb=BCtT!j9
zdQsgz-yWBe+WG`lph&4Xwk~Rql3FvVZ2{!MY)tO&PSdGI_E*8&NI?petZqU|ee3+`
K4^$D`(8FKws8O!~
diff --git a/docs/apidocs/_static/.gitkeep b/docs/apidocs/_static/.gitkeep
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/_static/.gitkeep
@@ -0,0 +1,1 @@
+# Placeholder to keep the _static directory in version control.
diff --git a/docs/apidocs/_templates/.gitkeep b/docs/apidocs/_templates/.gitkeep
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/_templates/.gitkeep
@@ -0,0 +1,1 @@
+# Placeholder to keep the _templates directory in version control.
diff --git a/docs/apidocs/conf.py b/docs/apidocs/conf.py
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/conf.py
@@ -0,0 +1,39 @@
+# Configuration file for the Sphinx documentation builder.
+
+project = "MicroPie"
+author = "Harrison Erd"
+release = "0.28"
+
+extensions = [
+ "sphinx.ext.autodoc",
+ "sphinx.ext.autosummary",
+ "sphinx.ext.doctest",
+ "sphinx.ext.intersphinx",
+ "sphinx.ext.napoleon",
+ "sphinx.ext.todo",
+ "sphinx.ext.viewcode",
+]
+
+autosummary_generate = True
+autodoc_typehints = "description"
+napoleon_google_docstring = True
+napoleon_numpy_docstring = False
+todo_include_todos = True
+
+templates_path = ["_templates"]
+exclude_patterns = []
+
+# Theme settings
+html_theme = "alabaster"
+html_theme_options = {
+ "description": "A minimal ASGI web framework",
+ "github_user": "patx",
+ "github_repo": "micropie",
+ "fixed_sidebar": True,
+ "extra_nav_links": {
+ "Project README": "https://github.com/patx/micropie",
+ },
+}
+
+pygments_style = "friendly"
+html_static_path = ["_static"]
diff --git a/docs/apidocs/explanation/architecture.rst b/docs/apidocs/explanation/architecture.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/explanation/architecture.rst
@@ -0,0 +1,126 @@
+Architecture and design
+=======================
+
+MicroPie is intentionally small. Its goal is to provide just enough
+functionality to build asynchronous web applications without locking
+you into a rigid structure. This section discusses some of the key
+design choices and how they influence the API.
+
+ASGI application
+----------------
+
+MicroPie is built on top of the `ASGI`_ specification, which defines
+how Python applications communicate with asynchronous servers. Your
+application subclass inherits from :class:`~micropie.App` and
+implements the ASGI call interface via the ``__call__`` method. The
+framework inspects the ``scope['type']`` field to dispatch to HTTP,
+WebSocket or lifespan handling code.
+
+Routing by naming
+-----------------
+
+Unlike frameworks that require you to declare routes in advance,
+MicroPie derives routing information from the names of your methods.
+The first segment of the path becomes the handler name. This allows
+you to add new endpoints simply by defining a new method on your
+application subclass. The remaining path segments, query string
+parameters and form data are mapped to arguments via function
+signature inspection. This approach reduces boilerplate but may
+surprise users expecting explicit routing. You can always regain
+control by writing a custom middleware to map paths to handlers or by
+checking ``self.request.method`` and ``self.request.path_params`` inside
+your handlers.
+
+Context‑local request
+---------------------
+
+MicroPie stores the current request in a :mod:`contextvars`
+ContextVar. This allows you to access ``self.request`` within your
+handler as well as from deeper helper functions without passing the
+request around explicitly. The context variable is reset at the end
+of each request to avoid leaking state.
+
+Session management
+------------------
+
+Sessions are stored in a pluggable back‑end and identified by a
+random ``session_id`` cookie. The default in‑memory back‑end keeps
+session data in dictionaries keyed by session ID and updates a last
+access timestamp to implement expiration. You can customise the
+back‑end by providing your own implementation of
+:class:`~micropie.SessionBackend`. MicroPie saves sessions after a
+handler returns, only if ``self.request.session`` is non‑empty, to
+avoid creating unnecessary cookies.
+
+Middleware pipeline
+-------------------
+
+The middleware hooks allow you to intercept requests before and after
+handlers. Middleware can modify the request object, provide early
+responses (useful for authentication), and alter the final response.
+For WebSockets, separate middleware hooks run before the connection
+handler starts and after it finishes.
+
+Streaming and SSE support
+-------------------------
+
+Handlers may return an iterator or asynchronous generator to stream
+data to the client. MicroPie detects such responses and iterates
+over them, sending each chunk to the client. When using server‑sent
+events (SSE) there is an additional challenge: if the client
+disconnects, the iterator must be cancelled. MicroPie wraps SSE
+responses in a small loop that listens for disconnect events and
+cancels the generator accordingly. Remember to include a
+``Content‑Type: text/event-stream`` header when sending SSE.
+
+Lifespan hooks
+--------------
+
+ASGI defines a lifespan protocol for startup and shutdown events. MicroPie
+exposes ``startup_handlers`` and ``shutdown_handlers`` lists on the
+:class:`~micropie.App` instance. Handlers are executed sequentially and
+should be asynchronous callables. Use them to open database connections,
+prime caches or register background tasks. Lifespan functions run before
+any request or WebSocket traffic is accepted, ensuring your dependencies
+are ready.
+
+Templating and JSON helpers
+---------------------------
+
+If :mod:`jinja2` is installed, MicroPie enables the
+:meth:`~micropie.App._render_template` helper to render templates from a
+``templates`` directory, returning HTML responses with the correct
+``Content-Type``. For JSON, the framework prefers :mod:`orjson` when
+available and gracefully falls back to :mod:`json`. This keeps the core
+lean while letting you opt into performance boosts.
+
+Error handling
+--------------
+
+MicroPie automatically handles common error cases. Requests for
+unknown routes result in a ``404 Not Found``. If a required
+parameter is missing, MicroPie responds with ``400 Bad Request``.
+Unhandled exceptions inside handlers produce a ``500 Internal Server
+Error`` and are printed to standard error. You can override these
+behaviours via middleware.
+
+Extensibility
+-------------
+
+The minimalist core is designed to be extended. You can mount your
+application behind other ASGI middleware, integrate additional
+protocols like Socket.IO, or implement your own session storage. The
+framework imposes few constraints so that you remain in control of
+your stack.
+
+WebSocket pipeline
+------------------
+
+WebSocket connections follow a parallel flow to HTTP requests. The
+``ws_`` method naming convention resolves handlers, middleware gates the
+connection before :meth:`~micropie.WebSocket.accept` is called, and the
+:class:`~micropie.WebSocket` helper manages receive/send coroutines. Session
+data is shared with HTTP handlers so users can authenticate once and reuse
+the same session across protocols.
+
+.. _ASGI: https://asgi.readthedocs.io/
diff --git a/docs/apidocs/explanation/design_philosophy.rst b/docs/apidocs/explanation/design_philosophy.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/explanation/design_philosophy.rst
@@ -0,0 +1,80 @@
+Design philosophy
+=================
+
+Understanding MicroPie's guiding principles makes it easier to decide
+whether the framework fits your project and how to extend it without
+fighting the grain. This page complements the
+:doc:`architecture <architecture>` overview by focusing on the trade-offs
+behind key decisions.
+
+Keep the core tiny
+------------------
+
+MicroPie prefers explicit, readable Python over layers of abstraction.
+The entire framework fits in a single module so you can audit its
+behaviour quickly. Features graduate into the core only if they pull
+their weight for the majority of applications. Everything else—ORMs,
+background workers, dependency injection—remains a userland concern.
+
+Route by convention, customise with middleware
+----------------------------------------------
+
+Automatic route discovery lowers the barrier to entry: write a method,
+get an endpoint. The flip side is that large applications sometimes need
+more deliberate routing. Instead of complicating the core dispatcher,
+MicroPie encourages you to plug in :class:`~micropie.HttpMiddleware`
+that rewrites the request target or delegates to sub-apps. This keeps the
+framework flexible without sacrificing the quick-start experience.
+
+Treat async as the default
+--------------------------
+
+ASGI enables concurrency, so MicroPie leans into ``async``/``await`` at
+every layer. Synchronous handlers are supported for convenience, but the
+internal plumbing always assumes asynchronous execution. Middleware and
+session backends follow the same rule. When you need to integrate a
+blocking library, run it in a thread pool explicitly so the framework
+stays responsive.
+
+Design for graceful degradation
+-------------------------------
+
+Optional dependencies such as ``jinja2``, ``multipart`` and ``orjson``
+are detected at runtime. If they are missing, MicroPie falls back to
+standard-library implementations. This approach keeps installation
+friction low for small services while allowing power users to opt in to
+richer features.
+
+Favour composition over special cases
+-------------------------------------
+
+Rather than adding bespoke APIs for every scenario, MicroPie exposes a
+few flexible hooks:
+
+* Context variables keep the current request accessible without global
+ state.
+* Middleware runs before and after handlers for both HTTP and WebSocket
+ flows.
+* Session backends are swappable classes with a small, well-documented
+ interface.
+
+By composing these building blocks you can implement authentication,
+logging, rate limiting and other behaviours without touching the core.
+
+Balance ergonomics with transparency
+------------------------------------
+
+MicroPie does not hide the ASGI protocol. Request and WebSocket objects
+mirror the underlying scope so you can drop to the metal when required.
+At the same time, helper methods normalise headers, cookies and body
+parsing. The goal is to keep magic to a minimum while smoothing common
+operations.
+
+Where to go next
+----------------
+
+* Revisit the :doc:`tutorials <../tutorial/index>` with the design goals
+ in mind to see how they shape the developer experience.
+* Browse ``tests.py`` to understand the expected behaviour of each hook.
+* If you plan to extend MicroPie, read the
+ :doc:`../reference/index` to learn the public APIs you can rely on.
diff --git a/docs/apidocs/explanation/index.rst b/docs/apidocs/explanation/index.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/explanation/index.rst
@@ -0,0 +1,14 @@
+Explanations
+============
+
+The explanation section explores concepts and design decisions behind
+MicroPie. It answers “why” questions and provides deeper context.
+For hands‑on instructions see the tutorials and how‑to guides; for
+precise definitions consult the reference.
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Explanations
+
+ architecture
+ design_philosophy
diff --git a/docs/apidocs/glossary.rst b/docs/apidocs/glossary.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/glossary.rst
@@ -0,0 +1,61 @@
+Glossary
+========
+
+This glossary defines terms used throughout the MicroPie documentation.
+
+.. glossary::
+
+ ASGI
+ The Asynchronous Server Gateway Interface. A standard for
+ asynchronous communication between Python applications and
+ servers. MicroPie applications implement the ASGI call
+ interface. See the `ASGI specification <https://asgi.readthedocs.io>`_.
+
+ route handler
+ A method on your :class:`~micropie.App` subclass that handles an
+ incoming HTTP request. The first segment of the URL path maps to
+ the handler name, and remaining segments or query parameters map
+ to arguments. Handlers may be synchronous or asynchronous.
+
+ session
+ A dictionary of data associated with a client across multiple
+ requests. MicroPie stores the session in a pluggable back‑end
+ and identifies it using a ``session_id`` cookie. See
+ :doc:`howto/sessions`.
+
+ middleware
+ Code that runs before and/or after a request handler. Middleware
+ can short‑circuit requests, modify responses, enforce security
+ policies or implement custom routing. MicroPie defines
+ :class:`~micropie.HttpMiddleware` and
+ :class:`~micropie.WebSocketMiddleware` base classes.
+
+ WebSocket
+ A persistent, bidirectional communication channel over TCP. In
+ MicroPie, WebSocket handlers are methods prefixed with ``ws_``.
+ They receive an instance of :class:`~micropie.WebSocket` and
+ optionally additional parameters. See :doc:`tutorial/websockets`.
+
+ context variable
+ An object from the :mod:`contextvars` module that stores data
+ local to the current asynchronous context. MicroPie stores the
+ current request in a context variable so it is accessible via
+ :meth:`~micropie.App.request` without passing it through your
+ function calls.
+
+ lifespan
+ The ASGI lifecycle protocol that allows applications to run
+ startup and shutdown hooks. MicroPie exposes
+ ``startup_handlers`` and ``shutdown_handlers`` lists so you can
+ register functions that prepare resources before serving traffic.
+
+ session backend
+ The implementation responsible for persisting session data.
+ MicroPie ships with an in-memory backend but allows you to
+ implement :class:`~micropie.SessionBackend` to store sessions in
+ Redis, databases or other stores.
+
+ ASGI server
+ A web server capable of speaking the ASGI protocol and invoking
+ your application callable. Examples include ``uvicorn``,
+ ``hypercorn`` and ``daphne``.
diff --git a/docs/apidocs/howto/index.rst b/docs/apidocs/howto/index.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/index.rst
@@ -0,0 +1,20 @@
+How‑to guides
+=============
+
+How‑to guides provide short recipes for solving a specific problem with
+MicroPie. They assume that you already know the basics covered in
+the tutorials. Each guide focuses on performing a single task. See
+the :doc:`tutorials <../tutorial/index>` for a more gentle
+introduction.
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Guides
+
+ sessions
+ middleware
+ templates
+ streaming
+ static_files
+ socketio
+ testing
diff --git a/docs/apidocs/howto/middleware.rst b/docs/apidocs/howto/middleware.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/middleware.rst
@@ -0,0 +1,93 @@
+Writing middleware
+==================
+
+Middleware allows you to insert code that runs before and after your
+handlers. It is useful for cross‑cutting concerns such as logging,
+authentication, rate limiting or explicit routing. MicroPie defines
+separate middleware classes for HTTP and WebSocket connections.
+
+HTTP middleware
+---------------
+
+To create HTTP middleware, subclass :class:`~micropie.HttpMiddleware`
+and implement two asynchronous methods:
+
+* :meth:`~micropie.HttpMiddleware.before_request` – called before the
+ handler is executed. If this method returns a dictionary with
+ ``status_code`` and ``body`` keys, MicroPie immediately sends that
+ response and skips calling the handler. You can also provide
+ additional headers via a ``headers`` key.
+
+* :meth:`~micropie.HttpMiddleware.after_request` – called after the
+ handler has returned a response but before it is sent to the client.
+ You can modify the status code, body or headers by returning a
+ dictionary with updated values.
+
+Register your middleware by appending an instance to
+:attr:`~micropie.App.middlewares` on your application:
+
+.. code-block:: python
+
+ from micropie import App, HttpMiddleware
+
+ class LoggingMiddleware(HttpMiddleware):
+ async def before_request(self, request):
+ print(f"Incoming request: {request.method} {request.scope['path']}")
+ # returning None continues processing
+
+ async def after_request(self, request, status_code, body, headers):
+ print(f"Response status: {status_code}")
+ # returning None uses the original response
+
+ class MyApp(App):
+ async def index(self):
+ return "Hello, world!"
+
+ app = MyApp()
+ app.middlewares.append(LoggingMiddleware())
+
+WebSocket middleware
+--------------------
+
+WebSocket middleware must subclass :class:`~micropie.WebSocketMiddleware`
+and implement two methods:
+
+* :meth:`~micropie.WebSocketMiddleware.before_websocket` – called
+ before a WebSocket handler runs. If this method returns a
+ dictionary with ``code`` and ``reason``, MicroPie closes the
+ connection with the given code and reason.
+
+* :meth:`~micropie.WebSocketMiddleware.after_websocket` – called after
+ the WebSocket handler completes. Use this to perform cleanup.
+
+Example:
+
+.. code-block:: python
+
+ from micropie import App, WebSocketMiddleware
+
+ class RejectAnonymous(WebSocketMiddleware):
+ async def before_websocket(self, request):
+ # Reject connections without a "user" query parameter
+ if "user" not in request.query_params:
+ return {"code": 1008, "reason": "User name required"}
+
+ async def after_websocket(self, request):
+ print("WebSocket closed")
+
+ class MyApp(App):
+ async def ws_chat(self, ws, user):
+ await ws.accept()
+ await ws.send_text(f"Welcome, {user}!")
+ await ws.close()
+
+ app = MyApp()
+ app.ws_middlewares.append(RejectAnonymous())
+
+Explicit routing and other patterns
+-----------------------------------
+
+You can implement custom routing schemes by writing middleware that
+parses the incoming path and sets ``request._route_handler`` or
+``request._ws_route_handler`` accordingly. See the examples in the
+``examples/middleware`` directory for a complete implementation.
diff --git a/docs/apidocs/howto/sessions.rst b/docs/apidocs/howto/sessions.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/sessions.rst
@@ -0,0 +1,84 @@
+Managing sessions
+=================
+
+MicroPie includes simple session management built on top of cookies. A
+session stores data associated with a client across multiple requests.
+Sessions are useful for keeping track of login state, counters and
+temporary information.
+
+Enabling sessions
+-----------------
+
+By default, MicroPie uses an in‑memory session back‑end implemented by
+:class:`~micropie.InMemorySessionBackend`. Each session is identified
+by a ``session_id`` cookie. When the client makes a request, the
+cookie is read and the session data is loaded from the back‑end. When
+you modify the session dictionary, MicroPie writes the updated
+session back at the end of the request and issues a ``Set‑Cookie``
+header if needed.
+
+In order to use sessions, simply read and write the
+:attr:`~micropie.Request.session` dictionary in your handler. The
+following example counts the number of visits for each client:
+
+.. code-block:: python
+
+ from micropie import App
+
+ class MyApp(App):
+ async def index(self):
+ if "visits" not in self.request.session:
+ self.request.session["visits"] = 1
+ else:
+ self.request.session["visits"] += 1
+ return f"You have visited {self.request.session['visits']} times."
+
+ app = MyApp()
+
+Custom session back‑ends
+------------------------
+
+The in‑memory back‑end stores all sessions in a Python dictionary. It
+is suitable for development but will lose data when the process
+terminates and cannot be shared across worker processes. To persist
+sessions in a database or cache, implement the abstract
+:class:`~micropie.SessionBackend` interface:
+
+.. code-block:: python
+
+ from micropie import SessionBackend
+
+ class DatabaseSessionBackend(SessionBackend):
+ async def load(self, session_id: str) -> dict:
+ # fetch the session from your database or cache
+ data = await get_session_from_db(session_id)
+ return data or {}
+
+ async def save(self, session_id: str, data: dict, timeout: int) -> None:
+ # store the session with an expiration timeout
+ await save_session_to_db(session_id, data, timeout)
+
+Assign your back‑end when constructing your application:
+
+.. code-block:: python
+
+ backend = DatabaseSessionBackend()
+ app = MyApp(session_backend=backend)
+
+Expiring sessions
+-----------------
+
+The global constant :data:`micropie.SESSION_TIMEOUT` controls how long
+a session remains valid (in seconds). The default is eight hours.
+Back‑ends may choose to enforce this timeout in whatever manner makes
+sense for their storage layer.
+
+Security considerations
+-----------------------
+
+Sessions are sent to the client as cookies and should be treated as
+untrusted input. Avoid storing sensitive information directly in the
+session. If you implement your own back‑end, ensure that session
+identifiers are random, unique and that the cookie includes the
+``HttpOnly``, ``Secure`` and ``SameSite=Lax`` directives. The
+in‑memory back‑end provided by MicroPie already issues these flags.
\ No newline at end of file
diff --git a/docs/apidocs/howto/socketio.rst b/docs/apidocs/howto/socketio.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/socketio.rst
@@ -0,0 +1,54 @@
+Integrating Socket.IO
+=====================
+
+MicroPie’s built‑in WebSocket support provides a simple API for
+bidirectional communication. If you require advanced features such
+as automatic reconnection, broadcasting to rooms, namespaces, or
+fallback transports for browsers that do not support WebSockets, you
+can integrate `python‑socketio <https://python-socketio.readthedocs.io>`_.
+
+Socket.IO runs as an ASGI application, so you can mount it
+alongside your MicroPie app and serve both under the same Uvicorn
+server. The following example shows how to set up a basic chat
+application using Socket.IO with MicroPie.
+
+.. code-block:: python
+
+ import socketio
+ from micropie import App
+
+ # Create a Socket.IO server instance (ASGI compatible)
+ sio = socketio.AsyncServer(async_mode="asgi")
+ socket_app = socketio.ASGIApp(sio)
+
+ # Create your MicroPie application
+ class MyApp(App):
+ async def index(self):
+ # Serve an HTML page with Socket.IO client code (omitted)
+ return await self._render_template("chat.html")
+
+ app = MyApp()
+
+ # Uvicorn accepts a single callable; wrap both apps in a simple
+ # dispatcher that routes to Socket.IO on the /socket.io path
+ async def application(scope, receive, send):
+ if scope["path"].startswith("/socket.io"):
+ await socket_app(scope, receive, send)
+ else:
+ await app(scope, receive, send)
+
+Run the dispatcher with Uvicorn:
+
+.. code-block:: console
+
+ $ uvicorn app:application
+
+On the client side, connect to ``/socket.io`` as usual using the
+Socket.IO JavaScript client. All other paths are handled by your
+MicroPie routes. See the ``examples/socketio`` directory in the
+MicroPie source distribution for a more complete implementation that
+includes HTML and JavaScript code.
+
+Note that python‑socketio may install its own dependencies. Consult
+the Socket.IO documentation for configuration options such as
+message queue back‑ends and authentication.
\ No newline at end of file
diff --git a/docs/apidocs/howto/static_files.rst b/docs/apidocs/howto/static_files.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/static_files.rst
@@ -0,0 +1,45 @@
+Serving static files
+====================
+
+MicroPie deliberately avoids bundling a static file server. Serving
+static content such as images, CSS and JavaScript can be delegated to
+a specialised middleware or a separate web server. This approach
+keeps the core framework small and flexible.
+
+Using a static file middleware
+------------------------------
+
+To serve static files from within your MicroPie application, you can
+use third‑party libraries such as
+`ServeStatic <https://archmonger.github.io/ServeStatic/latest/>`_ or
+Starlette’s `StaticFiles` class. The example below uses
+ServeStatic to serve files from a ``static`` directory:
+
+.. code-block:: python
+
+ from micropie import App
+ from servestatic import ServeStatic
+
+ class MyApp(App):
+ async def index(self):
+ return "Hello, world!"
+
+ app = MyApp()
+
+ # Mount the static file handler at the /static path
+ app_with_static = ServeStatic(app, directory="static", path_prefix="/static")
+
+When running your application, pass ``app_with_static`` to your ASGI
+server instead of ``app``. Requests to paths under ``/static`` will
+be served from your ``static`` directory, while all other requests
+fall through to your MicroPie routes.
+
+Using a reverse proxy
+---------------------
+
+Alternatively, you can serve static files via a dedicated HTTP server
+such as Nginx or Caddy. In production deployments this is often the
+preferred option, as a dedicated server can handle caching and
+compression. Configure your web server to serve the ``/static``
+prefix directly from the filesystem and forward all other requests to
+your ASGI server running MicroPie.
\ No newline at end of file
diff --git a/docs/apidocs/howto/streaming.rst b/docs/apidocs/howto/streaming.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/streaming.rst
@@ -0,0 +1,66 @@
+Streaming responses
+===================
+
+For long‑running tasks or large responses it is often desirable to
+stream data to the client in chunks rather than return a single
+buffer. MicroPie supports streaming by allowing your handler to
+return an iterator or asynchronous generator. Each chunk yielded by
+the generator is sent as part of the response body. When the
+generator finishes, MicroPie automatically sends an empty chunk to
+signal completion.
+
+Example: number stream
+----------------------
+
+The following handler streams a sequence of numbers to the client one
+per second:
+
+.. code-block:: python
+
+ from micropie import App
+ import asyncio
+
+ class MyApp(App):
+ async def numbers(self):
+ async def generator():
+ for i in range(5):
+ yield f"Number: {i}\n"
+ await asyncio.sleep(1)
+ return generator()
+
+ app = MyApp()
+
+Visiting ``/numbers`` will produce output like:
+
+.. code-block:: text
+
+ Number: 0
+ Number: 1
+ Number: 2
+ Number: 3
+ Number: 4
+
+MicroPie automatically sets ``Content‑Type`` to ``text/html`` if you
+do not specify a content type. You can override or add headers by
+returning a tuple ``(status_code, body, headers)`` and making the
+generator the body.
+
+Handling client disconnects
+---------------------------
+
+If the client disconnects while a generator is running, MicroPie
+cancels the generator and closes the underlying response. This
+behaviour is important for long‑lived streams such as server‑sent
+events (SSE). When writing a generator, use ``try``/``finally`` or
+``async with`` to perform cleanup when the stream is cancelled.
+
+Server‑sent events
+------------------
+
+MicroPie treats any iterable response body as a general stream.
+Implementing true server‑sent events requires you to set the
+``Content‑Type`` header to ``text/event-stream`` and send
+properly‑formatted SSE messages (``data: ...\n\n``). Additionally,
+MicroPie includes a patch that handles early disconnection of SSE
+clients in its HTTP handling code. For a full example, see the
+``examples/sse`` directory in the MicroPie source distribution.
\ No newline at end of file
diff --git a/docs/apidocs/howto/templates.rst b/docs/apidocs/howto/templates.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/templates.rst
@@ -0,0 +1,73 @@
+Rendering templates
+===================
+
+MicroPie can render HTML templates using the Jinja2 template engine.
+Templates allow you to separate presentation from code by placing
+HTML in separate files. Template rendering is optional; you can use
+MicroPie without Jinja2 installed, but the
+:meth:`~micropie.App._render_template` helper will return a
+``500 Internal Server Error: Jinja2 not installed.`` message unless
+Jinja2 is installed.
+
+Installing Jinja2
+-----------------
+
+If you installed MicroPie with the ``[standard]`` extra, Jinja2 is
+already available. Otherwise install it with pip:
+
+.. code-block:: console
+
+ $ pip install jinja2
+
+Creating templates
+------------------
+
+MicroPie looks for templates in a directory called ``templates`` in
+your current working directory. Use normal Jinja2 syntax in your
+templates. Here is a simple ``templates/index.html`` file:
+
+.. code-block:: html
+
+ <!DOCTYPE html>
+ <html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>{{ title }}</title>
+ </head>
+ <body>
+ <h1>{{ message }}</h1>
+ </body>
+ </html>
+
+Rendering a template
+--------------------
+
+To render a template, call :meth:`~micropie.App._render_template` from
+within an asynchronous handler. The method returns a string containing
+the rendered HTML. Because template loading and rendering may block,
+MicroPie runs it in a background thread using ``asyncio.to_thread``.
+
+.. code-block:: python
+
+ from micropie import App
+
+ class MyApp(App):
+ async def index(self):
+ return await self._render_template(
+ "index.html",
+ title="Welcome",
+ message="Hello from MicroPie!",
+ )
+
+ app = MyApp()
+
+When you visit ``/`` in your browser, MicroPie returns the rendered
+HTML with a ``Content‑Type`` of ``text/html; charset=utf‑8``.
+
+Template variables
+------------------
+
+You can pass arbitrary keyword arguments to `_render_template`. These
+become variables in the Jinja2 template. For more information on
+creating complex templates, including inheritance and control flow,
+refer to the `Jinja2 documentation <https://jinja.palletsprojects.com>`_.
diff --git a/docs/apidocs/howto/testing.rst b/docs/apidocs/howto/testing.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/howto/testing.rst
@@ -0,0 +1,130 @@
+Testing MicroPie applications
+=============================
+
+This guide shows practical approaches for testing MicroPie applications.
+MicroPie does not ship with a bespoke test client, but because it is a
+regular ASGI application you can exercise it using familiar Python
+libraries such as :mod:`unittest`, :mod:`pytest` and
+:mod:`httpx`'s ASGI tools.
+
+Choosing a test framework
+-------------------------
+
+MicroPie itself uses :class:`unittest.IsolatedAsyncioTestCase` in
+``tests.py`` to run asynchronous tests. ``pytest`` with the
+``pytest-asyncio`` plugin offers a similar developer experience. Pick the
+library that best matches your project's conventions—the examples below
+work with either.
+
+Unit testing handlers directly
+------------------------------
+
+Because handlers are regular functions, you can instantiate your
+:class:`~micropie.App` subclass and call methods directly. Use the
+:data:`micropie.current_request` context variable to set up any request
+state that your handler expects.
+
+.. code-block:: python
+
+ from micropie import App, Request, current_request
+
+ class MyApp(App):
+ async def greet(self, name="World"):
+ return f"Hello {name}!"
+
+ async def test_greet_uses_default():
+ app = MyApp()
+ scope = {"type": "http", "method": "GET", "path": "/"}
+ request = Request(scope)
+ token = current_request.set(request)
+ try:
+ response = await app.greet()
+ finally:
+ current_request.reset(token)
+ assert response == "Hello World!"
+
+Testing through the ASGI interface
+----------------------------------
+
+For higher confidence, drive the full ASGI stack. ``httpx`` provides an
+``ASGITransport`` class that can mount a MicroPie app. Install ``httpx``
+with ``pip install httpx``. The example below uses ``pytest`` style
+asserts, but the structure works in ``unittest`` with
+``self.assertEqual``.
+
+.. code-block:: python
+
+ import pytest
+ import httpx
+
+ from micropie import App
+
+ class MyApp(App):
+ async def index(self):
+ return {"status": "ok"}
+
+ @pytest.mark.asyncio
+ async def test_index_returns_json():
+ app = MyApp()
+ async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app)) as client:
+ response = await client.get("http://test/")
+ assert response.status_code == 200
+ assert response.json() == {"status": "ok"}
+
+Simulating sessions and middleware
+----------------------------------
+
+To assert session behaviour, populate ``scope["headers"]`` with a
+``cookie`` header and inspect the response headers for the updated
+``Set-Cookie`` value. Middleware can be tested by attaching it to your
+app instance before issuing requests.
+
+.. code-block:: python
+
+ import httpx
+
+ from micropie import App, HttpMiddleware
+
+ class AddHeader(HttpMiddleware):
+ async def before_request(self, request):
+ return None
+
+ async def after_request(self, request, status_code, response_body, extra_headers):
+ extra_headers.append(("X-Test", "1"))
+ return {"headers": extra_headers}
+
+ class MyApp(App):
+ async def index(self):
+ return "hi"
+
+ async def test_middleware_header():
+ app = MyApp()
+ app.middlewares.append(AddHeader())
+ transport = httpx.ASGITransport(app=app)
+ async with httpx.AsyncClient(transport=transport) as client:
+ response = await client.get("http://test/")
+ assert response.headers["x-test"] == "1"
+
+Handling lifespan events
+------------------------
+
+If your application registers startup or shutdown handlers, wrap your
+ASGI client in a lifespan manager. ``httpx`` exposes
+:class:`httpx.ASGITransport` with a ``lifespan="auto"`` mode that will
+run lifespan events before the first request and after the client exits
+(on versions that support this option).
+
+.. code-block:: python
+
+ async with httpx.AsyncClient(
+ transport=httpx.ASGITransport(app=app, lifespan="auto")
+ ) as client:
+ ...
+
+Further reading
+---------------
+
+* Browse ``tests.py`` in the MicroPie source tree for additional
+ patterns, including WebSocket testing helpers.
+* The `httpx documentation <https://www.python-httpx.org/advanced/#calling-into-python-web-apps>`_
+ has more on driving ASGI apps from tests.
diff --git a/docs/apidocs/index.rst b/docs/apidocs/index.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/index.rst
@@ -0,0 +1,91 @@
+.. MicroPie documentation master file, created for the MicroPie ASGI framework.
+
+MicroPie ASGI Web Framework
+===========================
+
+MicroPie is a small, asynchronous web framework built on top of the
+ASGI specification. It is designed to be simple to learn and easy to
+extend while still providing the features necessary to build modern web
+applications. MicroPie offers automatic URL routing, pluggable
+session back‑ends, middleware hooks, WebSocket support and optional
+template rendering. Its focus on minimalism makes it a good choice for
+lightweight services, APIs and educational projects.
+
+Core features
+-------------
+
+* **Convention over configuration.** Public methods on your
+ :class:`~micropie.App` subclass automatically become routes so you can
+ ship a prototype with only a handful of lines of code.
+* **Async‑first request handling.** MicroPie speaks ASGI fluently and
+ embraces ``async``/``await`` for HTTP and WebSocket handlers while
+ keeping synchronous handlers ergonomic.
+* **Built‑in sessions and middleware.** A pluggable session backend and
+ request/response middleware hooks make it easy to add authentication,
+ analytics and other cross‑cutting concerns.
+* **Optional batteries included.** Extras for templating, fast JSON and
+ multipart parsing allow you to scale capabilities without bloating the
+ core package.
+
+Learning path
+-------------
+
+New to MicroPie? Follow this recommended progression:
+
+1. :doc:`tutorial/quickstart` – install the framework and serve your
+ first response.
+2. :doc:`tutorial/routing` – understand how method names map to URL
+ paths and how handler arguments are populated.
+3. :doc:`tutorial/websockets` – build a live, bidirectional endpoint.
+4. :doc:`howto/index` – explore recipes for common tasks like sessions,
+ templating and streaming.
+5. :doc:`reference/index` – deep dive into class and function
+ definitions when you need the authoritative contract.
+6. :doc:`explanation/index` – read about the philosophy behind the
+ design to better understand trade‑offs and extension points.
+
+This documentation is organized according to the
+Diátaxis documentation framework. That framework separates documentation into
+four distinct types:
+
+* **Tutorials** – step‑by‑step introductions that teach you how to
+ accomplish a task. Tutorials should avoid deep explanations and help
+ you get started quickly.
+* **How‑to guides** – recipes focused on solving a particular problem.
+ Guides assume you already know the basics and want to apply MicroPie
+ to a concrete task.
+* **Reference** – authoritative descriptions of classes, functions and
+ modules. These documents are factual and concise.
+* **Explanation** – discussions that explore the rationale behind
+ design choices and deeper concepts in MicroPie.
+
+In addition to these four types, a small glossary collects terminology
+used throughout the framework. Quick links to other helpful resources:
+
+* :doc:`glossary` – definitions of common MicroPie and ASGI terms.
+* :doc:`whats_new` – highlights from recent releases and upgrade tips.
+* `Project README <https://github.com/patx/micropie#readme>`_ – the
+ high-level project overview from the source repository.
+
+.. _Diátaxis documentation framework: https://diataxis.fr/
+
+Contents
+========
+
+.. toctree::
+ :maxdepth: 2
+ :caption: Documentation
+
+ tutorial/index
+ howto/index
+ reference/index
+ explanation/index
+ whats_new
+ glossary
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/docs/apidocs/reference/app.rst b/docs/apidocs/reference/app.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/app.rst
@@ -0,0 +1,83 @@
+App class
+=========
+
+.. _app-class:
+
+The :class:`~micropie.App` class is the core of a MicroPie application.
+It implements the ASGI call interface and dispatches HTTP, WebSocket
+and lifespan events to your handlers. Subclass :class:`~micropie.App`
+and add public methods to create route handlers. Instantiate your
+subclass and pass the resulting object to an ASGI server such as
+Uvicorn.
+
+Constructor
+-----------
+
+.. class:: App(session_backend=None)
+
+ Create a new application. If *session_backend* is provided it must
+ be an instance of :class:`~micropie.SessionBackend`. When omitted,
+ MicroPie uses an in‑memory back‑end.
+
+Attributes
+----------
+
+.. attribute:: middlewares
+
+ A list of :class:`~micropie.HttpMiddleware` instances. Middlewares
+ run before and after every HTTP request. Append a middleware
+ instance to enable it. See :doc:`../howto/middleware` for examples.
+
+.. attribute:: ws_middlewares
+
+ A list of :class:`~micropie.WebSocketMiddleware` instances used for
+ WebSocket connections.
+
+.. attribute:: session_backend
+
+ The active :class:`~micropie.SessionBackend` instance used to load
+ and save session dictionaries for both HTTP and WebSocket flows.
+
+.. attribute:: startup_handlers
+
+ A list of asynchronous callables that run during the ASGI
+ ``lifespan.startup`` event. Use this to set up resources such as
+ database connections. See :doc:`../tutorial/quickstart` for an
+ example.
+
+.. attribute:: shutdown_handlers
+
+ A list of asynchronous callables that run during the ASGI
+ ``lifespan.shutdown`` event. Use this to clean up resources.
+
+Methods
+-------
+
+.. method:: __call__(scope, receive, send)
+
+ The ASGI entry point. Dispatches to HTTP, WebSocket or lifespan
+ handlers based on ``scope['type']``. You normally do not call this
+ directly; the ASGI server calls it for you.
+
+.. attribute:: request
+
+ The current :class:`~micropie.Request` (or
+ :class:`~micropie.WebSocketRequest`) stored in a context variable for
+ the active request lifecycle.
+
+.. method:: _redirect(location, extra_headers=None)
+
+ Return a tuple ``(302, '', headers)`` representing an HTTP redirect
+ to *location*. Use this helper in your handlers to redirect the
+ client.
+
+.. method:: _render_template(name, **kwargs)
+
+ Render a Jinja2 template asynchronously. Returns a string
+ containing the rendered output. Requires Jinja2 to be installed.
+ See :doc:`../howto/templates` for details.
+
+Additionally, MicroPie defines several private helper methods such as
+``_parse_cookies`` and ``_send_response``. These are considered
+internal and not part of the public API. They may change without
+notice.
diff --git a/docs/apidocs/reference/exceptions.rst b/docs/apidocs/reference/exceptions.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/exceptions.rst
@@ -0,0 +1,18 @@
+Exceptions
+==========
+
+MicroPie defines a small number of exceptions. The most commonly
+encountered is :class:`~micropie.ConnectionClosed`, used for WebSocket
+disconnections.
+
+ConnectionClosed
+----------------
+
+.. class:: ConnectionClosed
+
+ Raised by :meth:`~micropie.WebSocket.receive_text` and
+ :meth:`~micropie.WebSocket.receive_bytes` when the client closes
+ the WebSocket connection. Catch this exception to detect
+ disconnection and exit your handler gracefully. The exception does
+ not carry any attributes; the WebSocket connection has already been
+ closed when it is raised.
\ No newline at end of file
diff --git a/docs/apidocs/reference/index.rst b/docs/apidocs/reference/index.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/index.rst
@@ -0,0 +1,18 @@
+API reference
+=============
+
+The reference manual provides detailed descriptions of the classes and
+functions exposed by MicroPie. These documents are factual and
+succinct. For tutorials and recipes, see the
+:doc:`../tutorial/index` and :doc:`../howto/index` sections.
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Reference
+
+ app
+ request
+ websocket
+ middleware
+ session
+ exceptions
diff --git a/docs/apidocs/reference/middleware.rst b/docs/apidocs/reference/middleware.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/middleware.rst
@@ -0,0 +1,51 @@
+Middleware classes
+==================
+
+MicroPie defines abstract base classes for writing middleware. Use
+these classes to intercept requests, implement custom routing,
+authentication, logging and other cross‑cutting concerns. See the
+:doc:`../howto/middleware` guide for practical examples.
+
+HttpMiddleware
+--------------
+
+.. class:: HttpMiddleware
+
+ Base class for HTTP middleware. Subclasses must implement two
+ asynchronous methods:
+
+ .. method:: before_request(request)
+
+ Called before the HTTP handler runs. *request* is the
+ :class:`~micropie.Request` object. Return a dictionary
+ ``{"status_code": status, "body": body, "headers": headers}``
+ to short‑circuit the request and send a response immediately. To
+ continue processing, return ``None``.
+
+ .. method:: after_request(request, status_code, response_body, extra_headers)
+
+ Called after the handler has completed but before the response
+ is sent. You may return a dictionary with updated
+ ``status_code``, ``body`` and ``headers``. Return ``None`` to
+ leave the response unchanged.
+
+WebSocketMiddleware
+-------------------
+
+.. class:: WebSocketMiddleware
+
+ Base class for WebSocket middleware. Subclasses must implement
+ these methods:
+
+ .. method:: before_websocket(request)
+
+ Called before a WebSocket handler runs. *request* is a
+ :class:`~micropie.WebSocketRequest` object. Return a dictionary
+ ``{"code": code, "reason": reason}`` to reject the connection
+ with the given close code and reason. Return ``None`` to allow
+ the connection.
+
+ .. method:: after_websocket(request)
+
+ Called after the WebSocket handler completes. Use this to
+ release resources or log activity. Return value is ignored.
\ No newline at end of file
diff --git a/docs/apidocs/reference/request.rst b/docs/apidocs/reference/request.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/request.rst
@@ -0,0 +1,102 @@
+Request objects
+===============
+
+.. _request-object:
+
+MicroPie provides two request classes: :class:`~micropie.Request` for
+HTTP requests and :class:`~micropie.WebSocketRequest` for WebSocket
+connections. You access the current request via
+:meth:`~micropie.App.request` on your application instance or by using
+the context variable in lower‑level code.
+
+Request class
+-------------
+
+.. class:: Request(scope)
+
+ Represents an incoming HTTP request. The *scope* argument is the
+ ASGI scope dictionary provided by the server. You should not
+ instantiate this class yourself. MicroPie creates one per
+ request and stores it in a context variable.
+
+ .. attribute:: scope
+
+ The original ASGI scope for the request.
+
+ .. attribute:: method
+
+ The HTTP method, such as ``GET`` or ``POST``.
+
+ .. attribute:: path_params
+
+ A list of positional path parameters. See
+ :doc:`../tutorial/routing` for details on parameter mapping.
+
+ .. attribute:: query_params
+
+ A ``dict`` mapping each query parameter to a list of values.
+ This is the raw parsed mapping from the query string. For
+ convenience, use :meth:`~micropie.Request.query` to obtain
+ the first value.
+
+ .. method:: query(name, default=None)
+
+ Return the first value for query parameter *name*, or *default*
+ if missing.
+
+ .. attribute:: body_params
+
+ A ``dict`` mapping form field names to lists of values. For
+ JSON requests, body parameters are derived from the top‑level
+ object; for ``application/x-www-form-urlencoded`` forms they are
+ parsed using :func:`urllib.parse.parse_qs`. This is the raw
+ mapping used by MicroPie for argument binding.
+
+ .. method:: form(name, default=None)
+
+ Return the first value for form/body field *name*, or *default*
+ if missing.
+
+ .. attribute:: get_json
+
+ The JSON body parsed into a Python object. Only populated when
+ the request contains valid JSON with content type
+ ``application/json``.
+
+ .. method:: json(name=None, default=None)
+
+ Return the parsed JSON payload or a value from a top-level JSON
+ object.
+
+ If *name* is omitted, this method returns the full parsed payload
+ (equivalent to :attr:`~micropie.Request.get_json`). If *name* is
+ provided and the payload is an object, the value for that key is
+ returned; otherwise *default* is returned.
+
+ .. attribute:: session
+
+ A ``dict`` for storing per‑client data across requests. See
+ :doc:`../howto/sessions`.
+
+ .. attribute:: files
+
+ A ``dict`` of uploaded files for multipart/form‑data requests.
+ Each entry is a mapping containing keys ``filename``,
+ ``content_type`` and ``content``, where ``content`` is an
+ ``asyncio.Queue`` yielding file chunks as bytes. See
+ :doc:`../tutorial/routing` for information on awaiting file fields.
+
+ .. attribute:: headers
+
+ A case‑insensitive mapping of header names to values, decoded as
+ UTF‑8 with invalid bytes replaced. Header names are lowercased.
+
+WebSocketRequest class
+----------------------
+
+.. class:: WebSocketRequest(scope)
+
+ Inherits from :class:`~micropie.Request` and represents a WebSocket
+ connection request. All attributes of :class:`~micropie.Request`
+ apply. For WebSocket handlers the request is accessible via
+ ``self.request`` inside the handler or via the context variable.
diff --git a/docs/apidocs/reference/session.rst b/docs/apidocs/reference/session.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/session.rst
@@ -0,0 +1,63 @@
+Session back‑ends
+=================
+
+MicroPie abstracts session storage behind the :class:`~micropie.SessionBackend`
+interface. Different back‑ends may store session data in memory,
+databases, caches or external services. A session is a dictionary of
+key/value pairs associated with a ``session_id`` cookie.
+
+SessionBackend
+--------------
+
+.. class:: SessionBackend
+
+ Abstract base class for session storage. Implementations must
+ provide the following asynchronous methods:
+
+ .. method:: load(session_id)
+
+ Load session data for the given *session_id*. Return a
+ dictionary of session data or an empty dictionary if the session
+ does not exist or has expired.
+
+ .. method:: save(session_id, data, timeout)
+
+ Persist the *data* dictionary for the given *session_id* with
+ an expiry time of *timeout* seconds.
+
+InMemorySessionBackend
+----------------------
+
+.. class:: InMemorySessionBackend
+
+ Concrete implementation of :class:`SessionBackend` that stores
+ sessions in memory. This back‑end is appropriate for development
+ and testing but does not persist data across process restarts and
+ cannot be shared among worker processes.
+
+ .. method:: __init__()
+
+ Create an empty in‑memory session store.
+
+ .. method:: load(session_id)
+
+ Return the session dictionary if it exists and has not expired
+ according to :data:`micropie.SESSION_TIMEOUT`, otherwise return
+ an empty dictionary.
+
+ .. method:: save(session_id, data, timeout)
+
+ Store *data* under *session_id* and update the last access time.
+
+SESSION_TIMEOUT
+---------------
+
+.. data:: SESSION_TIMEOUT
+
+ The default session expiration time in seconds (eight hours). You
+ can override this constant in your own code by assigning a new value
+ to ``micropie.SESSION_TIMEOUT`` or by using a custom back-end that
+ persists with a different timeout policy.
+
+See also the :doc:`../howto/sessions` guide for examples of using and
+implementing session back‑ends.
diff --git a/docs/apidocs/reference/websocket.rst b/docs/apidocs/reference/websocket.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/reference/websocket.rst
@@ -0,0 +1,73 @@
+WebSocket class
+===============
+
+.. _websocket-reference:
+
+The :class:`~micropie.WebSocket` class encapsulates a WebSocket
+connection. MicroPie constructs an instance for each WebSocket
+request and passes it as the first argument to your WebSocket handler.
+
+Constructor
+-----------
+
+.. class:: WebSocket(receive, send)
+
+ Create a new WebSocket wrapper around the ASGI ``receive`` and
+ ``send`` callables. You do not instantiate this class yourself;
+ MicroPie does so internally.
+
+Methods
+-------
+
+.. method:: accept(subprotocol=None, session_id=None)
+
+ Accept the WebSocket connection. You must call this method before
+ sending or receiving messages. If you provide a *session_id*,
+ MicroPie sets a ``session_id`` cookie during the handshake. The
+ optional *subprotocol* argument specifies a negotiated subprotocol.
+
+.. method:: receive_text()
+
+ Await a text message from the client. Returns a string. Raises
+ :class:`~micropie.ConnectionClosed` if the client has disconnected.
+ If the client sends bytes, MicroPie decodes them as UTF-8 (ignoring
+ invalid sequences) and returns the decoded string.
+
+.. method:: receive_bytes()
+
+ Await a binary message from the client. Returns bytes. Raises
+ :class:`~micropie.ConnectionClosed` if the client has disconnected.
+ If the client sends text, MicroPie returns the UTF-8 encoded bytes.
+
+.. method:: send_text(data)
+
+ Send a text message to the client. Raises ``RuntimeError`` if you
+ have not called :meth:`accept`.
+
+.. method:: send_bytes(data)
+
+ Send a binary message to the client. Raises ``RuntimeError`` if
+ the connection has not been accepted.
+
+.. method:: close(code=1000, reason=None)
+
+ Close the WebSocket connection. By default uses code 1000
+ (normal closure). The optional *reason* is sent to the client.
+
+Attributes
+----------
+
+.. attribute:: accepted
+
+ ``True`` if the WebSocket has been accepted.
+
+.. attribute:: session_id
+
+ The session ID set during the handshake, or ``None`` if not set.
+
+Exceptions
+----------
+
+MicroPie raises :class:`~micropie.ConnectionClosed` from
+:meth:`receive_text` and :meth:`receive_bytes` when the client
+disconnects. See :doc:`exceptions` for exception details.
diff --git a/docs/apidocs/tutorial/index.rst b/docs/apidocs/tutorial/index.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/tutorial/index.rst
@@ -0,0 +1,16 @@
+Tutorials
+=========
+
+The tutorials walk you through the basics of writing a MicroPie
+application. They are intended for readers who have never used
+MicroPie before. Each tutorial builds upon the previous one and
+demonstrates a specific aspect of the framework. Tutorials should
+present clear, logical steps and avoid long theoretical discussions.
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Tutorials
+
+ quickstart
+ routing
+ websockets
diff --git a/docs/apidocs/tutorial/quickstart.rst b/docs/apidocs/tutorial/quickstart.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/tutorial/quickstart.rst
@@ -0,0 +1,80 @@
+Quick start
+===========
+
+This tutorial shows you how to install MicroPie and run a very simple
+application. By the end you will be able to serve an HTTP
+endpoint that returns plain text. This section assumes that you
+already have Python 3.8 or later installed.
+
+Installation
+------------
+
+MicroPie is distributed on the Python Package Index (PyPI). The
+recommended way to install it is via ``pip`` with the standard
+optional dependencies:
+
+.. code-block:: console
+
+ $ pip install micropie[standard]
+
+This command installs MicroPie along with the Jinja2 template engine
+and the ``multipart`` parser for handling file uploads. If you want
+the fastest JSON parsing and a preconfigured ASGI server, you can
+install all optional extras:
+
+.. code-block:: console
+
+ $ pip install micropie[all]
+
+See :doc:`../reference/session` for details about session back-ends and
+:doc:`../howto/templates` for information on templates.
+
+Writing your first application
+------------------------------
+
+Create a file called ``app.py`` with the following contents:
+
+.. code-block:: python
+
+ from micropie import App
+
+ class MyApp(App):
+ async def index(self):
+ return "Welcome to MicroPie ASGI."
+
+ app = MyApp()
+
+MicroPie applications are defined by subclassing :class:`~micropie.App`.
+Each public method of your subclass becomes a potential route handler
+automatically mapped to an HTTP path. The special method ``index``
+handles requests to the root path ``/``. Handlers may be asynchronous
+(``async def``) or synchronous functions and can return strings,
+bytes, JSON‑serialisable objects, tuples of status and body, or an
+async generator for streaming responses.
+
+Running the application
+-----------------------
+
+MicroPie itself is not a web server; it is an ASGI application. To
+run it you will need an ASGI server such as Uvicorn, Hypercorn or
+Daphne. Install Uvicorn if you have not already:
+
+.. code-block:: console
+
+ $ pip install uvicorn
+
+Start your application with Uvicorn:
+
+.. code-block:: console
+
+ $ uvicorn app:app
+
+By default Uvicorn listens on ``http://127.0.0.1:8000``. Open that URL
+in your browser and you should see the text “Welcome to MicroPie ASGI.”
+
+What’s next?
+------------
+
+Now that you have a running MicroPie application, proceed to the
+:doc:`routing <routing>` tutorial to learn how URL paths map to
+methods and how to pass parameters to your handlers.
diff --git a/docs/apidocs/tutorial/routing.rst b/docs/apidocs/tutorial/routing.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/tutorial/routing.rst
@@ -0,0 +1,157 @@
+Routing and handlers
+====================
+
+MicroPie maps incoming HTTP requests to methods on your :class:`~micropie.App`
+subclass. This section explains how the mapping works and how your
+handlers receive input from the URL path, query strings, form data and
+sessions.
+
+URL to function mapping
+-----------------------
+
+When an HTTP request arrives, MicroPie extracts the path portion of the
+URL and uses the first path segment to determine which method should
+handle the request. For example, a GET request to ``/greet`` calls
+``greet`` on your :class:`~micropie.App` subclass. A request to the
+root URL ``/`` calls ``index``. Only methods that do not start with
+an underscore are exposed as route handlers. Prefacing a method name
+with an underscore makes it private and hides it from external
+requests.
+
+Handlers may be synchronous or asynchronous functions. They return
+either a string, bytes, a JSON‑serialisable object, a tuple of
+``(status_code, body)`` or ``(status_code, body, headers)``, or an
+iterator/generator for streaming responses. See
+:doc:`../howto/streaming` for details on streaming.
+
+Parameters and arguments
+------------------------
+
+MicroPie automatically populates handler arguments from several
+sources in the following order:
+
+1. **Path parameters** – Additional path segments after the first map to
+ positional parameters. For example:
+
+ .. code-block:: python
+
+ class AppExample(App):
+ async def greet(self, name):
+ return f"Hello, {name}!"
+
+ Visiting ``/greet/Alice`` passes ``"Alice"`` as the ``name`` argument.
+ You can also use ``*args`` to capture an arbitrary number of path
+ segments.
+
+2. **Query parameters** – Named parameters in the query string fill
+ keyword arguments when path parameters are exhausted. For example,
+ ``/greet?name=Alice`` also passes ``"Alice"`` to the ``name``
+ parameter.
+
+3. **Body/form data** – For POST, PUT and PATCH requests, form fields
+ populate handler arguments. JSON bodies are decoded into a
+ dictionary of key/value pairs.
+
+4. **Files** – If the request is multipart/form‑data, uploaded files
+ appear in :attr:`~micropie.Request.files`. You can declare a file
+ argument in your handler signature to receive a file object.
+
+5. **Session data** – Values stored in :attr:`~micropie.Request.session`
+ fill remaining parameters. See :doc:`../howto/sessions` for details.
+
+6. **Default values** – If no other source provides a value, default
+ values in your function signature are used.
+
+If MicroPie cannot determine a value for a required parameter, it
+returns a ``400 Bad Request``.
+
+Helpers and raw request data
+----------------------------
+
+In handlers, you can access request input through helper methods or
+through raw parsed attributes:
+
+* Helpers:
+
+ * ``self.request.query(name, default=None)`` returns the first query
+ value.
+ * ``self.request.form(name, default=None)`` returns the first
+ form/body value.
+ * ``self.request.json(name=None, default=None)`` returns either the
+ full parsed JSON payload or a key from a top-level JSON object.
+
+* Raw attributes:
+
+ * ``self.request.path_params``: list of positional path segments.
+ * ``self.request.query_params``: ``dict[str, list[str]]`` parsed from
+ the query string.
+ * ``self.request.body_params``: ``dict[str, list[str]]`` parsed from
+ form-urlencoded payloads, or mirrored from top-level JSON objects.
+ * ``self.request.get_json``: full parsed JSON payload.
+ * ``self.request.session``: session dictionary.
+ * ``self.request.files``: uploaded multipart files.
+
+The helper APIs are convenient when you need a single value. The raw
+attributes are useful when you need full multi-value access or exact
+payload inspection.
+
+Examples
+--------
+
+The following examples illustrate common patterns:
+
+.. code-block:: python
+
+ class MyApp(App):
+ async def greet(self, name="Guest"):
+ """Return a greeting for a named visitor.
+
+ If the ``name`` argument is not provided via the path or
+ query parameters, ``"Guest"`` is used as a default.
+ """
+ return f"Hello, {name}!"
+
+ async def add(self, x, y):
+ """Add two numbers provided via path segments.
+
+ Example: ``/add/2/3`` returns ``5``.
+ """
+ return str(int(x) + int(y))
+
+ async def submit(self, username="Anonymous"):
+ """Handle a form submission.
+
+ This handler accepts POST requests and uses the
+ ``username`` field from the request body.
+ """
+ return f"Form submitted by: {username}"
+
+See :ref:`Request objects <request-object>` for the attributes
+available on the current request and :ref:`App class <app-class>` for
+details about the ``App`` class.
+
+HTTP methods and responses
+--------------------------
+
+Handlers run for any HTTP method unless you explicitly check
+``self.request.method`` inside the handler. It is your
+responsibility to dispatch based on the method if your endpoint should
+behave differently for GET and POST. Handlers may return:
+
+* A string or bytes – sent as the body of the response with a
+ ``200 OK`` status.
+* A JSON‑serialisable object – automatically encoded into JSON and
+ returned with a ``Content‑Type`` of ``application/json``.
+* A tuple ``(status_code, body)`` – sets the HTTP status and body.
+* A tuple ``(status_code, body, headers)`` – sets status, body and
+ additional headers. Headers should be a list of ``(name, value)`` pairs.
+* A generator or async generator – streams chunks to the client. Use
+ this for large responses or server‑sent events.
+
+Advanced routing
+----------------
+
+You can implement explicit routing, path prefixing or complex
+dispatching by writing a custom :class:`~micropie.HttpMiddleware`. See
+the :doc:`../howto/middleware` guide and the examples in the
+``examples/explicit_routing`` directory of the source distribution.
diff --git a/docs/apidocs/tutorial/websockets.rst b/docs/apidocs/tutorial/websockets.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/tutorial/websockets.rst
@@ -0,0 +1,88 @@
+WebSocket support
+=================
+
+MicroPie includes first‑class support for WebSockets. WebSockets are a
+persistent, bidirectional communication channel over a single TCP
+connection. They enable real‑time applications such as chat, live
+notifications and collaborative editing.
+
+Mapping WebSocket routes
+------------------------
+
+WebSocket handlers live on the same :class:`~micropie.App` subclass
+that serves your HTTP routes. The naming convention is similar to
+HTTP handlers, but with a ``ws_`` prefix. For example, a method
+called ``ws_chat`` handles WebSocket connections at ``/chat``. If the
+path is empty, ``ws_index`` handles the root WebSocket route.
+
+When a WebSocket connection is initiated, MicroPie constructs a
+:class:`~micropie.WebSocket` object and passes it as the first
+argument to your handler, along with any path or query parameters. A
+typical handler must call :meth:`~micropie.WebSocket.accept` to accept
+the connection and then use :meth:`~micropie.WebSocket.receive_text`
+and :meth:`~micropie.WebSocket.send_text` (or their ``bytes``
+counterparts) to communicate.
+
+Example: echo server
+--------------------
+
+The example below implements a simple echo server. The server
+accepts the WebSocket connection and then echoes back whatever text it
+receives. When the client disconnects, the handler finishes.
+
+.. code-block:: python
+
+ from micropie import App, ConnectionClosed
+
+ class MyApp(App):
+ async def ws_echo(self, ws):
+ # Accept the connection before receiving or sending messages.
+ await ws.accept()
+ while True:
+ try:
+ message = await ws.receive_text()
+ except ConnectionClosed:
+ # Client closed the connection
+ break
+ # Send the same message back to the client
+ await ws.send_text(f"Echo: {message}")
+
+ app = MyApp()
+
+To test this endpoint, run your application and connect to
+``ws://127.0.0.1:8000/echo`` using a WebSocket client. Most modern
+browsers support WebSockets via JavaScript.
+
+Accessing query and path parameters
+-----------------------------------
+
+Just like HTTP handlers, WebSocket handlers receive path and query
+parameters. Additional positional arguments come from the path, and
+keyword arguments are filled from the query string or session. For
+example:
+
+.. code-block:: python
+
+ class MyApp(App):
+ async def ws_greet(self, ws, name="Guest"):
+ await ws.accept()
+ await ws.send_text(f"Hello {name}!")
+ await ws.close()
+
+Connecting to ``ws://localhost:8000/greet/Alice`` sends back
+``"Hello Alice!"``. Connecting to ``ws://localhost:8000/greet?name=Bob``
+sends ``"Hello Bob!"``. See :ref:`WebSocket class
+<websocket-reference>` for the complete API of the
+:class:`~micropie.WebSocket` class.
+
+Integrating Socket.IO
+---------------------
+
+MicroPie focuses on the core WebSocket protocol. If you need more
+advanced real‑time features—automatic reconnection, broadcasting, or
+fallback transports such as polling—you can integrate
+`python‑socketio <https://python-socketio.readthedocs.io>`_. See the
+``examples/socketio`` directory in the MicroPie source distribution for
+sample code and instructions. When integrating Socket.IO, you still
+run your MicroPie application behind an ASGI server and attach the
+Socket.IO server as additional middleware or route.
diff --git a/docs/apidocs/whats_new.rst b/docs/apidocs/whats_new.rst
new file mode 100644
--- /dev/null
+++ b/docs/apidocs/whats_new.rst
@@ -0,0 +1,74 @@
+.. _release-notes:
+
+What's new in MicroPie
+======================
+
+This page summarises noteworthy changes in recent MicroPie releases. It
+is not an exhaustive changelog, but it highlights the features and bug
+fixes most likely to affect application developers. For the full list of
+releases, consult the `GitHub releases page <https://github.com/patx/micropie/releases>`_.
+
+Version highlights
+------------------
+
+* **0.28** – Adds ``Request.json`` helper for convenient JSON access and
+ updates routing docs to show both automatic argument binding and
+ helper-based request access patterns.
+* **0.27** – Adds ``Request.query`` and ``Request.form`` helpers for more
+ direct access to query-string and form data.
+* **0.26** – Makes sub-application handoff independent of middleware
+ ordering, improving reliability for mounted ASGI apps.
+* **0.25** – Fixes Unicode redirect handling by percent-encoding
+ non-ASCII path segments before writing the ``Location`` header.
+* **0.24** – Improves session lifecycle behaviour by expiring stale
+ in-memory sessions and deleting persisted sessions when they become
+ empty.
+* **0.23** – Ensures background multipart parsing stops immediately when a
+ request is terminated by middleware, preventing unnecessary resource
+ usage.
+* **0.22** – Fixes body parsing in mounted sub-applications by sharing
+ ``body_params`` and ``body_parsed`` state with the parent request.
+* **0.21** – Allows the implicit ``index`` route handler to receive path
+ parameters, aligning it with other handlers.
+* **0.20** – Introduces concurrent multipart parsing with bounded queues
+ so that large uploads do not block other requests.
+* **0.19** – Improves debugging via richer tracebacks and adds
+ middleware hooks for mounting sub-applications.
+* **0.18** – Cancels asynchronous generator handlers when the client
+ disconnects to avoid leaking resources during streaming responses.
+* **0.17** – Updates the lifespan hook API to match middleware APIs,
+ enabling ``app.startup_handlers.append(handler)`` style usage.
+* **0.16** – Adds first-class lifespan event support with
+ ``on_startup`` and ``on_shutdown`` helpers.
+* **0.15** – Hardens optional dependency imports, improving behaviour
+ when extras such as ``orjson`` or ``jinja2`` are unavailable.
+* **0.14** – Renames the package import to ``micropie`` (breaking change)
+ to align module naming with Python conventions.
+* **0.13** – Introduces built-in WebSocket support, opening the door to
+ real-time applications without additional middleware.
+
+Upgrade tips
+------------
+
+* **Check optional extras.** When upgrading, confirm that any optional
+ dependencies you rely on (``jinja2``, ``multipart``, ``orjson``) are
+ still installed, especially if you pin minimal environments.
+* **Review lifespan handlers.** Releases 0.16 and 0.17 reshape the
+ startup/shutdown API. Adjust custom startup hooks to use the new
+ ``app.startup_handlers`` and ``app.shutdown_handlers`` lists.
+* **Validate redirects with non-ASCII paths.** If your app builds
+ redirect targets dynamically, verify behaviour after 0.25 where
+ redirect paths are safely encoded for ASGI header transport.
+* **Audit long-lived streams.** If you emit server-sent events or
+ streaming responses, ensure your handlers handle cancellation so the
+ 0.18 change does not mask cleanup bugs.
+* **Evaluate mounted applications.** If you mount other ASGI apps using
+ middleware, upgrade to at least 0.22 for body parsing fixes and to
+ 0.26 for middleware-ordering-safe sub-application routing.
+
+Looking for more?
+-----------------
+
+The :mod:`micropie` source distribution ships a ``docs/release_notes.md``
+file with the raw changelog. You can also browse historical discussions
+and pull requests on the project's `GitHub repository <https://github.com/patx/micropie>`_.
diff --git a/docs/favicon.ico b/docs/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..a2f567e8f503e64850168fac2a7b5d84cec2b75e
GIT binary patch
literal 15406
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
b*vyBWwM$6f<%a)vdj9X+M*2Vc-%9@j<lp0J
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,289 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta name="description" content="MicroPie is an ultra-micro ASGI Python web framework that gets out of your way. - patx/micropie">
+ <meta property="og:url" content="https://github.com/patx/micropie">
+ <meta property="og:type" content="website">
+ <meta property="og:title" content="GitHub - patx/micropie: MicroPie is an ultra-micro ASGI Python web framework that gets out of your way.">
+ <meta property="og:description" content="MicroPie is an ultra-micro ASGI Python web framework that gets out of your way. - patx/micropie">
+ <meta property="og:image" content="https://repository-images.githubusercontent.com/918862197/ae93975f-208b-4a71-bac4-f164a509ac16">
+ <meta name="twitter:card" content="summary_large_image">
+ <meta property="twitter:domain" content="github.com">
+ <meta property="twitter:url" content="https://github.com/patx/micropie">
+ <meta name="twitter:title" content="GitHub - patx/micropie: MicroPie is an ultra-micro ASGI Python web framework that gets out of your way.">
+ <meta name="twitter:description" content="MicroPie is an ultra-micro ASGI Python web framework that gets out of your way. - patx/micropie">
+ <meta name="twitter:image" content="https://repository-images.githubusercontent.com/918862197/ae93975f-208b-4a71-bac4-f164a509ac16">
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
+ <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600&display=swap" rel="stylesheet">
+
+ <title>MicroPie - An ultra-micro Python ASGI web framework</title>
+
+ <style>
+ /* --- Global safety: never allow horizontal overflow --- */
+ html, body {
+ width: 100%;
+ max-width: 100%;
+ overflow-x: hidden;
+ }
+
+ *, *::before, *::after {
+ box-sizing: border-box;
+ }
+
+ body {
+ font-family: 'Poppins', sans-serif;
+ margin: 0;
+ padding: 0;
+ color: #333;
+ }
+
+ .container {
+ width: min(800px, 100%);
+ margin: 0 auto;
+ background: #fff;
+ padding: 40px;
+ border-radius: 15px;
+ text-align: center;
+ }
+
+ h1, h2 {
+ color: #d20f23;
+ font-weight: 600;
+ }
+
+ h2 {
+ text-align: left;
+ }
+
+ p {
+ font-size: 18px;
+ line-height: 1.6;
+ color: #555;
+ }
+
+ a {
+ color: #d20f23;
+ text-decoration: none;
+ font-weight: 600;
+ transition: color 0.3s ease;
+ }
+
+ a:hover {
+ color: #d20f23;
+ }
+
+ pre {
+ background: #f5f2f0;
+ padding: 20px;
+ border-radius: 10px;
+ text-align: left;
+ font-size: 1.05em;
+ max-width: 100%;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ code {
+ max-width: 100%;
+ }
+
+ .logo img {
+ width: 100%;
+ max-width: 600px;
+ height: auto;
+ }
+
+ span.c2 { color: #8F5902; }
+ span.c9 { color: #d20f23; }
+
+ .button {
+ display: inline-block;
+ background: #d20f23;
+ color: #fff;
+ padding: 15px 30px;
+ border-radius: 12px;
+ font-size: 18px;
+ font-weight: 600;
+ transition: background 0.3s ease;
+ }
+
+ .button:hover {
+ background: #fff;
+ border: 2px solid #d20f23;
+ color: #d20f23;
+ }
+
+ /* GitHub corner */
+ .github-corner {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 1000;
+ }
+
+ .github-corner svg {
+ fill: #d20f23;
+ transition: transform 0.25s ease;
+ }
+
+ .github-corner:hover svg {
+ transform: scale(1.05);
+ }
+
+ .github-corner .octo-arm {
+ transform-origin: 130px 106px;
+ }
+
+ .github-corner:hover .octo-arm {
+ animation: octocat-wave 560ms ease-in-out;
+ }
+
+ @keyframes octocat-wave {
+ 0%, 100% { transform: rotate(0); }
+ 20%, 60% { transform: rotate(-25deg); }
+ 40%, 80% { transform: rotate(10deg); }
+ }
+
+ /* --- Mobile fixes --- */
+ @media (max-width: 768px) {
+ .container {
+ padding: 20px;
+ }
+
+ pre {
+ white-space: pre-wrap;
+ word-break: break-word;
+ overflow-x: hidden;
+ }
+
+ .github-corner {
+ display: none;
+ }
+ }
+
+ @media (prefers-color-scheme: dark) {
+ html, body {
+ background: #0b0f14;
+ color: #e7eaf0;
+ }
+
+ .container {
+ background: #0b0f14;
+ color: #e7eaf0;
+ }
+
+
+ p {
+ color: rgba(231,234,240,0.82);
+ }
+
+ a {
+ color: #d20f23;
+ }
+
+ a:hover {
+ color: #d20f23;
+ }
+
+ pre {
+ background: #0b111a;
+ border: 1px solid rgba(255,255,255,0.08);
+ color: #e7eaf0;
+ }
+
+ /* keep your little code colors readable on dark */
+ span.c2 { color: #ffd17a; }
+ span.c9 { color: #d20f23; }
+
+ .button {
+ background: #d20f23; /* keep brand red */
+ color: #fff;
+ border: 1px solid rgba(255,255,255,0.10);
+ }
+
+ .button:hover {
+ background: transparent;
+ border: 2px solid #d20f23;
+ color: #d20f23;
+ }
+
+ /* GitHub corner stays branded */
+ .github-corner svg {
+ fill: #d20f23;
+ }
+ }
+ </style>
+</head>
+
+<body>
+
+<div class="container">
+ <div class="logo">
+ <img src="https://patx.github.io/micropie/logo.png" alt="MicroPie logo">
+ </div>
+
+ <h2>Ultra-micro ASGI framework, BSD 3-clause</h2>
+
+ <pre><code>
+<span class="c2">from</span> micropie <span class="c2">import</span> App
+
+<span class="c2">class</span> MyApp(<span class="c9">App</span>):
+
+ <span class="c2">async def</span> index(self, name=<span class="c9">"world"</span>):
+ return <span class="c9">f"Hello</span> {name}<span class="c9">!"</span>
+
+app = MyApp()
+ </code></pre>
+
+
+
+ <h2>Easy to Install</h2>
+
+ <pre><code><span class="c2">$</span> pip install <span class="c9">micropie</span></code></pre>
+
+ <p><br>
+ <a href="https://github.com/patx/micropie" class="button">
+ View source, examples and documentation on GitHub
+ </a>
+ </p>
+</div>
+
+<a class="github-corner" href="https://github.com/patx/micropie" aria-label="View source on GitHub">
+ <svg width="80" height="80" viewBox="0 0 250 250" aria-hidden="true">
+ <path d="M0,0 L250,0 L250,250 Z" fill="#d20f23"></path>
+ <path d="M128.3,109.0
+ C113.8,99.7 119.0,89.6 119.0,89.6
+ C122.0,82.7 120.5,78.6 120.5,78.6
+ C119.2,72.0 123.4,76.3 123.4,76.3
+ C127.3,80.9 125.5,87.3 125.5,87.3
+ C122.9,97.6 130.6,101.9 134.4,103.2"
+ fill="#fff"
+ class="octo-arm"/>
+ <path d="M115.0,115.0
+ C114.9,115.1 118.7,116.5 119.8,115.4
+ L133.7,101.6
+ C136.9,99.2 139.9,98.4 142.2,98.6
+ C133.8,88.0 127.5,74.4 143.8,58.0
+ C148.5,53.4 154.0,51.2 159.7,51.0
+ C160.3,49.4 163.2,43.6 171.4,40.1
+ C171.4,40.1 176.1,42.1 178.8,56.2
+ C183.1,58.6 187.2,61.8 190.9,65.4
+ C194.5,69.0 197.7,73.2 200.1,77.6
+ C214.2,80.3 216.2,85.0 216.2,85.0
+ C212.7,93.2 206.9,96.1 205.4,96.7
+ C205.1,102.4 203.0,107.8 198.3,112.5
+ C181.9,128.9 168.3,122.5 157.7,114.1
+ C157.9,116.9 156.7,120.9 152.7,124.9
+ L141.0,136.5
+ C139.8,137.7 141.6,141.6 141.8,141.8
+ Z"
+ fill="#fff"/>
+ </svg>
+</a>
+
+</body>
+</html>
+
diff --git a/docs/logo.png b/docs/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d4284ffa69b983fa4c62af8d5543bf2ae038830
GIT binary patch
literal 2149422
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	FC*c~XF#O4CQ02RraHZgJOU`M?YS
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�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
[Diff truncated. Use the raw view or local clone for the full content.]