Skip to main content

Flask + marshmallow + OpenAPI

Project description

Overview

PyPI Status license python_versions documentation

Provides OpenAPI documentation generated from code for Flask APIs built around marshmallow schemas.

This hackish and organically grown ™ package was created because no other similar projects worked exactly the way I wanted them.

Similar projects:

Installation

pip install flask-marshmallow-openapi

Documentation

Read the Docs

What does it do?

Searches your codebase for marshmallow schemas and 🎖️ decorated 🎖️ Flask routes.

It then produces swagger.json and injects it into self-hosted ReDoc and SwaggerUI documentation viewers.

api = flask.Blueprint("my_api", __name__)


class BookSchema(ma.Schema):
    id = ma.fields.Integer(as_string=True)
    title = ma.fields.String(allow_none=False)
    publisher = ma.fields.String(allow_none=False)
    isbn = ma.fields.String(allow_none=False)


@open_api.get_list(BookSchema)
@api.route("/books", methods=["GET"])
def books_list():
    return "<p>Hello, World!</p>"


app = flask.Flask(__name__)
app.register_blueprint(api, url_prefix="/v1")


conf = OpenAPISettings(
    api_version="v1", api_name="My API", app_package_name="my_api", mounted_at="/v1"
)
docs = OpenAPI(config=conf)
docs.init_app(app)

New app routes:

$ flask routes

Endpoint               Methods  Rule
---------------------  -------  -------------------------------
# ...
open_api.re_doc        GET      /v1/docs/re_doc
open_api.static        GET      /v1/docs/static/<path:filename>
open_api.swagger_json  GET      /v1/docs/static/swagger.json
open_api.swagger_ui    GET      /v1/docs/swagger_ui
open_api.swagger_yaml  GET      /v1/docs/static/swagger.yaml
# ...

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

flask_marshmallow_openapi-0.7.0.tar.gz (982.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flask_marshmallow_openapi-0.7.0-py3-none-any.whl (992.2 kB view details)

Uploaded Python 3

File details

Details for the file flask_marshmallow_openapi-0.7.0.tar.gz.

File metadata

File hashes

Hashes for flask_marshmallow_openapi-0.7.0.tar.gz
Algorithm Hash digest
SHA256 205f4a523081267e348cdd0240e0357e2d7e7c368b06604a7544d176f25a8c63
MD5 632ac3c7d30e2bc9da908d8c44aef1e9
BLAKE2b-256 49251c5766abf75146319bea4dd4afadf6d1540c27ca32cd4f08b4ea972d17d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_marshmallow_openapi-0.7.0.tar.gz:

Publisher: pypi-publish.yaml on tadams42/flask-marshmallow-openapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file flask_marshmallow_openapi-0.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for flask_marshmallow_openapi-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 510d520370e6cdcc490a4d60cdfe391d4c52b95fce7d5a0237af057dcac76bfa
MD5 6fbf40f690c8d2e6f1ba4189bb23e1e8
BLAKE2b-256 2b5e37e6d385309168325a3898ecedcf1db9a27cbfd7d7a872eab9b7ede9af34

See more details on using hashes here.

Provenance

The following attestation bundles were made for flask_marshmallow_openapi-0.7.0-py3-none-any.whl:

Publisher: pypi-publish.yaml on tadams42/flask-marshmallow-openapi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page