aiohttp-swagger3


Nameaiohttp-swagger3 JSON
Version 0.8.0 PyPI version JSON
download
home_pagehttps://github.com/hh-h/aiohttp-swagger3
Summaryvalidation for aiohttp swagger openAPI 3
upload_time2023-12-03 13:12:42
maintainer
docs_urlNone
authorValetov Konstantin
requires_python>=3.8
licenseApache 2
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            aiohttp-swagger3
================

.. image:: https://github.com/hh-h/aiohttp-swagger3/actions/workflows/ci.yaml/badge.svg?branch=master
   :target: https://github.com/hh-h/aiohttp-swagger3/actions
.. image:: https://img.shields.io/codecov/c/github/hh-h/aiohttp-swagger3/master.svg?style=flat
   :target: https://codecov.io/github/hh-h/aiohttp-swagger3?branch=master
.. image:: https://badge.fury.io/py/aiohttp-swagger3.svg
   :target: https://badge.fury.io/py/aiohttp-swagger3
.. image:: https://img.shields.io/badge/python-3.7%2B-brightgreen.svg
   :target: https://img.shields.io/badge/python-3.7%2B-brightgreen.svg
.. image:: https://img.shields.io/badge/code%20style-black-black.svg
   :target: https://github.com/ambv/black
.. image:: https://img.shields.io/pypi/l/aiohttp-swagger3.svg
   :target: https://www.apache.org/licenses/LICENSE-2.0

About
=====

Package for displaying swagger docs via different UI backends and
optionally validating/parsing aiohttp requests using swagger
specification 3.0, known as OpenAPI3.

Supported UI backends
=====================

Multiple UI backends can be used or UI backend can be disabled at all if only needed
validation without being able to view documentation.

- Swagger UI - https://github.com/swagger-api/swagger-ui
- ReDoc - https://github.com/Redocly/redoc
- RapiDoc - https://github.com/mrin9/RapiDoc

Documentation
=============

https://aiohttp-swagger3.readthedocs.io/en/latest/

Disable validation
==================

| Pass ``validate=False`` to ``SwaggerDocs``/``SwaggerFile`` class, the default is ``True``
| Also, sometimes validation has to be disabled for a route,
  to do this you have to pass ``validate=False`` during the initialization of the route.
| ex. ``web.post("/route", handler, validate=False)``, the default is ``True``

Requirements
============

- python >= 3.8
- aiohttp >= 3.8.0
- pyyaml >= 5.4
- attrs >= 19.3.0
- python-fastjsonschema >= 2.15.0
- rfc3339-validator >= 0.1.4

Limitations
===========

-  only application/json and application/x-www-form-urlencoded supported
   for now, but you can create own
   `handler <https://github.com/hh-h/aiohttp-swagger3/tree/master/examples/custom_handler>`__
-  header/query parameters only supported simple/form array
   serialization, e.g. 1,2,3,4
-  see TODO below

Installation
============

``pip install aiohttp-swagger3``

Example
=======

.. code:: python

    from aiohttp import web
    from aiohttp_swagger3 import SwaggerDocs, SwaggerInfo, SwaggerUiSettings

    async def get_one_pet(request: web.Request, pet_id: int) -> web.Response:
        """
        Optional route description
        ---
        summary: Info for a specific pet
        tags:
          - pets
        parameters:
          - name: pet_id
            in: path
            required: true
            description: The id of the pet to retrieve
            schema:
              type: integer
              format: int32
        responses:
          '200':
            description: Expected response to a valid request
            content:
              application/json:
                schema:
                  $ref: "#/components/schemas/Pet"
        """
        if pet_id not in request.app['storage']:
            raise web.HTTPNotFound()
        return web.json_response(request.app['storage'][pet_id])

    def main():
        app = web.Application()
        swagger = SwaggerDocs(
            app,
            swagger_ui_settings=SwaggerUiSettings(path="/docs/"),
            info=SwaggerInfo(
                title="Swagger Petstore",
                version="1.0.0",
            ),
            components="components.yaml"
        )
        swagger.add_routes([
            web.get("/pets/{pet_id}", get_one_pet),
        ])
        app['storage'] = {}
        web.run_app(app)

More `examples <https://github.com/hh-h/aiohttp-swagger3/tree/master/examples>`_

How it helps
============

.. image:: https://raw.githubusercontent.com/hh-h/aiohttp-swagger3/master/docs/_static/comparison.png

