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

Uploaded Source

Built Distribution

rouver-2.4.4-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rouver-2.4.4.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.9.2 Linux/5.10.0-14-amd64

File hashes

Hashes for rouver-2.4.4.tar.gz
Algorithm Hash digest
SHA256 54df48768d242a4d3e1d4709bd3b53e4b2dcc43b1172901c9d32b3fcc8fd6e64
MD5 1892f4798018859c8c2e38e0bf10f33c
BLAKE2b-256 82897e8c2974a463ef3bc47b82b4e073a83614519280b15a89d5509533693158

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for rouver-2.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4c93c25b5deb8513c94cd81f9804a58d78da6e216b3c36799444a5bb5e7fd715
MD5 1559f4a7ae98da6d67fa95c39c3f77df
BLAKE2b-256 1703dc1f0a5f2235e57c0fb19895895b10798c617cd328605c2b8b9be33fb7aa

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