Skip to main content

Web API Utils for Werkzeug

Project description

wau - Web API Utils

Web API Utils, or short wau, is a thin layer on top of Werkzeug to provide a simple and consistent interface for writing APIs in Python. wau is built for educational purposes and is not intended for production use. It is opinionated, as it only supports JSON as data format. It uses simple type annotations to define the expected input and output of the API endpoints. Common tasks as authentication, CORS and server-sent events are supported out of the box.

Installation

Install from PyPI:

pip install wau

or with uv:

uv add wau

Serving static files

run() can serve a static front-end next to your API. Pass static=True to serve files from the directory of the calling script, or static="some/dir" to serve a specific directory:

from wau import run

run(api, static=True)

Only an allow-listed set of file types is served by default (HTML, CSS, JavaScript, images, fonts, ...), so source code and dotfiles such as .env are never exposed. Adjust the allowed file-name globs with static_include and static_exclude (static_exclude takes precedence):

run(api, static=True, static_include=("*.html", "*.css", "*.js"))

While static serving is enabled, the served pages reload automatically in the browser whenever a file changes. This uses the optional watchdog package when it is installed and falls back to polling otherwise. Both this browser reload and Werkzeug's Python source reloader are controlled by use_reloader (on by default); set use_reloader=False to disable them.

Testing

Test dependencies are separated from runtime dependencies in pyproject.toml using the test dependency group.

Run the test suite:

uv run --group test python -m pytest -q

Run doctests:

uv run --group test python -m doctest .\wau.py

Publishing

Build package artifacts:

uv build

Validate metadata and README rendering:

uvx twine check dist/*

Upload to TestPyPI first:

uv publish --publish-url https://test.pypi.org/legacy/

Then publish to PyPI:

uv publish

License

This project is licensed under GNU LGPL v3 or later (LGPL-3.0-or-later).

If you distribute modified versions of this library, those library modifications must be published under the same license terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wau-0.1.4.tar.gz (21.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wau-0.1.4-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file wau-0.1.4.tar.gz.

File metadata

  • Download URL: wau-0.1.4.tar.gz
  • Upload date:
  • Size: 21.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for wau-0.1.4.tar.gz
Algorithm Hash digest
SHA256 034c59974a51c2b8269677788f89670aa6e333f484bc955b098caca08db6f695
MD5 6466b97b08ee1d087e2a8e4ab8a5c43c
BLAKE2b-256 0e6483d947c9152c68f37388cc17343c34dc40b893801fd3560a8b1f124aae11

See more details on using hashes here.

File details

Details for the file wau-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: wau-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for wau-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fd94761950b2eb94b37249f83d9c0049d14247a6808770604282cf5865c36899
MD5 c6437688e576228630580a6933e8d891
BLAKE2b-256 0a94baa8c65ac91ac784097d639f60bc69687162aae5e233070c3552c08c2ff9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page