{ "info": { "author": "Cluas Alex", "author_email": "Cluas@live.cn", "bugtrack_url": null, "classifiers": [ "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "tornado-rest-swagger\n===============\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger?ref=badge_shield)\n![GitHub](https://img.shields.io/github/license/Cluas/tornado-rest-swagger.svg)\n\n\n| PyPI |\n|----------------------------------------------|\n| [![PyPI][pypi_image]][pypi_link] |\n\n\n[pypi_link]: https://pypi.org/project/tornado-rest-swagger/\n[pypi_image]: https://img.shields.io/pypi/v/tornado-rest-swagger.svg\n\n\n\n\n\n| Linux | Windows |\n|----------------------------------------------|----------------------------------------------|\n| [![TravisCI][travisci_image]][travisci_link] | [![AppVeyor][appveyor_image]][appveyor_link] |\n\n[travisci_link]: https://travis-ci.org/Cluas/tornado-rest-swagger\n[travisci_image]: https://travis-ci.org/Cluas/tornado-rest-swagger.svg?branch=master\n\n[appveyor_link]: https://ci.appveyor.com/project/Cluas/tornado-rest-swagger/branch/master\n[appveyor_image]: https://ci.appveyor.com/api/projects/status/kp5w5tdi3ae0mpas?svg=true\n\n*tornado-rest-swagger: Swagger API Documentation builder for tornado server. Inspired by [aiohttp-swagger](https://github.com/cr0hn/aiohttp-swagger) package (based on this package sources).*\n\nDocumentation | https://github.com/Cluas/tornado-rest-swagger/wiki\n------------- | -------------------------------------------------\nCode | https://github.com/Cluas/tornado-rest-swagger\nIssues | https://github.com/Cluas/tornado-rest-swagger/issues\nPython version | python2.7 and Python 3.4 and above\nSwagger Language Specification | https://swagger.io/specification\n\nInstallation\n----------------------\n\n pip install -U tornado-rest-swagger\n\n\nWhat's tornado-rest-swagger\n----------------------\n\ntornado-rest-swagger is a plugin for tornado server that allow to document APIs using Swagger show the Swagger-ui console.\n\n![](https://github.com/Cluas/tornado-rest-swagger/blob/master/docs/wiki__swagger_single_endpoint.png)\n\nExample\n----------------------\n```python\nimport tornado.ioloop\nimport tornado.options\nimport tornado.web\n\nfrom tornado_swagger.components import components\nfrom tornado_swagger.setup import setup_swagger\n\n\nclass BaseHandler(tornado.web.RequestHandler):\n def data_received(self, chunk):\n pass\n\n\nclass PostsHandler(BaseHandler):\n def get(self):\n \"\"\"\n ---\n tags:\n - Posts\n summary: List posts\n description: List all posts in feed\n operationId: getPost\n responses:\n '200':\n description: A list of users\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ArrayOfPostModel'\n application/xml:\n schema:\n $ref: '#/components/schemas/ArrayOfPostModel'\n text/plain:\n schema:\n type: string\n \"\"\"\n\n def post(self):\n \"\"\"\n ---\n tags:\n - Posts\n summary: Add a new Post to the blog\n operationId: addPost\n requestBody:\n description: Post object that needs to be added to the blog\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PostModel'\n application/xml:\n schema:\n $ref: '#/components/schemas/PostModel'\n required: true\n responses:\n '405':\n description: Invalid input\n content: {}\n security:\n - petstore_auth:\n - 'write:pets'\n - 'read:pets'\n \"\"\"\n\n\nclass PostsDetailsHandler(BaseHandler):\n def get(self, posts_id):\n \"\"\"\n ---\n tags:\n - Posts\n summary: Find Post by ID\n description: Returns a single post\n operationId: getPostById\n parameters:\n - name: post_id\n in: path\n description: ID of post to return\n required: true\n schema:\n type: integer\n format: int64\n responses:\n '200':\n description: successful operation\n content:\n application/xml:\n schema:\n $ref: '#/components/schemas/PostModel'\n application/json:\n schema:\n $ref: '#/components/schemas/PostModel'\n '400':\n description: Invalid ID supplied\n content: {}\n '404':\n description: Pet not found\n content: {}\n security:\n - api_key: []\n \"\"\"\n\n def patch(self, posts_id):\n \"\"\"\n ---\n tags:\n - Posts\n summary: Find Post by ID\n description: Returns a single post\n operationId: getPostById\n parameters:\n - name: post_id\n in: path\n description: ID of post to return\n required: true\n schema:\n type: integer\n format: int64\n requestBody:\n description: Post object that needs to be added to the blog\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PostModel'\n application/xml:\n schema:\n $ref: '#/components/schemas/PostModel'\n required: true\n responses:\n '400':\n description: Invalid ID supplied\n content: {}\n '404':\n description: Pet not found\n content: {}\n security:\n - api_key: []\n \"\"\"\n\n def delete(self, posts_id):\n \"\"\"\n ---\n tags:\n - Posts\n summary: Delete Post by ID\n description: Returns a single post\n operationId: getPostById\n parameters:\n - name: post_id\n in: path\n description: ID of post to return\n required: true\n schema:\n type: integer\n format: int64\n responses:\n '200':\n description: successful operation\n content:\n application/json:\n schema:\n type: object\n description: Post model representation\n properties:\n id:\n type: integer\n format: int64\n title:\n type: string\n text:\n type: string\n is_visible:\n type: boolean\n default: true\n '400':\n description: Invalid ID supplied\n content: {}\n '404':\n description: Pet not found\n content: {}\n \"\"\"\n\n\n@components.schemas.register\nclass PostModel(object):\n \"\"\"\n ---\n type: object\n description: Post model representation\n properties:\n id:\n type: integer\n format: int64\n title:\n type: string\n text:\n type: string\n is_visible:\n type: boolean\n default: true\n \"\"\"\n\n\n@components.schemas.register\nclass ArrayOfPostModel(object):\n \"\"\"\n ---\n type: array\n description: Array of Post model representation\n items:\n $ref: '#/components/schemas/PostModel'\n \"\"\"\n\n\n@components.security_schemes.register\nclass JWTToken(object):\n \"\"\"\n ---\n type: http\n scheme: bearer\n bearerFormat: JWT\n \"\"\"\n\n\nclass Application(tornado.web.Application):\n _routes = [tornado.web.url(r\"/api/posts\", PostsHandler), tornado.web.url(r\"/api/posts/(\\w+)\", PostsDetailsHandler)]\n\n def __init__(self):\n settings = {\"debug\": True}\n\n setup_swagger(\n self._routes,\n swagger_url=\"/doc\",\n description=\"\",\n api_version=\"1.0.0\",\n title=\"Journal API\",\n contact=dict(name=\"test\", email=\"test@domain.com\", url=\"https://www.cluas.me\"),\n )\n super(Application, self).__init__(self._routes, **settings)\n\n\nif __name__ == \"__main__\":\n tornado.options.define(\"port\", default=\"8080\", help=\"Port to listen on\")\n tornado.options.parse_command_line()\n\n app = Application()\n app.listen(port=8080)\n\n tornado.ioloop.IOLoop.current().start()\n\n\n```\n\n### Version 1.1.3\n\n- Fully support OpenAPI3.0\n\n### Version 1.1.2\n\n- Support OpenAPI 3.0 Authentication\n\n### Version 1.1.1\n\n- First version released\n\n\n## License\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FCluas%2Ftornado-rest-swagger?ref=badge_shield)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://pypi.org/project/tornado-rest-swagger/#files", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Cluas/tornado-rest-swagger", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "tornado-rest-swagger", "package_url": "https://pypi.org/project/tornado-rest-swagger/", "platform": "", "project_url": "https://pypi.org/project/tornado-rest-swagger/", "project_urls": { "Download": "https://pypi.org/project/tornado-rest-swagger/#files", "Homepage": "https://github.com/Cluas/tornado-rest-swagger" }, "release_url": "https://pypi.org/project/tornado-rest-swagger/1.1.3/", "requires_dist": [ "tornado (>=4.2.2)", "jinja2", "pyyaml" ], "requires_python": "", "summary": "Swagger API Documentation builder for tornado server", "version": "1.1.3" }, "last_serial": 5535864, "releases": { "1.1.1": [ { "comment_text": "", "digests": { "md5": "039472cb2810c2cff7f76880cc2e8886", "sha256": "8ff2f76037caaef748064226274aa733c95694b4c29fbc5bbe8f98b7b412993a" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "039472cb2810c2cff7f76880cc2e8886", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7894, "upload_time": "2019-07-12T17:29:31", "url": "https://files.pythonhosted.org/packages/1c/ed/5b8921cac2f14f8e51f00e185d78d9f8a14203a89a5ba98c7c257947033e/tornado_rest_swagger-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bf776dec0f1e4df7c7c2a2660512757", "sha256": "53f61a840f5f654255f272f85a8a7c529f5a43c39cdb875f2624c69509002ba7" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8bf776dec0f1e4df7c7c2a2660512757", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7893, "upload_time": "2019-07-12T17:31:11", "url": "https://files.pythonhosted.org/packages/1b/98/94da8ec12d7f7a7caaa8c459286188ab63d840aaac1ea9ea6b26fa35b998/tornado_rest_swagger-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e365b83b9f3e942f89153c5a87f76cd5", "sha256": "ad32eb8152394a89667137f081640e68fbfefb0e15b5a896be8e5085b5aae734" }, "downloads": -1, "filename": "tornado-rest-swagger-1.1.1.tar.gz", "has_sig": false, "md5_digest": "e365b83b9f3e942f89153c5a87f76cd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6814, "upload_time": "2019-07-12T17:29:33", "url": "https://files.pythonhosted.org/packages/c7/a3/d2565dc8c95e2e12322f45c4e1cb62c0e34906b9e5a65a99b071f5734e88/tornado-rest-swagger-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "f7b801240af9d3000329ee8f9d3b4825", "sha256": "91631554f9201c64ca4e998bdc8d7b29688c01e4bd43c231af82c190109bcf40" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "f7b801240af9d3000329ee8f9d3b4825", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 8891, "upload_time": "2019-07-15T11:44:07", "url": "https://files.pythonhosted.org/packages/16/6d/e88fbe3c05c32ec4b3f6324f44cb5110095ca8508ed2ccf6588efe9508c3/tornado_rest_swagger-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d0b264101dba201f7dce6dd4d344a8aa", "sha256": "cd33b1185f1fbc88e64d925b4485b45a27faa660871685e35b07c052e135e2a8" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d0b264101dba201f7dce6dd4d344a8aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8892, "upload_time": "2019-07-15T11:44:05", "url": "https://files.pythonhosted.org/packages/c6/c1/72733d53527a8e10155330ab336e9e7d5f4d1ca04fb036e38cfea1810be8/tornado_rest_swagger-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "20f00aa954b6da0ab37a0d04f36b346b", "sha256": "d5611d403fc9f6d958459698d69b849aa14b3bb316909d94c627d3803d9f4412" }, "downloads": -1, "filename": "tornado-rest-swagger-1.1.2.tar.gz", "has_sig": false, "md5_digest": "20f00aa954b6da0ab37a0d04f36b346b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9263, "upload_time": "2019-07-15T11:44:07", "url": "https://files.pythonhosted.org/packages/e1/75/635b33e83e1d3c226f8f0889281bfb51102f845f632c3cdd2098d498bdca/tornado-rest-swagger-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "5e9a2c28d2d073a950eb3695af14bbc2", "sha256": "2b0972b9aff502019f8cddceceeda2076a0d949cc405a8bddfbde7a3fde8d67c" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "5e9a2c28d2d073a950eb3695af14bbc2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9173, "upload_time": "2019-07-15T16:34:17", "url": "https://files.pythonhosted.org/packages/8a/85/2ac551f0c8b4e97df069eb6398631dbd92390da899d288e2ca07e557f1b0/tornado_rest_swagger-1.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04c2ca057118d6d31f4a69e83ed75e56", "sha256": "ece40b9424a449f67783cb3b8401c550997c514f3cc1730d9ad21061caa75db5" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "04c2ca057118d6d31f4a69e83ed75e56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9173, "upload_time": "2019-07-15T16:34:20", "url": "https://files.pythonhosted.org/packages/eb/66/b22a7f01dea9095ba1dd7bc850ebbf764422858a7424c998c6d38a1fcfe0/tornado_rest_swagger-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8928f27c88be562921ce778f6c404bf7", "sha256": "1077c4c8bc3fb308766e5adbb3aeecdbba89290c847a1b5bf515ba1a483cca21" }, "downloads": -1, "filename": "tornado-rest-swagger-1.1.3.tar.gz", "has_sig": false, "md5_digest": "8928f27c88be562921ce778f6c404bf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9521, "upload_time": "2019-07-15T16:34:19", "url": "https://files.pythonhosted.org/packages/e5/c6/4afb8cb894cb730f5479686c3e5d224f1bc2b1f46369cef4fe2716b791d7/tornado-rest-swagger-1.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5e9a2c28d2d073a950eb3695af14bbc2", "sha256": "2b0972b9aff502019f8cddceceeda2076a0d949cc405a8bddfbde7a3fde8d67c" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "5e9a2c28d2d073a950eb3695af14bbc2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9173, "upload_time": "2019-07-15T16:34:17", "url": "https://files.pythonhosted.org/packages/8a/85/2ac551f0c8b4e97df069eb6398631dbd92390da899d288e2ca07e557f1b0/tornado_rest_swagger-1.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "04c2ca057118d6d31f4a69e83ed75e56", "sha256": "ece40b9424a449f67783cb3b8401c550997c514f3cc1730d9ad21061caa75db5" }, "downloads": -1, "filename": "tornado_rest_swagger-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "04c2ca057118d6d31f4a69e83ed75e56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9173, "upload_time": "2019-07-15T16:34:20", "url": "https://files.pythonhosted.org/packages/eb/66/b22a7f01dea9095ba1dd7bc850ebbf764422858a7424c998c6d38a1fcfe0/tornado_rest_swagger-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8928f27c88be562921ce778f6c404bf7", "sha256": "1077c4c8bc3fb308766e5adbb3aeecdbba89290c847a1b5bf515ba1a483cca21" }, "downloads": -1, "filename": "tornado-rest-swagger-1.1.3.tar.gz", "has_sig": false, "md5_digest": "8928f27c88be562921ce778f6c404bf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9521, "upload_time": "2019-07-15T16:34:19", "url": "https://files.pythonhosted.org/packages/e5/c6/4afb8cb894cb730f5479686c3e5d224f1bc2b1f46369cef4fe2716b791d7/tornado-rest-swagger-1.1.3.tar.gz" } ] }