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.5.0.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

rouver-2.5.0-py3-none-any.whl (39.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rouver-2.5.0.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.2 Linux/5.10.0-20-amd64

File hashes

Hashes for rouver-2.5.0.tar.gz
Algorithm Hash digest
SHA256 9f3117614eeef0f2287c2cf5766377fa0c5d4b47a611cb2036092ec3e195a917
MD5 58af0c8d1790e69d7a8f0f76e30fd88b
BLAKE2b-256 ae122911462b74779ff655470f3c1af765927e96d6baa7e5e43eb984d4410f84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rouver-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 39.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.9.2 Linux/5.10.0-20-amd64

File hashes

Hashes for rouver-2.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 678713b1e4a718a178f15f59b1f6d4630cd0c1bb7c378e566baeb745601fdca7
MD5 0cf70573ddb7fbae78f7b7f52102bd59
BLAKE2b-256 84ae592f058c822a934c01ea8370ed2f1e9b98ac4b842b94cca97c294e0c4183

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