Features
========

- application/json
- application/x-www-form-urlencoded (except array and object)
- items
- properties
- pattern
- required
- enum
- minimum, maximum
- exclusiveMinimum, exclusiveMaximum
- minLength, maxLength
- minItems, maxItems
- uniqueItems
- minProperties, maxProperties
- default (only primitives)
- additionalProperties
- nullable
- readOnly
- allOf, oneOf, anyOf
- string formats: date, date-time, byte, email, uuid, hostname, ipv4, ipv6
- custom string format validators

TODO (raise an issue if needed)
===============================

- multipleOf
- not
- allowEmptyValue
- Common Parameters for All Methods of a Path (spec file only)
- more serialization methods, see: https://swagger.io/docs/specification/serialization/
- encoding
- form data serialization (array, object)
- default (array, object)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hh-h/aiohttp-swagger3",
    "name": "aiohttp-swagger3",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "Valetov Konstantin",
    "author_email": "forjob@thetrue.name",
    "download_url": "https://files.pythonhosted.org/packages/9a/b0/73d590d064074026811cbbe1dfc57d4c269049c96f1fd738053b3019496e/aiohttp-swagger3-0.8.0.tar.gz",
    "platform": null,
    "description": "aiohttp-swagger3\n================\n\n.. image:: https://github.com/hh-h/aiohttp-swagger3/actions/workflows/ci.yaml/badge.svg?branch=master\n   :target: https://github.com/hh-h/aiohttp-swagger3/actions\n.. image:: https://img.shields.io/codecov/c/github/hh-h/aiohttp-swagger3/master.svg?style=flat\n   :target: https://codecov.io/github/hh-h/aiohttp-swagger3?branch=master\n.. image:: https://badge.fury.io/py/aiohttp-swagger3.svg\n   :target: https://badge.fury.io/py/aiohttp-swagger3\n.. image:: https://img.shields.io/badge/python-3.7%2B-brightgreen.svg\n   :target: https://img.shields.io/badge/python-3.7%2B-brightgreen.svg\n.. image:: https://img.shields.io/badge/code%20style-black-black.svg\n   :target: https://github.com/ambv/black\n.. image:: https://img.shields.io/pypi/l/aiohttp-swagger3.svg\n   :target: https://www.apache.org/licenses/LICENSE-2.0\n\nAbout\n=====\n\nPackage for displaying swagger docs via different UI backends and\noptionally validating/parsing aiohttp requests using swagger\nspecification 3.0, known as OpenAPI3.\n\nSupported UI backends\n=====================\n\nMultiple UI backends can be used or UI backend can be disabled at all if only needed\nvalidation without being able to view documentation.\n\n- Swagger UI - https://github.com/swagger-api/swagger-ui\n- ReDoc - https://github.com/Redocly/redoc\n- RapiDoc - https://github.com/mrin9/RapiDoc\n\nDocumentation\n=============\n\nhttps://aiohttp-swagger3.readthedocs.io/en/latest/\n\nDisable validation\n==================\n\n| Pass ``validate=False`` to ``SwaggerDocs``/``SwaggerFile`` class, the default is ``True``\n| Also, sometimes validation has to be disabled for a route,\n  to do this you have to pass ``validate=False`` during the initialization of the route.\n| ex. ``web.post(\"/route\", handler, validate=False)``, the default is ``True``\n\nRequirements\n============\n\n- python >= 3.8\n- aiohttp >= 3.8.0\n- pyyaml >= 5.4\n- attrs >= 19.3.0\n- python-fastjsonschema >= 2.15.0\n- rfc3339-validator >= 0.1.4\n\nLimitations\n===========\n\n-  only application/json and application/x-www-form-urlencoded supported\n   for now, but you can create own\n   `handler <https://github.com/hh-h/aiohttp-swagger3/tree/master/examples/custom_handler>`__\n-  header/query parameters only supported simple/form array\n   serialization, e.g. 1,2,3,4\n-  see TODO below\n\nInstallation\n============\n\n``pip install aiohttp-swagger3``\n\nExample\n=======\n\n.. code:: python\n\n    from aiohttp import web\n    from aiohttp_swagger3 import SwaggerDocs, SwaggerInfo, SwaggerUiSettings\n\n    async def get_one_pet(request: web.Request, pet_id: int) -> web.Response:\n        \"\"\"\n        Optional route description\n        ---\n        summary: Info for a specific pet\n        tags:\n          - pets\n        parameters:\n          - name: pet_id\n            in: path\n            required: true\n            description: The id of the pet to retrieve\n            schema:\n              type: integer\n              format: int32\n        responses:\n          '200':\n            description: Expected response to a valid request\n            content:\n              application/json:\n                schema:\n                  $ref: \"#/components/schemas/Pet\"\n        \"\"\"\n        if pet_id not in request.app['storage']:\n            raise web.HTTPNotFound()\n        return web.json_response(request.app['storage'][pet_id])\n\n    def main():\n        app = web.Application()\n        swagger = SwaggerDocs(\n            app,\n            swagger_ui_settings=SwaggerUiSettings(path=\"/docs/\"),\n            info=SwaggerInfo(\n                title=\"Swagger Petstore\",\n                version=\"1.0.0\",\n            ),\n            components=\"components.yaml\"\n        )\n        swagger.add_routes([\n            web.get(\"/pets/{pet_id}\", get_one_pet),\n        ])\n        app['storage'] = {}\n        web.run_app(app)\n\nMore `examples <https://github.com/hh-h/aiohttp-swagger3/tree/master/examples>`_\n\nHow it helps\n============\n\n.. image:: https://raw.githubusercontent.com/hh-h/aiohttp-swagger3/master/docs/_static/comparison.png\n\nFeatures\n========\n\n- application/json\n- application/x-www-form-urlencoded (except array and object)\n- items\n- properties\n- pattern\n- required\n- enum\n- minimum, maximum\n- exclusiveMinimum, exclusiveMaximum\n- minLength, maxLength\n- minItems, maxItems\n- uniqueItems\n- minProperties, maxProperties\n- default (only primitives)\n- additionalProperties\n- nullable\n- readOnly\n- allOf, oneOf, anyOf\n- string formats: date, date-time, byte, email, uuid, hostname, ipv4, ipv6\n- custom string format validators\n\nTODO (raise an issue if needed)\n===============================\n\n- multipleOf\n- not\n- allowEmptyValue\n- Common Parameters for All Methods of a Path (spec file only)\n- more serialization methods, see: https://swagger.io/docs/specification/serialization/\n- encoding\n- form data serialization (array, object)\n- default (array, object)\n",
    "bugtrack_url": null,
    "license": "Apache 2",
    "summary": "validation for aiohttp swagger openAPI 3",
    "version": "0.8.0",
    "project_urls": {
        "Homepage": "https://github.com/hh-h/aiohttp-swagger3"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f1f292b767b5b4f6ca68980fe84df04e9b0a05703751f7ef4f5e90c26facfc0",
                "md5": "56f28f6fff2631663abb6a23882cee9e",
                "sha256": "c487de95111fc03f735355db084a90d51eb83334b3d3c47f9beb72d1df29ec24"
            },
            "downloads": -1,
            "filename": "aiohttp_swagger3-0.8.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "56f28f6fff2631663abb6a23882cee9e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 1796314,
            "upload_time": "2023-12-03T13:12:40",
            "upload_time_iso_8601": "2023-12-03T13:12:40.244101Z",
            "url": "https://files.pythonhosted.org/packages/9f/1f/292b767b5b4f6ca68980fe84df04e9b0a05703751f7ef4f5e90c26facfc0/aiohttp_swagger3-0.8.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ab073d590d064074026811cbbe1dfc57d4c269049c96f1fd738053b3019496e",
                "md5": "6022eb31c682b3e9185794852acf7b54",
                "sha256": "79009572d4b2fb5ae6252bf68b1909c9523f22cfd5fa2f46add2d5c050cf520c"
            },
            "downloads": -1,
            "filename": "aiohttp-swagger3-0.8.0.tar.gz",
            "has_sig": false,
            "md5_digest": "6022eb31c682b3e9185794852acf7b54",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1809078,
            "upload_time": "2023-12-03T13:12:42",
            "upload_time_iso_8601": "2023-12-03T13:12:42.519639Z",
            "url": "https://files.pythonhosted.org/packages/9a/b0/73d590d064074026811cbbe1dfc57d4c269049c96f1fd738053b3019496e/aiohttp-swagger3-0.8.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-03 13:12:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hh-h",
    "github_project": "aiohttp-swagger3",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "aiohttp-swagger3"
}
        
Elapsed time: 0.16750s