flaskdoc
FlaskDoc allows developers to programmatically compose openapi specifications for flask endpoints as a part of code without needing to write a separate yaml file, and it comes with SwaggerUI embedded. Its main focus is on documentation which frees developers to focus on getting their services coded.
Why flaskdoc
Focus only on documentation and not introduce some fancy new way of using flask.
Easily add to existing code without needing to refactor of change the way the code has been written
Little or no learning curve, as long as a developer is comforatble using flask developers, they can use flaskdoc. to learn quickly and not distract So developers focus on writing code
SwaggerUI integration for quickly testing and iterating through versions
Automatic data model to JSON Schema transformation that allows for finer grain configuration
Getting Started
Visit documentation page for more details.
Install
from pypi
$ pip install flaskdoc
from github
$ pip install https://github.com/kulgan/flaskdoc/tarball/master
To run examples you will need to install the dev extension
$ pip install flaskdoc[dev]
Register OpenAPI
Add top level openapi objects like Info, Contact, License etc
import flask
from flaskdoc import register_openapi, swagger
app = flask.Flask()
# initialize app, add all the blueprints you care about
# Create top level OpenAPI objects
# the info object
info = swagger.Info(
title="Test",
version="1.2.2",
contact=swagger.Contact(
name="Rowland", email="r.ogwara@gmail.com", url="https://github.com/kulgan"
),
license=swagger.License(name="Apache 2.0", url="https://www.example.com/license"),
)
# servers names and variables if necessary
servers = [swagger.Server(url="http://localhost:15172")]
# top level tags
tags = [
swagger.Tag(name="admin", description="Secured Admin-Only calls"),
swagger.Tag(name="developers", description="Operations available to regular developers"),
]
security_schemes = {
"api_key": swagger.ApiKeySecurityScheme(name="api_key"),
}
# register spec
register_openapi(app, info=info, servers=servers, tags=tags, security=security_schemes)
This adds the following endpoints to your list
/docs
/docs/openapi.yaml
/docs/openapi.json
Start Documenting
Now start documenting you flask routes
A simple post example
blp = flask.Blueprint("Dummy", __name__, url_prefix="/v1")
@swagger.POST(
tags=["administrator"],
description="Posts an Echo",
responses={"201": swagger.ResponseObject(description="OK")},
)
@blp.route("/echo", methods=["POST"])
def post():
req = flask.request.get_json(force=True)
return flask.jsonify(req), 200
A GET example with path parameter
blp = flask.Blueprint("Dummy", __name__, url_prefix="/v1")
@swagger.GET(
tags=["getEcho"],
operation_id="getEcho",
parameters=[swagger.PathParameter(name="sample", schema=str)],
description="Retrieve echos wit Get",
responses={
"200": swagger.ResponseObject(
description="Success", content=jo.PlainText(schema=jo.Email()),
)
},
)
@blp.route("/echo/<string:sample>", methods=["GET"])
def echo(sample: str):
"""
Sample GET request
Returns: Echos back whatever was sent
"""
return sample
Run your app and visit /docs to see the generated openapi specs
Running Examples
Two example projects are currently provided
petstore source OpenAPI Petstore
link-example - source OpenAPI link example
To run
$ pip install flaskdoc[dev]
$ flaskdoc start -n petstore
Contributing
Don’t hesitate to create a Github issue for any bugs or suggestions
Metadata
Release files for flaskdoc 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| flaskdoc-0.2.0.tar.gz | 5.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flaskdoc-0.2.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 10.4 MB
Release files / flaskdoc-0.2.0.tar.gz
| Download URL | flaskdoc-0.2.0.tar.gz |
|---|---|
| Size | 5.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bb783b2c500157577083dc3399c0f9b57c1ed8c91d56f192bd229c0ee77153ad
|
|
BLAKE2b-256 checksum How to use checksums |
7867c1a7bfaa79da037c8e1b3183aebf22062817f6962ef0da504dc89dea2ec6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5
|
Release files / flaskdoc-0.2.0-py2.py3-none-any.whl
| Download URL | flaskdoc-0.2.0-py2.py3-none-any.whl |
|---|---|
| Size | 5.2 MB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
b186272876a3358cedb457fff3e8b74f07f0da55e9445f1803594fca4a1c013e
|
|
BLAKE2b-256 checksum How to use checksums |
c2f6112651c91435458b787629727ccd669eebc2baf2d435af2705d3e511fb91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5
|