Skip to main content

Hump

PyPI - License PyPI - Types PyPI - Version PyPI - Python Version

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

  1. Python socket package provides the means to connect/accept with AF_INET (TCP/IP) protocol
  2. Create a socket, set it up as non-blocking, bind to host, port pair
  3. Listen for incoming connections on socket
  4. When client connects, accept, create an asyncio task to handle this request further, main return to 3 to accept other clients
  5. Parse incoming request into dataclass Request model, pass it into registered async handler by url, method pair
  6. Gather response data/Response object, encode to bytes and send it back
  7. 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

  1. HTTP/1.1 only, no HTTPS
  2. No automatic headers handling
  3. No automatic json response handling, only str to Response wrapping

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)

Source distribution for hump 1.1.0
File Size Uploaded
hump-1.1.0.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hump 1.1.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page