Hump
Hump (a defining part of grizzly's neck) is a zero-dependency simple async web server framework for registering request handlers
Why
- Because dataclasses have smaller overhead than Pydantic models.
- "I understand how something works only if i know how to create it myself"
- Making software from scratch is something that is inherently fun and challenging
How
- Python
socketpackage provides the means to connect/accept withAF_INET(TCP/IP) protocol - Create a socket, set it up as non-blocking, bind to
host, portpair - Listen for incoming connections on socket
- When client connects, accept, create an asyncio task to handle this request further, main return to 3 to accept other clients
- Parse incoming request into dataclass
Requestmodel, pass it into registered async handler byurl, methodpair - Gather response data/
Responseobject, encode to bytes and send it back - Close socket and finish task
Usage example
import asyncio
from hump import Hump, Request
app = Hump("", 8342)
@app.get("/")
async def index(request: Request):
return "Hello, world!"
asyncio.run(app.serve())
And that's it, you can run this example, go to your browser and perform http request to localhost:8342 to get Hello, world! answer.
You can also return another HTTP status code with data attached like this
from hump import Response, statuses
# ... As defined in example usage before
@app.get("/")
async def index(request: Request)
return Response("Howdy!", statuses.IM_A_TEAPOT)
Limitations
- HTTP/1.1 only, no HTTPS
- No automatic headers handling
- No automatic json response handling, only
strtoResponsewrapping
Metadata
Release files for hump 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hump-1.1.0.tar.gz | 8.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hump-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.1 kB
Release files / hump-1.1.0.tar.gz
| Download URL | hump-1.1.0.tar.gz |
|---|---|
| Size | 8.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
981666e85487445c8f1ccfacdb2f6cd1d766989b41902c8699d33f36ea338fcc
|
|
BLAKE2b-256 checksum How to use checksums |
6d782adf77028b81e09850683d04296ad3a6a9e911bdcc392fbc57f7ddcb95df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.7
|
Release files / hump-1.1.0-py3-none-any.whl
| Download URL | hump-1.1.0-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b49d74215443951909fb01a9ab3f771faa83f15c34ca19683787ee4a8e8e055
|
|
BLAKE2b-256 checksum How to use checksums |
95c76a7b2b242f9e1aee9bbdd08a6f7dd03d0542f0a2a1ce9f90baa2e56bdc73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.7
|