Skip to main content

flaskdoc

PyPi downloads Python versions build Documentation Status license Coverage Code Quality

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

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)

Source distribution for flaskdoc 0.2.0
File Size Uploaded
flaskdoc-0.2.0.tar.gz 5.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for flaskdoc 0.2.0
File Interpreter ABI Platform
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page