No project description provided
Project description
Falibrary
Falcon add-on for API specification and validation.
Provide OpenAPI document and validation for flask service.
Mainly built for Machine Learning Model services.
If you're using Flask, check my another Python library Flaskerk.
Quick Start
Install with pip install falibrary
(Python 3.6+)
Basic example
import falcon
from wsgiref import simple_server
from pydantic import BaseModel, Schema
from random import random
from falibrary import Falibrary
api = Falibrary(
title='Demo Service',
version='0.1.2',
)
class Query(BaseModel):
text: str
class Demo():
@api.validate(query=Query)
def on_post(self, req, resp):
print(req.context.query)
pass
if __name__ == '__main__':
app = falcon.API()
app.add_route('/api/demo', Demo())
api.register(app)
httpd = simple_server.make_server('localhost', 8000, app)
httpd.serve_forever()
More features
import falcon
from wsgiref import simple_server
from pydantic import BaseModel, Schema
from random import random
from falibrary import Falibrary
api = Falibrary(
title='Demo Service',
version='0.1.2',
)
class Query(BaseModel):
text: str = Schema()
class Response(BaseModel):
label: int
score: float = Schema(
...,
gt=0,
lt=1,
)
class Data(BaseModel):
uid: str
limit: int
vip: bool
class Classification():
@api.validate(query=Query, data=Data, resp=Response, x=[falcon.HTTP_403])
def on_post(self, req, resp, source, target):
print(f'{source} => {target}')
print(req.context.query)
print(req.context.data)
if random() < 0.5:
raise falcon.HTTPForbidden("Bad luck. You're fobidden.")
return Response(label=int(10 * random()), score=random())
if __name__ == '__main__':
app = falcon.API()
app.add_route('/api/{source}/{target}', Classification())
api.register(app)
httpd = simple_server.make_server('localhost', 8000, app)
httpd.serve_forever()
Try it with http POST ':8000/api/zh/en?text=hello' uid=0b01001001 limit=5 vip=true
.
Open the docs in http://127.0.0.1:8000/apidoc .
For more examples, check examples.
Project details
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
falibrary-0.3.1.tar.gz
(6.5 kB
view details)
Built Distribution
File details
Details for the file falibrary-0.3.1.tar.gz
.
File metadata
- Download URL: falibrary-0.3.1.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ac458b0131e6f390f2364c03339de759aec45997ad8c12cb3933df769f4ae73 |
|
MD5 | 92b41ae3f697e159205a183e24d11d4b |
|
BLAKE2b-256 | 8fb4eb3b4e8f85c73ac1624d305b53ed041812cc54f49f031c5ed08c7c93ce01 |
File details
Details for the file falibrary-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: falibrary-0.3.1-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.31.1 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 148d785f13b0193f5e7a940ba68a89ddcc855b11ccbc0cedec894c95d034ebac |
|
MD5 | 5cdab6a88a73740ae81e52edad5beab7 |
|
BLAKE2b-256 | edd6c8a16f2c42396e4acdda06074452befb44fd517d8a095978a5859d06ad9b |