Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/marshmallow-code/apispec-webframeworks
Web framework plugins for apispec (formally in apispec.ext).
https://github.com/marshmallow-code/apispec-webframeworks
apispec bottle flask openapi python tornado
Last synced: 4 days ago
JSON representation
Web framework plugins for apispec (formally in apispec.ext).
- Host: GitHub
- URL: https://github.com/marshmallow-code/apispec-webframeworks
- Owner: marshmallow-code
- License: mit
- Created: 2018-10-06T23:31:31.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-10-08T10:01:07.000Z (4 months ago)
- Last Synced: 2024-10-30T00:00:14.511Z (3 months ago)
- Topics: apispec, bottle, flask, openapi, python, tornado
- Language: Python
- Homepage:
- Size: 179 KB
- Stars: 32
- Watchers: 6
- Forks: 23
- Open Issues: 9
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
- jimsghstars - marshmallow-code/apispec-webframeworks - Web framework plugins for apispec (formally in apispec.ext). (Python)
README
*********************
apispec-webframeworks
*********************|pypi| |build-status| |marshmallow3|
.. |pypi| image:: https://badgen.net/pypi/v/apispec-webframeworks
:target: https://pypi.org/project/apispec-webframeworks/
:alt: PyPI package.. |build-status| image:: https://github.com/marshmallow-code/apispec-webframeworks/actions/workflows/build-release.yml/badge.svg
:target: https://github.com/marshmallow-code/apispec-webframeworks/actions/workflows/build-release.yml
:alt: Build status.. |marshmallow3| image:: https://badgen.net/badge/marshmallow/3?
:target: https://marshmallow.readthedocs.io/en/latest/upgrading.html
:alt: marshmallow 3 compatible`apispec `_ plugins for
integrating with various web frameworks.These plugins used to be in ``apispec.ext`` but have since
been moved to their own package.Included plugins:
* ``apispec_webframeworks.aiohttp``
* ``apispec_webframeworks.bottle``
* ``apispec_webframeworks.flask``
* ``apispec_webframeworks.tornado``Migration from ``apispec<1.0.0``
================================To migrate from older versions of apispec, install this package
with.. code-block:: console
pip install apispec-webframeworks
Change your imports, like so:
.. code-block:: python
# apispec<1.0.0
from apispec.ext.flask import FlaskPlugin# apispec>=1.0.0
from apispec_webframeworks.flask import FlaskPluginExample Usage
=============.. code-block:: python
from flask import Flask
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from apispec_webframeworks.flask import FlaskPlugin
from marshmallow import Schema, fieldsspec = APISpec(
title="Gisty",
version="1.0.0",
info=dict(description="A minimal gist API"),
plugins=[FlaskPlugin(), MarshmallowPlugin()],
)app = Flask(__name__)
class GistParameter(Schema):
gist_id = fields.Int()class GistSchema(Schema):
id = fields.Int()
content = fields.Str()@app.route("/gists/")
def gist_detail(gist_id):
"""Gist detail view.
---
get:
parameters:
- in: path
schema: GistParameter
responses:
200:
schema: GistSchema
"""
return "details about gist {}".format(gist_id)# Since `path` inspects the view and its route,
# we need to be in a Flask request context
with app.test_request_context():
spec.path(view=gist_detail)Documentation
=============For documentation for a specific plugin, see its module docstring.
Development
===========* Clone and cd into this repo
* Create and activate a virtual environment
* Install this package (in editable mode) and the development
dependencies::
$ pip install '.[dev]'
* Install pre-commit hooks
::
$ pre-commit install
Running tests
-------------To run all tests: ::
$ pytest
To run syntax checks: ::
$ tox -e lint
(Optional) To run tests in all supported Python versions in their own virtual environments (must have each interpreter installed): ::
$ tox
License
=======MIT licensed. See the bundled `LICENSE `_ file for more details.