/swagger-py-codegen

a Python web framework generator supports Flask, Tornado, Falcon, Sanic

Primary LanguagePython

Python RESTful Web Framework Generator

Build Status PyPi Version

Overview

Swagger Py Codegen is a Python web framework generator, which can help you generate a Python web framework automatically based on a given Swagger Specification doc. Currently, the following languages/frameworks are supported:

Alpha version for now, it may not handle all validation properly. If you found a bug, feel free to contact us.

Install

pip install swagger-py-codegen

Usage

Create all:

swagger_py_codegen --swagger-doc api.yml example-app

Command Options:

-s, --swagger-doc               Swagger doc file.  [required]
-f, --force                     Force overwrite.
-p, --package                   Package name / application name.
-t, --template-dir              Path of your custom templates directory.
--spec, --specification         Generate online specification json response.
--ui                            Generate swagger ui.
--validate                      Validate swagger file.
-tlp, --templates               gen flask/tornado/falcon templates, default flask.
--version                       Show current version.
--help                          Show this message and exit.

Examples:

Generate example-app from api.yml:

Flask Example

$ swagger_py_codegen -s api.yml example-app -p demo
$ tree (flask-demo)
.
|__ api.yml
|__ example-app
   |__ demo
   |  |__ __init__.py
   |  |__ v1
   |     |__ api
   |     |  |__ __init__.py
   |     |  |__ pets.py
   |     |  |__ pets_petId.py
   |     |__ __init__.py
   |     |__ routes.py
   |     |__ schemas.py
   |     |__ validators.py
   |__ requirements.txt

Tornado Example

$ swagger_py_codegen -s api.yml example-app -p demo -tlp=tornado
$ tree (tornado-demo)
.
|__ api.yml
|__ example-app
   |__ demo
   |  |__ __init__.py
   |  |__ core
   |     |__ __init.py
   |  |__ v1
   |     |__ api
   |     |  |__ __init__.py
   |     |  |__ pets.py
   |     |  |__ pets_petId.py
   |     |__ __init__.py
   |     |__ routes.py
   |     |__ schemas.py
   |     |__ validators.py
   |__ requirements.txt

Falcon Example

$ swagger_py_codegen -s api.yml example-app -p demo -tlp=falcon
$ tree (falcon-demo)
.
|__ api.yml
|__ example-app
   |__ demo
   |  |__ __init__.py
   |  |__ v1
   |     |__ api
   |     |  |__ __init__.py
   |     |  |__ pets.py
   |     |  |__ pets_petId.py
   |     |__ __init__.py
   |     |__ routes.py
   |     |__ schemas.py
   |     |__ validators.py
   |__ requirements.txt

Sanic Example

$ swagger_py_codegen -s api.yml example-app -p demo -tlp=sanic
$ tree (sanic-demo)
.
|__ api.yml
|__ example-app
   |__ demo
   |  |__ __init__.py
   |  |__ v1
   |     |__ api
   |     |  |__ __init__.py
   |     |  |__ pets.py
   |     |  |__ pets_petId.py
   |     |__ __init__.py
   |     |__ routes.py
   |     |__ schemas.py
   |     |__ validators.py
   |__ requirements.txt

Run Web Server

Install example-app requirements:

$ cd example-app
$ pip install -r requirements.txt

Start example-app:

$ cd demo
$ python __init__.py

And generate example-app-ui from api.yml with ui:

$ swagger_py_codegen -s api.yml  example-app-ui -p demo-ui --ui --spec

Then you can visit http://127.0.0.1:5000/static/swagger-ui/index.html in a browser.

OAuth2 Scopes Usage

See the wiki

Compatibility

component compatibility
OpenAPI Spec 2.0
Python 2.*, 3.*(Sanic only 3.*)

Authors

See the AUTHORS.

License

MIT