{ "info": { "author": "Elran Shefer", "author_email": "elran777@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# swaggapi\n\nSwagger **OpenAPI 3** wrapper for Python.\n\nThis package has the vision of making REST api usage and access - better, faster and easier.\nFor this purpose, you will have to setup few models and \"tell\" the system what is the structure of each of \nyour requests and responses.\n\nThis Python lib will also build automatically swagger.json file which can later on be displayed using \n**Swagger UI**.\n\nFeatures:\n - Client and Server rest usage.\n - Dynamically generate swagger file.\n - Validate input parameters and output responses.\n## Build your models\n### Models\nFirst, each of your uri methods (\"post\", \"get\", \"patch\", etc..) has to have a model which represents it.\nThe model class - \n```Python\nclass AbstractAPIModel(object): \n TITLE = None \n PROPERTIES = [] \n EXAMPLE = None \n```\nYour model should inherit from this object.\nExamples:\n```Python\nclass GenericModel(AbstractAPIModel): \n \"\"\"This is an empty model.\"\"\"\n TITLE = \"Generic Object\" \n PROPERTIES = [] \n EXAMPLE = {}\n```\n```Python\nclass CatModel(AbstractAPIModel): \n TITLE = \"Cat\" \n PROPERTIES = [ \n NumberField(name=\"id\"), \n StringField(name=\"name\"), \n ArrayField(name=\"friends_ids\", items_type=int)\n ]\n EXAMPLE = {\n \"id\": 0,\n \"name\": \"Garfield\",\n \"friends_ids\": [1, 3]\n }\n```\nClass Attributes:\n - TITLE (str) - the name of the model, if not set - the class name is taken by default.\n - PROPERTIES (list) - list of **fields** that will represent the model structure.\n - EXAMPLE (object) - any kind of json serializeable object.\n - \\_\\_doc\\_\\_ (str) - the object description.\n\n### Response\nThe response type should also be represented as the model does.\n```Python\nclass EmptyResponse(AbstractResponse): \n \"\"\"This is an empty response.\"\"\"\n PROPERTIES = []\n```\n\n### Fields\n\nRight now there are 5 types of supported fields:\nEach field has the following properties:\n```Python\nclass Field(object): \n def __init__(self, name, type, description=\"\", required=False, \n example=None, location=\"body\", deprecated=False)\n```\nInstance Attributes:\n - name (str) - the name of the field.\n - required (bool) - if the field is required or not (default: False).\n - type (str) - string that represents the type of the field.\n - description (str) - the field's description.\n - example (object) - example of a valid object of the field.\n - location (str) - where the field is passed from - possibilities - [\"body\", \"query\", \"header\", \"path\", \"cookie\"].\n - deprecated (bool) - whether the field is deprecated or not.\n\nIf you want to create your own field type, you can expand the following methods - \n```Python\ndef default_example(self): \n \"\"\"Example in case field didn't specify a unique example.\"\"\"\n return \n\ndef examples(self, schema_bank, index):\n \"\"\"In case of complex types field - how should the example be generated.\"\"\"\n return Example(value=self.example) \n\ndef schemas(self, schema_bank, index): \n \"\"\"In case of complex types field - how does the schema should be gennerated.\"\"\"\n example_ref = get_schema(self, schema_bank, \"examples\") \n example = schema_bank[example_ref.type][example_ref.reference] \n return Schema(title=self.name, type=self.type, \n description=self.description, \n example=example.value, \n deprecated=self.deprecated)\n```\nReady To Go Field Types:\n``ArrayField``, ``StringField``, ``BoolField``, ``NumberField``, ``ModelField``.\n\n## Build Your Requests\n\n```Python\nclass Request(object): \n URI = None \n DEFAULT_MODEL = None \n DEFAULT_RESPONSES = {} \n PARAMS_MODELS = { \n \"get\": None, \n \"post\": None, \n \"delete\": None, \n \"put\": None, \n \"head\": None, \n \"patch\": None, \n \"trace\": None, \n } \n RESPONSES_MODELS = { \n \"get\": None, \n \"post\": None, \n \"delete\": None, \n \"put\": None, \n \"head\": None, \n \"patch\": None, \n \"trace\": None, \n } \n TAGS = { \n \"get\": [], \n \"post\": [], \n \"delete\": [], \n \"put\": [], \n \"head\": [], \n \"patch\": [], \n \"trace\": [], \n } \n```\nEach request should specify the models of each of the methods.\nIf the request uses a default model you can use the *default* class attributes for convinence.\nTags - are a way to group together responses method.\n\n### Django Integration\nFor this purpose, there is a new defined classes - \n```Python\nclass DjangoRequestView(View, Request)\nclass Response(JsonResponse)\nclass BadRequest(Exception)\nclass ServerError(Exception)\n```\n\n - BadRequest - will return httplib.BadRequest status code with the exception details inserted within it.\n```Python\n raise BadRequest({\"details\": \"Invalid Request\"})\n```\n - Response - For the validation of the params with the specified model, you should use Response instead of\n\t Django's JsonResponse.\n```Python\nreturn Response({\"properties\": properties}, status=httplib.OK)\n```\n- DjnagoRequestView - each of your views should inherit from this class.\nthis class inherits from the ```Request``` object specified above, so everything until now is the same,\nmake sure to fill the required models if their method implemented.\n```Python\nclass GetCats(DjangoRequestView): \n \"\"\"Get all the cats stored in the system that match the needed query.\"\"\" \n URI = \"get_cats\" \n DEFAULT_MODEL = CatsDescriptorModel \n DEFAULT_RESPONSES = { \n httplib.OK: CatsModel, \n httplib.BadRequest: NoCatsFoundModel,\n } \n TAGS = { \n \"post\": [\"Cats\"] \n }\n # default params are taken because no specific model for this method\n def post(self, request, *args, **kwargs):\n ...\n\t return Response({...}, httplib.OK)\n```\n\n - ServerError - thrown when exception occured within the view.\n\n\n## Swagger File Generation\nNow when everything is ready we can generate our first swagger file!\n\n### Django \nApplication's ``urls.py`` file\n```Python \nfrom swagapi.build import Swagger\nfrom swagapi.api.openapi.models import Info, License, Tag\n\nrequests = [GetCats] \n\ninfo = Info(title=\"Cats OpenAPI\", \n version=\"0.1.0\", \n description=\"Cats Swagger for cats management\", \n license=License(name=\"MIT\"))\ntags = [Tag(name=\"Cats\", description=\"All requests for managing cats\")] \n# don't forget to configure the mount_url - all the uri until the current file\nswagger = Swagger(info, mount_url=\"api\", requests=requests, tags=tags) \n\n\ndef swagger_file(request, *args, **kwargs):\n \"\"\"We dynamically generate the swagger file.\"\"\"\n swagger.configure_base_url(request) \n return JsonResponse(swagger.api.json(), status=httplib.OK) \n\n\ndef index(request, *args, **kwargs):\n \"\"\"Here we use static deploy for Swagger UI.\"\"\"\n return render(request, \"swagger.html\") \n\n\nurlpatterns = patterns(\"\", \n url(\"^$\", index), \n url(\"^swagger.json$\", swagger_file), \n *swagger.get_django_urls() # here all requests uris are automatically built.\n)\n```\n\n## Client Usage\n\nSimply create a requester - \n```Python\nrequester = Requester(host=host, \n port=port, \n base_url=self.base_uri, # Where the api swagger is mounted.\n logger=self.logger) # optional\n```\nAnd call your request -\n```Python\nrequest_data = CatsDescriptorModel({ # request parameters\n \"cats_ids\": [1, 2] \n}) \nresponse = self.requester.request(GetCats, # rememebr the request class name\n data=request_data, \n method=\"post\")\n\n# type(response) == CatsModel if success, NoCatsFoundModel if failed!\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "swaggapi", "package_url": "https://pypi.org/project/swaggapi/", "platform": "", "project_url": "https://pypi.org/project/swaggapi/", "project_urls": null, "release_url": "https://pypi.org/project/swaggapi/0.6.7/", "requires_dist": [ "django (>=1.7)", "requests", "attrdict", "six" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "summary": "Swagger REST API builder", "version": "0.6.7" }, "last_serial": 5456086, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "dbdcf9cc3827ccc0e0ce44f981f15eb4", "sha256": "8e714797c248db46363f4bef6e345339a5ce620e4f38b67f371680bac62eff50" }, "downloads": -1, "filename": "swaggapi-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "dbdcf9cc3827ccc0e0ce44f981f15eb4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52397, "upload_time": "2018-08-14T19:38:40", "url": "https://files.pythonhosted.org/packages/79/a5/ac3e3fbef2fa8c517db4194c778a6dc694ca5ceebd0e85f0d3d54f12ff87/swaggapi-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d04db3ce084f9ecdb0424ee40278d312", "sha256": "b0611d55d3bec13abc3a35090d32d356b58b563708494dc2133ac02aa96a7bca" }, "downloads": -1, "filename": "swaggapi-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d04db3ce084f9ecdb0424ee40278d312", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25070, "upload_time": "2018-08-14T19:38:41", "url": "https://files.pythonhosted.org/packages/39/91/a395c0d33dd7e1851daf61e22f02ed606f9d32ff1fef08c8178fbf790195/swaggapi-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e802447aa549f37ce8e84ebeeca4c859", "sha256": "248af48cfb585a1d969a70b9e1574a65bf1e9849f2d67e5222e857a1fe3fd2f2" }, "downloads": -1, "filename": "swaggapi-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "e802447aa549f37ce8e84ebeeca4c859", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52626, "upload_time": "2018-08-17T11:27:15", "url": "https://files.pythonhosted.org/packages/29/67/53d92d4ee031d3c133506d0f792c6451a290957ba035afc884c06fb11eff/swaggapi-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd6ec65fbb94963ea521afac4ca085d9", "sha256": "3b31660504c95773c6a814a7da035f60920f008746944b20f3f3131d93ec7215" }, "downloads": -1, "filename": "swaggapi-0.2.0.tar.gz", "has_sig": false, "md5_digest": "cd6ec65fbb94963ea521afac4ca085d9", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25263, "upload_time": "2018-08-17T11:27:16", "url": "https://files.pythonhosted.org/packages/91/36/b5bf2d258400c121c32a95ec11d3ef243aaadd51f63af43a4c9154881575/swaggapi-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ac435f8dc19f91d2a24005e2d548199f", "sha256": "a0add13314f42fd680c3d0574367dad4f3467c2541e1a5f8232c6b13aa741f50" }, "downloads": -1, "filename": "swaggapi-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "ac435f8dc19f91d2a24005e2d548199f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52698, "upload_time": "2018-08-17T11:57:21", "url": "https://files.pythonhosted.org/packages/1d/09/c189ec5a75a18a6d57d2e9d2e21f411194d78811829e1a3b84e279c21064/swaggapi-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e53011ac1a5333156a69e4976500be4", "sha256": "357eaf13f556c35e0e340dac504555fd5cf620bd9af6b51cfdc96b7fde6c2988" }, "downloads": -1, "filename": "swaggapi-0.2.1.tar.gz", "has_sig": false, "md5_digest": "0e53011ac1a5333156a69e4976500be4", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25304, "upload_time": "2018-08-17T11:57:22", "url": "https://files.pythonhosted.org/packages/55/84/3b28e3131af6c6afb4b6881c4a9cd498fb84883d118c79b82d922dd5f0c0/swaggapi-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "c70dadfee555d0c25cb3771efb393e48", "sha256": "bd4076010a24bcf16cd6f46e2ad13f07b3c3a8fbc65875011e209dd3a533385f" }, "downloads": -1, "filename": "swaggapi-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "c70dadfee555d0c25cb3771efb393e48", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52749, "upload_time": "2018-08-17T13:43:44", "url": "https://files.pythonhosted.org/packages/fe/be/071d957da0a3c15c0a82e2b956d1c0519afc1a57372c97f46619d323acf0/swaggapi-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4f88c999a01f3443438c34bbdf48d60f", "sha256": "9f9d3fe37ce2b36ba43cdd7f25bbe56aad037be35c1e28a2efe3a97b560045c5" }, "downloads": -1, "filename": "swaggapi-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4f88c999a01f3443438c34bbdf48d60f", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25311, "upload_time": "2018-08-17T13:43:45", "url": "https://files.pythonhosted.org/packages/a0/1c/d18d0c79b8bd3a175581d30c88e7a72e7e4e44078da3aab479d3782292b3/swaggapi-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "fef4f1b974602345e21c99f370706c23", "sha256": "50e0528e0f96db4171beb886f94013bca6cb8a2a83e7f397789905dd746f80f1" }, "downloads": -1, "filename": "swaggapi-0.2.3-py2-none-any.whl", "has_sig": false, "md5_digest": "fef4f1b974602345e21c99f370706c23", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52849, "upload_time": "2018-08-17T15:26:32", "url": "https://files.pythonhosted.org/packages/a8/a4/be478803ac6e13c59d69605210d1dd437bdc5a5095034df9bdfcac31a0c2/swaggapi-0.2.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f612e92530479466013f8e317829c81a", "sha256": "c0a5e0ecb389ad07aa6cb90fbb056838c308e766bcebcca043cbdacce8fc0e4c" }, "downloads": -1, "filename": "swaggapi-0.2.3.tar.gz", "has_sig": false, "md5_digest": "f612e92530479466013f8e317829c81a", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25365, "upload_time": "2018-08-17T15:26:34", "url": "https://files.pythonhosted.org/packages/ee/61/e40c5a2197ebe49f84696aa15e1bcc03d5a6fd5abef62fb8d492bd2247a0/swaggapi-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "e07f04da38bb970d016dd1987ef3da06", "sha256": "c74292131a8f87c6550c2b39f8a676134b24a0f4f059aa6cb227a5131d193a29" }, "downloads": -1, "filename": "swaggapi-0.2.4-py2-none-any.whl", "has_sig": false, "md5_digest": "e07f04da38bb970d016dd1987ef3da06", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52823, "upload_time": "2018-08-17T15:38:11", "url": "https://files.pythonhosted.org/packages/3c/ff/923bad4ffe2f25b63e211f7dc8a0d218c105ac075a54708ee02a9e64e3b1/swaggapi-0.2.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd8aa868f416ff383ce039bba4ee1124", "sha256": "b3f242c8b9b79c614dbf9c95f5285b8ceeac9b48a324f11fa2c566cf59c9c348" }, "downloads": -1, "filename": "swaggapi-0.2.4.tar.gz", "has_sig": false, "md5_digest": "bd8aa868f416ff383ce039bba4ee1124", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25354, "upload_time": "2018-08-17T15:38:13", "url": "https://files.pythonhosted.org/packages/ea/8b/292edcf63f220aed61da6886558af36f09ba826a76ad0869145ebbda6e55/swaggapi-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "b38274ab01fc0a47145b0409dd96d3da", "sha256": "a2210d28c85974b5d1486bc32c47379d8b184157984d350f45be2e0b4daac61d" }, "downloads": -1, "filename": "swaggapi-0.2.5-py2-none-any.whl", "has_sig": false, "md5_digest": "b38274ab01fc0a47145b0409dd96d3da", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52846, "upload_time": "2018-08-17T19:26:29", "url": "https://files.pythonhosted.org/packages/81/4b/943e2d3c1541f26137567a03eac1d3ff719728aa8206eb9ff03382a6a21d/swaggapi-0.2.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c02856a120c235ea392b327fc5d2ec1", "sha256": "0a23ea9194782b3043ee03b69f4adffbc552698527c45c1091d13b8bb04ce22a" }, "downloads": -1, "filename": "swaggapi-0.2.5.tar.gz", "has_sig": false, "md5_digest": "7c02856a120c235ea392b327fc5d2ec1", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25380, "upload_time": "2018-08-17T19:26:31", "url": "https://files.pythonhosted.org/packages/46/6f/d226c5be539558113b81b203c1bc2122bfb2b809c89bece2e3954be56d6a/swaggapi-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "86b6d552927a7cd180a73da079eca1be", "sha256": "d2a9f77fdbded8416f12cc9f5c6bd4d071ab4147ee418be5604e996766e8a9f7" }, "downloads": -1, "filename": "swaggapi-0.2.6-py2-none-any.whl", "has_sig": false, "md5_digest": "86b6d552927a7cd180a73da079eca1be", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 52835, "upload_time": "2018-08-18T12:08:35", "url": "https://files.pythonhosted.org/packages/9d/f5/caffd5f1e1f8c78f6cc70436d248b4044c8cce5bba869e43d04f7c3769e6/swaggapi-0.2.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48dbb2525ed9dfa732108d66c881e09d", "sha256": "94e81af266b3dc919f6ec0a0fdcc0ff8fa0140306276a887ccfa615c51c09430" }, "downloads": -1, "filename": "swaggapi-0.2.6.tar.gz", "has_sig": false, "md5_digest": "48dbb2525ed9dfa732108d66c881e09d", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25377, "upload_time": "2018-08-18T12:08:36", "url": "https://files.pythonhosted.org/packages/a9/fa/c3e044531c54b273f04a4000f078dda36b07c986e2e183d27163dfb70ceb/swaggapi-0.2.6.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0aafca0444a839c992218d4b2ddf688f", "sha256": "66e29742b170b3b32d8da3a62ebcd7e3a2b3d1a67c4873261decd6c847d94a29" }, "downloads": -1, "filename": "swaggapi-0.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "0aafca0444a839c992218d4b2ddf688f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 53027, "upload_time": "2018-08-18T18:57:00", "url": "https://files.pythonhosted.org/packages/03/08/10101248978a09b5931ef2b36be0ac0a3369b8777d416c62f8be9a5642ad/swaggapi-0.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bd66c16cb8f290965a6e418e827b954", "sha256": "42d3136dda47e85b13e874a1eca2866d5be1166fdc6188d2083cb23bde8175d2" }, "downloads": -1, "filename": "swaggapi-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0bd66c16cb8f290965a6e418e827b954", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25524, "upload_time": "2018-08-18T18:57:02", "url": "https://files.pythonhosted.org/packages/70/a6/7aeafa64a523b662ee0705b854ecc4fffb6d102118fd831b0724cd51a92b/swaggapi-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "c545445af718a77b9fbc1b982495b5e2", "sha256": "fadca6b8fea4f0c61ea0342665c93ad058da196610b90a7847fa2d4cdf5e97a5" }, "downloads": -1, "filename": "swaggapi-0.3.1_1-py2-none-any.whl", "has_sig": false, "md5_digest": "c545445af718a77b9fbc1b982495b5e2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 49309, "upload_time": "2018-08-18T19:15:02", "url": "https://files.pythonhosted.org/packages/20/54/12e8fef8242492c170684a7865439458092beaa5d6b654d9a090351ee1ef/swaggapi-0.3.1_1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1461c281598af6d57ed73985a07fc6b", "sha256": "c6211b060252a6d3c478fbb7592312dae3fee73ed403bd723b0380707474228e" }, "downloads": -1, "filename": "swaggapi-0.3.1_1.tar.gz", "has_sig": false, "md5_digest": "d1461c281598af6d57ed73985a07fc6b", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25557, "upload_time": "2018-08-18T19:15:04", "url": "https://files.pythonhosted.org/packages/c3/89/f371e4881885fb26066e3d93adda1740b111519b1db8e4a6d2b2f4043dd1/swaggapi-0.3.1_1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "4bfd3804941ee9df4758c9149fa592e9", "sha256": "8c7bf6b314c48f7ef8ddd345d7ddd65f83067905c4248b8adfc0de49957b77d3" }, "downloads": -1, "filename": "swaggapi-0.3.2-py2-none-any.whl", "has_sig": false, "md5_digest": "4bfd3804941ee9df4758c9149fa592e9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": "~=2.7.0", "size": 49311, "upload_time": "2018-08-18T19:18:37", "url": "https://files.pythonhosted.org/packages/4e/63/3147e757671be16a8571364609a1d69bc9f9d9d13772cfada115b1856d0b/swaggapi-0.3.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43e8013dce346fde2ae77a64f21ea770", "sha256": "bc8864a33fe50155d31478bfb6b8fd57d24d9a4043c27f94a6896abae3f501c3" }, "downloads": -1, "filename": "swaggapi-0.3.2.tar.gz", "has_sig": false, "md5_digest": "43e8013dce346fde2ae77a64f21ea770", "packagetype": "sdist", "python_version": "source", "requires_python": "~=2.7.0", "size": 25568, "upload_time": "2018-08-18T19:18:39", "url": "https://files.pythonhosted.org/packages/6c/82/6c3692587391b5277616827acda569da6563f3db8fd370ef9f7fde43d221/swaggapi-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "69cae4ee1dd90ddd546d6ef558f58fcd", "sha256": "70acc83c1a4ce4f92ad31094e07f5f5082654d853e58845a7c772985060f332e" }, "downloads": -1, "filename": "swaggapi-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "69cae4ee1dd90ddd546d6ef558f58fcd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 49901, "upload_time": "2018-08-18T19:57:20", "url": "https://files.pythonhosted.org/packages/d1/66/820dc6e91b7882756b7767d61e1639cbd99dcc6b052ebb5b3b53f8ee821b/swaggapi-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b930a4ae756065d77f8cfea261dcf9d", "sha256": "d855bbef3664a96e5fa8a1e6a838c1f8e9f40d29f002fd0af219ba0f67084054" }, "downloads": -1, "filename": "swaggapi-0.4.0.tar.gz", "has_sig": false, "md5_digest": "0b930a4ae756065d77f8cfea261dcf9d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 25774, "upload_time": "2018-08-18T19:57:21", "url": "https://files.pythonhosted.org/packages/55/44/458f12730232218a2bdf4075abc0522da9ab0583a43e750fa1375a6e6c96/swaggapi-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "20a2f36df7ca8b1389e12109fc9135d0", "sha256": "583cbd5a15fa8356ccae150a4ca0fe26ea8c4382ab65b6b9b598214c014e7d6b" }, "downloads": -1, "filename": "swaggapi-0.4.1-py2-none-any.whl", "has_sig": false, "md5_digest": "20a2f36df7ca8b1389e12109fc9135d0", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 49905, "upload_time": "2018-08-19T18:14:41", "url": "https://files.pythonhosted.org/packages/ef/60/6996f73ce1209958d27351f81833a37452f02b42f16e8e2456eb8f85d551/swaggapi-0.4.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4192de19a6a4b706439c05ac439fc3d6", "sha256": "fae3596bff3aa6f1507661022536b41e9914b0a8d36253cc96e060f467355d03" }, "downloads": -1, "filename": "swaggapi-0.4.1.tar.gz", "has_sig": false, "md5_digest": "4192de19a6a4b706439c05ac439fc3d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 25772, "upload_time": "2018-08-19T18:14:43", "url": "https://files.pythonhosted.org/packages/47/f1/e8e5759965f12219c47e0073488676f1f046247ce02f6989be60e778a3ef/swaggapi-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "e3fe5d71e6af50d6eab2002cf2641371", "sha256": "9f0c55b092da79007e0333968dded12135f415ec15c7e99707a49638032ee6a6" }, "downloads": -1, "filename": "swaggapi-0.5.0-py2-none-any.whl", "has_sig": false, "md5_digest": "e3fe5d71e6af50d6eab2002cf2641371", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 49971, "upload_time": "2018-08-19T18:27:38", "url": "https://files.pythonhosted.org/packages/50/7c/50df94ce274b3705559f9b71349b057cb28284796b32ba1b961e5ae892f7/swaggapi-0.5.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe9a78e15a53d009832ca23e846ef4ef", "sha256": "f265faa6ca536e376741b3bc83bffcb61247f00034fa934477490398f3644092" }, "downloads": -1, "filename": "swaggapi-0.5.0.tar.gz", "has_sig": false, "md5_digest": "fe9a78e15a53d009832ca23e846ef4ef", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 25817, "upload_time": "2018-08-19T18:27:39", "url": "https://files.pythonhosted.org/packages/44/66/59c8364845f6ceaae1252785bef51727d16a3915cd9778762a4cc212c08a/swaggapi-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "a1394b9a5c819d19ac1c00fb2c9eedcc", "sha256": "505bdcd6ee1da84a90bd1c6ba61e3415dbc3295ab0adcdf7e604e0e0b093545d" }, "downloads": -1, "filename": "swaggapi-0.6.0-py2-none-any.whl", "has_sig": false, "md5_digest": "a1394b9a5c819d19ac1c00fb2c9eedcc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 50871, "upload_time": "2018-08-20T21:49:35", "url": "https://files.pythonhosted.org/packages/ac/62/3e631119a8c6250d52346872491256f882c5c6996c9d7c7112ad9ab6445c/swaggapi-0.6.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a27a226a430e3350d2924cfa1c9ed764", "sha256": "b2058567a79e9d880334f9b47693f93e50f3e39621a390c74fb1fcacd84a769b" }, "downloads": -1, "filename": "swaggapi-0.6.0.tar.gz", "has_sig": false, "md5_digest": "a27a226a430e3350d2924cfa1c9ed764", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 26535, "upload_time": "2018-08-20T21:49:37", "url": "https://files.pythonhosted.org/packages/b9/c6/15662f2c24af84d0cd4282e9e2383ab8a3d23441eac2aad0528a2771b639/swaggapi-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "9fec34bd6b89f7e71b6323c3b22f6e42", "sha256": "000c7c7584d81c870cb2c8cbc36f7a4cda6b26992fd8cd7ec62a5427fec36ca8" }, "downloads": -1, "filename": "swaggapi-0.6.1-py2-none-any.whl", "has_sig": false, "md5_digest": "9fec34bd6b89f7e71b6323c3b22f6e42", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29087, "upload_time": "2018-10-14T12:05:52", "url": "https://files.pythonhosted.org/packages/8f/cc/e3e4fc87dae95551681ea6105679eab7c39cbd74492f5f128a94e3f45434/swaggapi-0.6.1-py2-none-any.whl" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "7c70755124a70753d3a8b1cb89b4204e", "sha256": "73060e103ebcd84e476a69a5ee213debe8bf195dc5fc6f95a8568164e4f22798" }, "downloads": -1, "filename": "swaggapi-0.6.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7c70755124a70753d3a8b1cb89b4204e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29092, "upload_time": "2018-10-14T13:41:10", "url": "https://files.pythonhosted.org/packages/cd/4b/bafe96eac6d02d14d5f399976fb3e35ed3d654ea213abd09fb7f667155d0/swaggapi-0.6.2-py2.py3-none-any.whl" } ], "0.6.3": [ { "comment_text": "", "digests": { "md5": "4174bf75f1139b2c77fad722e607ed0e", "sha256": "73975893e476a16b79a23879fd48794862638a963ac7e4e630733de8733d0c4c" }, "downloads": -1, "filename": "swaggapi-0.6.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4174bf75f1139b2c77fad722e607ed0e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29083, "upload_time": "2018-10-14T14:01:37", "url": "https://files.pythonhosted.org/packages/e3/14/0e52da7fe4fdf0143315a5e67abcfa3223fe9f606b6eceedab649f794993/swaggapi-0.6.3-py2.py3-none-any.whl" } ], "0.6.4": [ { "comment_text": "", "digests": { "md5": "d240d65b636a4d344dd46549779999f9", "sha256": "ad63ffc399343758bd714b5ca3a932a9dd605e3c8e76ba1031a2141de1bd373b" }, "downloads": -1, "filename": "swaggapi-0.6.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d240d65b636a4d344dd46549779999f9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29094, "upload_time": "2018-10-15T11:30:23", "url": "https://files.pythonhosted.org/packages/95/ea/7e797566391148a9de3c6fba2eb75079c7fd43c0168030796b6332f272b8/swaggapi-0.6.4-py2.py3-none-any.whl" } ], "0.6.5": [ { "comment_text": "", "digests": { "md5": "9187519ece748caf18eeb65fff13f6ae", "sha256": "0b74c1b628e84fafe2d8640a555818a9920d25996b51d03d169bbcd80494299c" }, "downloads": -1, "filename": "swaggapi-0.6.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9187519ece748caf18eeb65fff13f6ae", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 28304, "upload_time": "2018-10-16T12:28:21", "url": "https://files.pythonhosted.org/packages/d6/28/cffc10e0c43d9bc435966f40f45ab6070d19f981d4b7fec69e347f4c7ec2/swaggapi-0.6.5-py2.py3-none-any.whl" } ], "0.6.6": [ { "comment_text": "", "digests": { "md5": "7041388c325f7c64389ced1f9b0f4d49", "sha256": "4406db71fea772f021d6d8cff1a84340f7dcc308f683eb27eeaae10449fb5d71" }, "downloads": -1, "filename": "swaggapi-0.6.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7041388c325f7c64389ced1f9b0f4d49", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29146, "upload_time": "2019-04-09T07:47:54", "url": "https://files.pythonhosted.org/packages/ce/39/95904937e89b18f009119f30ec61851b2b21b77b7e5009eb9dac11a71481/swaggapi-0.6.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4efa67ce62ff7aab872f1e0607e45a6a", "sha256": "5f141838be76c66992c6e2e4ad0f6018d4c150518cfd06bb7d4b896ec0d22521" }, "downloads": -1, "filename": "swaggapi-0.6.6.tar.gz", "has_sig": false, "md5_digest": "4efa67ce62ff7aab872f1e0607e45a6a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 26372, "upload_time": "2019-04-09T07:47:57", "url": "https://files.pythonhosted.org/packages/e5/2f/79c5ccf867b8c6b97d700c6991feb1bf46fe83a764bd0dfc635ff28730a8/swaggapi-0.6.6.tar.gz" } ], "0.6.7": [ { "comment_text": "", "digests": { "md5": "0a48c866d17581f0af36a95dadf32a97", "sha256": "e585568acfe053df7bb85855ceac73748b4e458f18ac8e57c0f50c21e2bdcba1" }, "downloads": -1, "filename": "swaggapi-0.6.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a48c866d17581f0af36a95dadf32a97", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29141, "upload_time": "2019-06-27T09:32:15", "url": "https://files.pythonhosted.org/packages/9c/68/9e18cea683b5ed402517db3e684317c95534c0da8ac51206cd5eb9bd33e9/swaggapi-0.6.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcf83a6ec4a6b02e730ced3a80b02b5d", "sha256": "6ab10bc438b869851551508f4c413a8d4c633cb20a86e36f3fe9213fe35e15e0" }, "downloads": -1, "filename": "swaggapi-0.6.7.tar.gz", "has_sig": false, "md5_digest": "dcf83a6ec4a6b02e730ced3a80b02b5d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 23471, "upload_time": "2019-06-27T09:32:17", "url": "https://files.pythonhosted.org/packages/a5/c7/4e6032b45741bfb956dded414fd16b10f8bfed0b6002a21cdaea80465363/swaggapi-0.6.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0a48c866d17581f0af36a95dadf32a97", "sha256": "e585568acfe053df7bb85855ceac73748b4e458f18ac8e57c0f50c21e2bdcba1" }, "downloads": -1, "filename": "swaggapi-0.6.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0a48c866d17581f0af36a95dadf32a97", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 29141, "upload_time": "2019-06-27T09:32:15", "url": "https://files.pythonhosted.org/packages/9c/68/9e18cea683b5ed402517db3e684317c95534c0da8ac51206cd5eb9bd33e9/swaggapi-0.6.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcf83a6ec4a6b02e730ced3a80b02b5d", "sha256": "6ab10bc438b869851551508f4c413a8d4c633cb20a86e36f3fe9213fe35e15e0" }, "downloads": -1, "filename": "swaggapi-0.6.7.tar.gz", "has_sig": false, "md5_digest": "dcf83a6ec4a6b02e730ced3a80b02b5d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*", "size": 23471, "upload_time": "2019-06-27T09:32:17", "url": "https://files.pythonhosted.org/packages/a5/c7/4e6032b45741bfb956dded414fd16b10f8bfed0b6002a21cdaea80465363/swaggapi-0.6.7.tar.gz" } ] }