govyn 0.19.0
pip install govyn
Latest version
Released:
HTTP APIs in typed Python
Navigation
Unverified details
These details have not been verified by PyPIProject links
Meta
- License: MIT License
- Author: Ruan Pearce-Authers
- Requires: Python >= 3.8
Classifiers
- License
- Operating System
- Programming Language
Project description
govyn
A tiny framework for writing async HTTP APIs in typed Python.
govyn (verb) - ask, inquire, query, question, request (Cornish Dictionary)
Features
- Async everywhere!
- Method params as query string arguments
- Dataclasses as request bodies
- Authentication with principals and privileges
- OpenAPI support with built-in routes:
/openapi/schema
: OpenAPI v3 schema as JSON/openapi/swagger
: embedded Swagger UI page for testing/openapi/redoc
: embedded Redoc documentation page
- Prometheus metrics support
Example
from dataclasses import dataclass
from typing import List
from govyn import run
@dataclass
class AddRequest:
numbers: List[int]
@dataclass
class Response:
result: int
class CalculatorAPI:
# run initialisation tasks, e.g. connecting to a database
async def startup(self) -> None:
pass
# be a good citizen and dispose of things appropriately
async def shutdown(self) -> None:
pass
# get_ methods take a query string
# callers will receive a 400 Bad Request if they supply invalid values
async def get_add(self, a: int, b: int) -> Response:
return Response(a + b)
# post_ methods take a JSON request body
# also type-checked according to the dataclass definition
async def post_add(self, req: AddRequest) -> Response:
return Response(sum(req.numbers))
run(CalculatorAPI())
Try out the built-in Swagger UI on this example Heroku deployment, built from source available in the govyn-demo repository!
Or, run the server locally and hit it with curl:
> curl "http://localhost/add?a=10&b=32"
{"result": 42}
> curl "http://localhost/add" -d '{ "numbers": [ 1000, 300, 30, 7 ] }'
{"result": 1337}
Installation
# from PyPI
pip install govyn
# or directly from Git
pip install git+ssh://git@github.com/returnString/govyn.git
Project details
Unverified details
These details have not been verified by PyPIProject links
Meta
- License: MIT License
- Author: Ruan Pearce-Authers
- Requires: Python >= 3.8
Classifiers
- License
- Operating System
- Programming Language
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file govyn-0.19.0.tar.gz
.
File metadata
- Download URL: govyn-0.19.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e19119b47952eb740a7c7790d6f62255748dc924e450feea4450908c63a1b96 |
|
MD5 | 9196d519d82b73b5632c10a346ab5757 |
|
BLAKE2b-256 | 6ce018767bfea78b00808afee2ed496bc700c94a275031fd10fa9b22519e036e |
File details
Details for the file govyn-0.19.0-py3-none-any.whl
.
File metadata
- Download URL: govyn-0.19.0-py3-none-any.whl
- Upload date:
- Size: 12.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d32c14b291df2b26fee94e75de0ab4da785ad14bea8b24461b2de8431ef2b86b |
|
MD5 | e0635a48a0a701722f6213891b5dc581 |
|
BLAKE2b-256 | 8df5d62d7776d4bc920ca3b8471b613fe73df1d65f14b6292fd6e92cb194388f |