Skip to main content

A microframework

Project description

Rouver

A microframework for Python 3, based on werkzeug.

MIT License PyPI - Python Version GitHub pypi Travis CI

Routing

>>> from rouver.router import Router
>>> from rouver.response import respond_with_html, respond_with_json
>>> def get_index(environ, start_response):
...     return respond_with_html(start_response, "<div>Foo</div>")
>>> def get_count(environ, start_response):
...     return respond_with_json(start_response, {"count": 42})
>>> router = Router()
>>> router.add_routes([
...     ("", "GET", get_index),
...     ("count", "GET", get_count),
... ])

Routes with placeholders:

>>> def get_addition(environ, start_response):
...     num1, num2 = path
...     return response_with_json(start_response, {"result": num1 + num2})
>>> def numeric_arg(request, path, value):
...     return int(value)
>>> router.add_template_handler("numeric", numeric_arg)
>>> router.add_routes([
...     ("add/{numeric}/{numeric}", "GET", get_addition),
... ])

Routes with wildcards:

>>> def get_wildcard(environ, start_response):
...     # environ["rouver.wildcard_path"] contains the remaining path
...     return respond(start_response)
>>> router.add_routes([
...     ("wild/*", "GET", get_wildcard),
... ])

Sub-routers:

>>> def get_sub(environ, start_response):
...     return respond(start_response)
>>> sub_router = Router()
>>> sub_router.add_routes([
...     ("sub", "GET", get_sub),
... ])
>>> router.add_sub_router("parent", sub_router)

Argument Handling

>>> from rouver.args import Multiplicity, parse_args
>>> from rouver.response import respond_with_json
>>> def get_count_with_args(request, path, start_response):
...     args = parse_args(request.environ, [
...         ("count", int, Multiplicity.REQUIRED),
...     ])
...     return respond_with_json({"count": args["count"]})

WSGI Testing

>>> from rouver.test import create_request, test_wsgi_app
>>> request = create_request("GET", "/my/path")
>>> response = test_wsgi_app(app, request)
>>> response.assert_status(HTTPStatus.OK)

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

rouver-2.6.0.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

rouver-2.6.0-py3-none-any.whl (39.5 kB view details)

Uploaded Python 3

File details

Details for the file rouver-2.6.0.tar.gz.

File metadata

  • Download URL: rouver-2.6.0.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.0 CPython/3.10.7 Linux/5.19.0-35-generic

File hashes

Hashes for rouver-2.6.0.tar.gz
Algorithm Hash digest
SHA256 df8e5cee042aae7315920a5305d03034e1d6d33cd8757e447d9cccd76fdb9218
MD5 7a0e6fb090853613d747d0d5ba085201
BLAKE2b-256 90aeeadeac19c0e4b954fd3f8045635b1b88cf4ee9f0c7aa08a60935c03efc37

See more details on using hashes here.

File details

Details for the file rouver-2.6.0-py3-none-any.whl.

File metadata

  • Download URL: rouver-2.6.0-py3-none-any.whl
  • Upload date:
  • Size: 39.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.0 CPython/3.10.7 Linux/5.19.0-35-generic

File hashes

Hashes for rouver-2.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ef394e5cf40ec2ca4cd4e4986f9c5ca772d0bb8ac556e302503a52c01463d5f
MD5 32a69c59e22de7684f779b81724e9178
BLAKE2b-256 acb0b2c903dad5736a9655bd437b304b6ecc2dc31254cd73ab7ab3451f125aa4

See more details on using hashes here.

Supported by

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