spiderweb
As a professional web developer focusing on arcane uses of Django for arcane purposes, it occurred to me a little while ago that I didn't actually know how a web framework worked.
So I built one.
spiderweb is a small web framework, just big enough to hold a spider. Getting started is easy:
uv add spiderweb-framework
# or
pip install spiderweb-framework
Create a new file and drop this in it:
from spiderweb import SpiderwebRouter
from spiderweb.response import HttpResponse
app = SpiderwebRouter()
@app.route("/")
def index(request):
return HttpResponse("HELLO, WORLD!")
if __name__ == "__main__":
app.start()
View the docs here!
Development (using uv)
This repository uses uv for local development and testing.
- Create a virtual environment:
uv venv - Activate it (Windows):
.venv\Scripts\activate - Activate it (POSIX):
source .venv/bin/activate - Install deps (editable + dev):
uv pip install -e .[dev] - Run tests:
uv run python -m pytest - Lint/format:
uv run ruff check .anduv run black .
My goal with this framework was to do three things:
- Learn a lot
- Create an unholy blend of Django and Flask
- Not look at any existing code. Go off of vibes alone and try to solve all the problems I could think of in my own way
And, honestly, I think I got there. Here's a non-exhaustive list of things this can do:
- Function-based views
- Optional Flask-style URL routing
- Optional Django-style URL routing
- URLs with variables in them a lá Django
- Full middleware implementation
- Limit routes by HTTP verbs
- Custom error routes
- Built-in dev server
- Gunicorn support
- HTML templates with Jinja2
- Static files support
- Cookies (reading and setting)
- Optional append_slash (with automatic redirects!)
- CSRF middleware
- CORS middleware
- Optional POST data validation middleware with Pydantic
- Session middleware with built-in session store
- Database support (using SQLAlchemy, but you can use whatever you want as long as there's a SQLAlchemy driver for it)
- Tests (currently roughly 89% coverage)
Metadata
Release files for spiderweb-framework 2.7.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 | Provenance | |
|---|---|---|---|---|
| spiderweb_framework-2.7.0.tar.gz | 658.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spiderweb_framework-2.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 754.5 kB
Release files / spiderweb_framework-2.7.0.tar.gz
| Download URL | spiderweb_framework-2.7.0.tar.gz |
|---|---|
| Size | 658.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
310afe9e8c9f739997462e9d6bc311ff4e6fa73a21d2f0376b9adb75d1f46c49
|
|
BLAKE2b-256 checksum How to use checksums |
dd29f31ac262dd3d1a94ef12b69c692d81c171e623e536f32ea8a8d0ba07775f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / spiderweb_framework-2.7.0-py3-none-any.whl
| Download URL | spiderweb_framework-2.7.0-py3-none-any.whl |
|---|---|
| Size | 95.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f269a29ffd53623846110954ba32f7acd1e0f194129c1e9527bd61e96cb8050
|
|
BLAKE2b-256 checksum How to use checksums |
93ea8746b6cc3b22a2962eac23d11d14bcd586e5585b106defc6cf0e4a84e218
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for spiderweb-framework 2.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.