{ "info": { "author": "Ashley Sommer", "author_email": "ashleysommer@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Sanic-Dispatcher\n### A Dispatcher extension for Sanic that also acts as a Sanic-to-WSGI adapter \n\nAllows you to do this: *(seriously)*\n```python\nfrom sanic import Sanic, response\nfrom sanic_dispatcher import SanicDispatcherMiddlewareController\nfrom flask import Flask, make_response, current_app as flask_app\n\napp = Sanic(__name__)\n\ndispatcher = SanicDispatcherMiddlewareController(app)\n\nchild_sanic_app = Sanic(\"MyChildSanicApp\")\n\nchild_flask_app = Flask(\"MyChildFlaskApp\")\n\n@app.middleware(\"response\")\nasync def modify_response(request, response):\n response.body = response.body + b\"\\nModified by Sanic Response middleware!\"\n response.headers['Content-Length'] = len(response.body)\n return response\n\n@app.route(\"/\")\nasync def index(request):\n return response.text(\"Hello World from {}\".format(request.app.name))\n\n@child_sanic_app.route(\"/\")\nasync def index(request):\n return response.text(\"Hello World from {}\".format(request.app.name))\n\n@child_flask_app.route(\"/\")\ndef index():\n app = flask_app\n return make_response(\"Hello World from {}\".format(app.import_name))\n\ndispatcher.register_sanic_application(child_sanic_app, '/sanicchild', apply_middleware=True)\ndispatcher.register_wsgi_application(child_flask_app.wsgi_app, '/flaskchild', apply_middleware=True)\n\nif __name__ == \"__main__\":\n app.run(port=8001, debug=True)\n```\n\n## Installation \n\n pip install Sanic-Dispatcher\n\n## How To Use\n\nFirst make a Sanic application the way you normally do:\n```python\nfrom sanic import Sanic\n\napp = Sanic(__name__) # This creates a sanic app\n```\n`app` becomes your 'base' or 'parent' sanic app which will accommodate the Dispatcher extension\n\nCreate a Dispatcher\n```python\nfrom sanic_dispatcher import SanicDispatcherMiddlewareController\n\ndispatcher = SanicDispatcherMiddlewareController(app)\n```\n`dispatcher` is your new dispatcher controller.\n*Note: This takes a reference to `app` as its first parameter, but it does not consume `app`, nor does it return `app`.*\n\n**I want to dispatch another Sanic App**\n```python\napp = Sanic(__name__)\n\ndispatcher = SanicDispatcherMiddlewareController(app)\n\notherapp = Sanic(\"MyChildApp\")\n\ndispatcher.register_sanic_application(otherapp, \"/childprefix\")\n\n@otherapp.route('/')\nasync def index(request):\n return response.text(\"Hello World from Child App\")\n```\nBrowsing to url `/childprefix/` will invoke the `otherapp` App, and call the `/` route which displays \"Hello World from Child App\"\n\n**What if the other App is a Flask App?**\n```python\nfrom flask import Flask, make_response\n\napp = Sanic(__name__)\n\ndispatcher = SanicDispatcherMiddlewareController(app)\nflaskapp = Flask(\"MyFlaskApp\")\n\n# register the wsgi_app method from the flask app into the dispatcher\ndispatcher.register_wsgi_application(flaskapp.wsgi_app, \"/flaskprefix\")\n\n@flaskapp.route('/')\ndef index():\n return make_response(\"Hello World from Flask App\")\n```\nBrowsing to url `/flaskprefix/` will invoke the Flask App, and call the `/` route which displays \"Hello World from Flask App\"\n\n**What if the other App is a Django App?**\n```python\nimport my_django_app\n\napp = Sanic(__name__)\n\ndispatcher = SanicDispatcherMiddlewareController(app)\n# register the django wsgi application into the dispatcher\ndispatcher.register_wsgi_application(my_django_app.wsgi.application,\n \"/djangoprefix\")\n```\nBrowsing to url `/djangoprefix/` will invoke the Django App.\n\n**Can I run a default application?**\n\nThe Sanic App `app` you create at the start is also the default app.\n\nWhen you navigate to a URL that does not match a registered dispatch prefix, this Sanic app will handle the request itself as per normal.\n```python\napp = Sanic(__name__)\n\ndispatcher = SanicDispatcherMiddlewareController(app)\n\notherapp = Sanic(\"MyChildApp\")\n\ndispatcher.register_sanic_application(otherapp, \"/childprefix\")\n\n@app.route('/')\nasync def index(request):\n return response.text(\"Hello World from Default App\")\n\n@otherapp.route('/')\nasync def index(request):\n return response.text(\"Hello World from Child App\")\n```\nBrowsing to url `/` will *not* invoke any Dispatcher applications, so `app` will handle the request itself, resolving the `/` route which displays \"Hello World from Default App\"\n\n**I want to apply common middleware to the registered applications!**\n\nEasy!\n```python\nimport my_django_app\nfrom flask import Flask, make_response, current_app\n\napp = Sanic(__name__)\n\ndispatcher = SanicDispatcherMiddlewareController(app)\n\nchild_sanic_app = Sanic(\"MyChildSanicApp\")\n\nchild_flask_app = Flask(\"MyChildFlaskApp\")\n\n@app.middleware(\"request\")\nasync def modify_request(request):\n request.headers['Content-Type'] = \"text/plain\"\n\n@app.middleware(\"response\")\nasync def modify_response(request, response):\n response.body = response.body + b\"\\nModified by Sanic Response middleware!\"\n response.headers['Content-Length'] = len(response.body)\n return response\n\n@app.route(\"/\")\nasync def index(request):\n return response.text(\"Hello World from {}\".format(request.app.name))\n\n@child_sanic_app.route(\"/\")\nasync def index(request):\n return response.text(\"Hello World from {}\".format(request.app.name))\n\n@child_flask_app.route(\"/\")\ndef index():\n app = current_app\n return make_response(\"Hello World from {}\".format(app.import_name))\n\ndispatcher.register_sanic_application(child_sanic_app,\n '/childprefix', apply_middleware=True)\ndispatcher.register_wsgi_application(my_django_app.wsgi.application,\n '/djangoprefix', apply_middleware=True)\ndispatcher.register_wsgi_application(child_flask_app.wsgi_app,\n '/flaskprefix', apply_middleware=True)\n```\nThe key here is passing `apply_middleware=True` to the relevant register application function. By default `apply_middleware` is set to `False` for all registered dispatcher applications.\n\nIn this example the Sanic Request Middleware `modify_request` will be applied to ALL requests, including those handled by applications registered on the dispatcher. The request middleware will be applied to the `request` *before* it is passed to any registered applications.\n\nIn this example the Sanic Response Middleware `modify_response` will be applied to ALL responses, including those which were generated by applications registered on the dispatcher. The response middleware will be applied to the `response` *after* it is processed by the registered application.\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": "https://github.com/ashleysommer/sanic-dispatcher", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Sanic-Dispatcher", "package_url": "https://pypi.org/project/Sanic-Dispatcher/", "platform": "any", "project_url": "https://pypi.org/project/Sanic-Dispatcher/", "project_urls": { "Homepage": "https://github.com/ashleysommer/sanic-dispatcher" }, "release_url": "https://pypi.org/project/Sanic-Dispatcher/0.7.3.0/", "requires_dist": [ "sanic (>=0.7.0)" ], "requires_python": "", "summary": "Multi-application dispatcher based on DispatcherMiddleware from the Werkzeug Project.", "version": "0.7.3.0" }, "last_serial": 5734068, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "1a4708447230c3136d21faff97191232", "sha256": "83f8e574fb1806ee79cc261caf585f318392168fb06866d525b52946a0d837d3" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1a4708447230c3136d21faff97191232", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8949, "upload_time": "2017-04-12T01:40:45", "url": "https://files.pythonhosted.org/packages/32/4b/4e03b0865cbd10a3922908bb134aa5e716214daaf21bb9560dd6fc414d86/Sanic_Dispatcher-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9234d2419af559efc977d72d04fb510c", "sha256": "2353927af4b5824f9b5c8732432d0c0aa27b8db3b928dcbc410e06f116dc22c8" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.0-py3.5.egg", "has_sig": false, "md5_digest": "9234d2419af559efc977d72d04fb510c", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 11217, "upload_time": "2017-04-12T01:40:48", "url": "https://files.pythonhosted.org/packages/58/a9/f9fdc22a14a4ea1ed0805955212767b3976f88848e95096fa21f3cc4aa22/Sanic_Dispatcher-0.5.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "0e9269a13acc6e92b683f8ea306da4a1", "sha256": "304903907facd752998fcbcc780c609f2725bb4ef33ef7f731bf4731fbea08c0" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0e9269a13acc6e92b683f8ea306da4a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5697, "upload_time": "2017-04-12T01:40:46", "url": "https://files.pythonhosted.org/packages/93/16/a1cf6481e1b18c0c081a59b69622743494adcafb4bed990e936c9823c30e/Sanic-Dispatcher-0.5.0.tar.gz" } ], "0.5.0.1": [ { "comment_text": "", "digests": { "md5": "175a65a83c68ca91eb8ed72d0c90d987", "sha256": "704f2079aa0bf8010293e9e0f2b736a93f5562a41bcae6853448605db7faf8f0" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "175a65a83c68ca91eb8ed72d0c90d987", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9495, "upload_time": "2017-04-12T05:50:09", "url": "https://files.pythonhosted.org/packages/64/5a/eea7e946a74abb42206a8a638a5b5ca550b3e9ffb9dc2621d3d98c1d229f/Sanic_Dispatcher-0.5.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c56102fbb9c28778020db0927cb520c9", "sha256": "ef7d243274bad5a28bc42fdf0ccd2d4e3dea157b2c29be474dc9f27a8ece3439" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.0.1-py3.5.egg", "has_sig": false, "md5_digest": "c56102fbb9c28778020db0927cb520c9", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 12365, "upload_time": "2017-04-12T05:50:13", "url": "https://files.pythonhosted.org/packages/38/d1/26f96b90d3300ca1587328176184ad91c04365bbdb06970bdf9e0327554e/Sanic_Dispatcher-0.5.0.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "aa5b4c501d36cf098d3a9e42beea3619", "sha256": "47fc60533ad616dab432efc784db5b2227722cb2e55e4a9ee19593cb1d1f4541" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.0.1.tar.gz", "has_sig": false, "md5_digest": "aa5b4c501d36cf098d3a9e42beea3619", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7266, "upload_time": "2017-04-12T05:50:11", "url": "https://files.pythonhosted.org/packages/3d/f9/b397c6dcaccdea65af14abc6b112513700cff2bd50b85e0bb1bf3b77d1c2/Sanic-Dispatcher-0.5.0.1.tar.gz" } ], "0.5.1.0": [ { "comment_text": "", "digests": { "md5": "0bfce232ba790f25e4ec6329e562e44c", "sha256": "5aa1abe5b7bf0cf33c82ff7d7cb286cc47c3079caeb67123c58bfa1a68f95158" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0bfce232ba790f25e4ec6329e562e44c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9495, "upload_time": "2017-04-17T23:24:28", "url": "https://files.pythonhosted.org/packages/79/ca/13642ca51fbd9d40f4f66bd41a86b6bacb41d63db03803dc3c60485b6fdc/Sanic_Dispatcher-0.5.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9aee19e1f5dbafae5fd2936fba66fe19", "sha256": "2bf72ae0c6394829094738e26766c8583c66e183345d14453dfdd84919db76c1" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.1.0-py3.5.egg", "has_sig": false, "md5_digest": "9aee19e1f5dbafae5fd2936fba66fe19", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 12363, "upload_time": "2017-04-17T23:24:32", "url": "https://files.pythonhosted.org/packages/3d/39/04d036b7e803c49759e6ce07a2c5173106995ce597b3721cb8b2d9ed65f9/Sanic_Dispatcher-0.5.1.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "fbebff9ac9cfc0d4ebd2bc24dbec9f98", "sha256": "3d87f890ca6128cc825ee7fb8e70866e9d2248498fc39d7ba8c01738e57ebce7" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.1.0.tar.gz", "has_sig": false, "md5_digest": "fbebff9ac9cfc0d4ebd2bc24dbec9f98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7263, "upload_time": "2017-04-17T23:24:30", "url": "https://files.pythonhosted.org/packages/24/c1/9995a4850a8616527447354dc30a00ecafb35dbbe1f790c111b20a074ac5/Sanic-Dispatcher-0.5.1.0.tar.gz" } ], "0.5.2.0": [ { "comment_text": "", "digests": { "md5": "a31929231287ecd3f54c079676c6e5e1", "sha256": "31df5b8704fb0cf7cadd734f9b42f816733076c615a12d5bfe68dc50eb843de0" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a31929231287ecd3f54c079676c6e5e1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9781, "upload_time": "2017-04-28T02:37:44", "url": "https://files.pythonhosted.org/packages/39/c9/e96b04fd3961e902a388da7f520e51d9fc5d2878b9cc235d93ee22068a50/Sanic_Dispatcher-0.5.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "919400be2a182eff8d9a64a46da5b40c", "sha256": "061e3e23b73e93ac929bdc0a045c76b0187bbb481f1df8153f17194faacfb91a" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.2.0-py3.5.egg", "has_sig": false, "md5_digest": "919400be2a182eff8d9a64a46da5b40c", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13106, "upload_time": "2017-04-28T02:37:48", "url": "https://files.pythonhosted.org/packages/94/b8/dcc77619a75e51c4718923b6392384813001bf35bf89320e99dbc4d468e6/Sanic_Dispatcher-0.5.2.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "ba8ab0fcb9fafacd27dd7c403ba47c2a", "sha256": "f88fa5d838995ed4c001f650d27615f91e9f604d2863a3159ea89f8b44c0596b" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.2.0.tar.gz", "has_sig": false, "md5_digest": "ba8ab0fcb9fafacd27dd7c403ba47c2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7686, "upload_time": "2017-04-28T02:37:46", "url": "https://files.pythonhosted.org/packages/16/80/ba2a7aee6fac2cd067e2d1c156d355be518601350e611a367b8a4453647a/Sanic-Dispatcher-0.5.2.0.tar.gz" } ], "0.5.2.1": [ { "comment_text": "", "digests": { "md5": "9dae77e8511bc9c152fef371b5150e2d", "sha256": "b6192efc1e08b98ccc59dc1391f6b0641f80407a0e3365611ef4208febe4342b" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9dae77e8511bc9c152fef371b5150e2d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10121, "upload_time": "2017-05-02T07:10:30", "url": "https://files.pythonhosted.org/packages/3c/61/331cb724bde8c72172a26cd7d05dd2b77a2fbdf62b58c57a7dc5c2c89035/Sanic_Dispatcher-0.5.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1808d1dd56253c3b28980aa99390fe5f", "sha256": "e1fb034b697900a427e0abe3d235024b1b8c6995e583590d6d07484190a9f8bf" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.2.1-py3.5.egg", "has_sig": false, "md5_digest": "1808d1dd56253c3b28980aa99390fe5f", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13932, "upload_time": "2017-05-02T07:10:34", "url": "https://files.pythonhosted.org/packages/f8/68/f573ae15aa558bdda4f1487a47deeeebb8cd96e42e6c21a7240bd2845a95/Sanic_Dispatcher-0.5.2.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "4a3ca909aba374c425dd1db124a8741c", "sha256": "a9044605936d7b5b9da3345b95472128ef71b3fd3d3b0cec3a619cdf3b3454e3" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.2.1.tar.gz", "has_sig": false, "md5_digest": "4a3ca909aba374c425dd1db124a8741c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8015, "upload_time": "2017-05-02T07:10:32", "url": "https://files.pythonhosted.org/packages/a9/07/55802d9e2304c13b97dd13b0bc829a92190e786a5d0130485ab897e3262f/Sanic-Dispatcher-0.5.2.1.tar.gz" } ], "0.5.4.1": [ { "comment_text": "", "digests": { "md5": "c569ac0d3a51d618635c31698496241f", "sha256": "15e18bf81ae7427b196cf5efa96cfabf397f7f2a7c0148e4b8324768f59ce245" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c569ac0d3a51d618635c31698496241f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10181, "upload_time": "2017-06-16T06:59:03", "url": "https://files.pythonhosted.org/packages/6f/35/c0080e08c52ee4669669aae93cc31664ca40103d91067d02120b37406a76/Sanic_Dispatcher-0.5.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e607a2a8f95c3581311c68d007d48336", "sha256": "3f33d29c0af9677c16b0e4627ee3133815b97df8297b794014d4e56e103ac1c3" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.4.1-py3.5.egg", "has_sig": false, "md5_digest": "e607a2a8f95c3581311c68d007d48336", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13924, "upload_time": "2017-06-16T06:59:07", "url": "https://files.pythonhosted.org/packages/04/9b/0c6e8c23bf0ac843095a764294b481a7e1fe672ca3680551ea685b7d7406/Sanic_Dispatcher-0.5.4.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "49ebc128676885b1243dc205c177b4c5", "sha256": "e38d6eea8ff2e867ebb34652430677afafefcce2084e41fa6a9766b75483af2b" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.4.1.tar.gz", "has_sig": false, "md5_digest": "49ebc128676885b1243dc205c177b4c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8076, "upload_time": "2017-06-16T06:59:05", "url": "https://files.pythonhosted.org/packages/52/c3/74d61351e88d646f3638a0b124f5792bc1bb17c099a8df4ce7ef25c4004a/Sanic-Dispatcher-0.5.4.1.tar.gz" } ], "0.5.4.2": [ { "comment_text": "", "digests": { "md5": "2a60be7a220978f10646d68b51944c99", "sha256": "e68e22bce4a674973dfa253757e1173e0f2ba43b4779ce260d075ce59de55ce9" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.4.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a60be7a220978f10646d68b51944c99", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10274, "upload_time": "2017-06-21T03:42:56", "url": "https://files.pythonhosted.org/packages/a6/00/66bc46d08e1bcc5b4b39d2fa9b5f153b23a4b55647d9198e457b70a063c2/Sanic_Dispatcher-0.5.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b2ba956d6d73b794c50bb0dafd9e62b", "sha256": "d5c8994d564752896d9ebb037bdd1550401ba3cdb59647d56a825dc05e52bfb7" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.4.2-py3.5.egg", "has_sig": false, "md5_digest": "1b2ba956d6d73b794c50bb0dafd9e62b", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 14211, "upload_time": "2017-06-21T03:43:00", "url": "https://files.pythonhosted.org/packages/fa/a6/83dd3fc532dda4100edbd938c4f775be48596695934988fe36a9ed5332dd/Sanic_Dispatcher-0.5.4.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "7a09881e97fb3fb11c3b1bba2aa69ffe", "sha256": "963766673d51f8167492e68d8fd9ff0f97f93c74ff4ce980f568def88318b783" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.4.2.tar.gz", "has_sig": false, "md5_digest": "7a09881e97fb3fb11c3b1bba2aa69ffe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8327, "upload_time": "2017-06-21T03:42:58", "url": "https://files.pythonhosted.org/packages/0e/d9/358c6c425f5589c55d6636f1b42ea79dbeb7d95a0b3103ebe08f4f77ae67/Sanic-Dispatcher-0.5.4.2.tar.gz" } ], "0.5.4.4": [ { "comment_text": "", "digests": { "md5": "e9687d766215894b5b00711f288bf8b8", "sha256": "578ba4daf2990524fbeb1a861f4235f8b3039316c87846479994777301552d5f" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e9687d766215894b5b00711f288bf8b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10645, "upload_time": "2017-06-22T00:34:54", "url": "https://files.pythonhosted.org/packages/68/1c/60eab853543ecd381470923996cf623445bde14e30c318f7d43d7a5b2b0e/Sanic_Dispatcher-0.5.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfe26db4b409f3853143c2397f5f6b81", "sha256": "061233b24915f25b29042c51b4b2016c5077788470cbc0b35827bb769a554633" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.5.4.4-py3.5.egg", "has_sig": false, "md5_digest": "cfe26db4b409f3853143c2397f5f6b81", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 15235, "upload_time": "2017-06-22T00:34:58", "url": "https://files.pythonhosted.org/packages/5d/46/434ebc9a85a942ff5899ff3c14fab683c43ff69bf3340d18551a26fbbeb3/Sanic_Dispatcher-0.5.4.4-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "14e74c58f358936246b70786d147058e", "sha256": "04d544328359dd127846694a3fdbf6d2dc2ab9dfd367fb4bb1056535f67a3159" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.5.4.4.tar.gz", "has_sig": false, "md5_digest": "14e74c58f358936246b70786d147058e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8799, "upload_time": "2017-06-22T00:34:56", "url": "https://files.pythonhosted.org/packages/b4/40/47fdfe4cf32c145e3df0bf95fc6c81c9588de9ce684ab9cb2faf67bfcdbb/Sanic-Dispatcher-0.5.4.4.tar.gz" } ], "0.6.0.0": [ { "comment_text": "", "digests": { "md5": "cdd91b415c5e894df5c18a72d010da11", "sha256": "938e3b0d1f4d6eb81cbe1d48fed6d44158e63f3e66377b5801f125c9e7bc3231" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.6.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cdd91b415c5e894df5c18a72d010da11", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10680, "upload_time": "2017-08-29T04:31:55", "url": "https://files.pythonhosted.org/packages/60/21/1be1ebeb4ca83c712cfbd81795cf4ec3720051ac0916dbaee83226652fde/Sanic_Dispatcher-0.6.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b2b6ad3c27008d4582224d32557283e", "sha256": "a61ba7e5a5a7974a9eab382865f31799a9d7179322feb3c50e5c10cfbe9a2919" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.6.0.0-py3.5.egg", "has_sig": false, "md5_digest": "0b2b6ad3c27008d4582224d32557283e", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 15320, "upload_time": "2017-08-29T04:31:59", "url": "https://files.pythonhosted.org/packages/44/c2/730de7e555f729ae64cc3df93afc588a671b0eceb49f122a8b6bedea67d6/Sanic_Dispatcher-0.6.0.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "c9dfe17badc77c4ca88f76c867e4b127", "sha256": "1f84598593ab5a6a7104414eeb7b1726f0f7e1671af9d5cf12c2c82d3f1e2b6f" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.6.0.0.tar.gz", "has_sig": false, "md5_digest": "c9dfe17badc77c4ca88f76c867e4b127", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8845, "upload_time": "2017-08-29T04:31:57", "url": "https://files.pythonhosted.org/packages/70/4b/16aa526e0cbb0ae1a68965fdb6dc278f8aa5390c5c95f0a467a46882732a/Sanic-Dispatcher-0.6.0.0.tar.gz" } ], "0.7.0.0": [ { "comment_text": "", "digests": { "md5": "204fb6d334911dbbc4e34418bd6460c6", "sha256": "b62ebb1f7ffe9f9fcc9c22fc48292167e0689f21482127fd1bc28f276e9f5b39" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.7.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "204fb6d334911dbbc4e34418bd6460c6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9439, "upload_time": "2019-06-18T00:09:08", "url": "https://files.pythonhosted.org/packages/eb/46/3c1e4e41ad67bcdee22dc170b64aa2c00e7fb93def4ab3a9f27674a20893/Sanic_Dispatcher-0.7.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbb7bacb4c85a85c17b691b5740f8113", "sha256": "5e93ce797f0ed18c9de189adfbd233769d9c959e8d7a17de67e8a3d5758e00b6" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.7.0.0.tar.gz", "has_sig": false, "md5_digest": "dbb7bacb4c85a85c17b691b5740f8113", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9966, "upload_time": "2019-06-18T00:09:09", "url": "https://files.pythonhosted.org/packages/04/38/1835e8fff4e582c78c171cc1bf9fe061dc77a9c67f97a55eddf32f304732/Sanic-Dispatcher-0.7.0.0.tar.gz" } ], "0.7.1.0": [ { "comment_text": "", "digests": { "md5": "004392443c66e53a9a523c63e927bb4f", "sha256": "1db9aa699582c18df6700c4e990d557818614736189c61f702f860856d184f31" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.7.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "004392443c66e53a9a523c63e927bb4f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9623, "upload_time": "2019-06-20T04:59:18", "url": "https://files.pythonhosted.org/packages/7c/b4/9e435253410e7a5b490a5e0ed6cac33cb351c50d6008332095383e9e427a/Sanic_Dispatcher-0.7.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67f62959e9c3a8aa4201c48524832015", "sha256": "079498bfe4251424879be934d6c73acc7b02d67116ff8ee2b49da18b1d1a6d79" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.7.1.0.tar.gz", "has_sig": false, "md5_digest": "67f62959e9c3a8aa4201c48524832015", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10244, "upload_time": "2019-06-20T04:59:20", "url": "https://files.pythonhosted.org/packages/db/9e/63114adb4b7112005458b1fe7795be9011ca56a56ac0f68e8d985eb0c859/Sanic-Dispatcher-0.7.1.0.tar.gz" } ], "0.7.2.0": [ { "comment_text": "", "digests": { "md5": "ef9cb100080c4ef434f0cd1aabed749b", "sha256": "2445d84658e64c6d4880bbb88244f38fc1df01ddf371350adf595fb5769c99cb" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.7.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ef9cb100080c4ef434f0cd1aabed749b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9846, "upload_time": "2019-06-24T23:51:18", "url": "https://files.pythonhosted.org/packages/e4/10/94d6a05bc5af6965d236a4d2159135470c25e5c835f4489e93c97599dc30/Sanic_Dispatcher-0.7.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b89c39c9b029992b92fa659a2aa81a25", "sha256": "abd2ff54254427531bfe4c7b6ba0e1f7284d4a08d1e77129cf5c8d822d884c46" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.7.2.0.tar.gz", "has_sig": false, "md5_digest": "b89c39c9b029992b92fa659a2aa81a25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9698, "upload_time": "2019-06-24T23:51:19", "url": "https://files.pythonhosted.org/packages/b1/d0/685dc8fc1b1bd2e697c75f1c49205476f5fda1d4b7e7c1731a119e28dc4a/Sanic-Dispatcher-0.7.2.0.tar.gz" } ], "0.7.3.0": [ { "comment_text": "", "digests": { "md5": "8296d3aa4ff25a555d4abcc8087d445f", "sha256": "3f37dad9c6175b74e82fb58d68452217ef4ca1680bc33824a5327aa7987d58d9" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.7.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8296d3aa4ff25a555d4abcc8087d445f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9867, "upload_time": "2019-08-27T02:28:59", "url": "https://files.pythonhosted.org/packages/c0/85/ef1684141ef20a9cd4ae27179fbda3488f23ec6eaed905dae1f2e2d214be/Sanic_Dispatcher-0.7.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63e8ea8fb08b0493c3150f209d182762", "sha256": "25470c1f3fbf8ff3356675b449046ffe8c016bb0eb353664c252bb871ad98265" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.7.3.0.tar.gz", "has_sig": false, "md5_digest": "63e8ea8fb08b0493c3150f209d182762", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8826, "upload_time": "2019-08-27T02:29:00", "url": "https://files.pythonhosted.org/packages/a2/01/e0492fbed309d85476476a5f59c65dafd1320a687972217f2695bf2aa319/Sanic-Dispatcher-0.7.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8296d3aa4ff25a555d4abcc8087d445f", "sha256": "3f37dad9c6175b74e82fb58d68452217ef4ca1680bc33824a5327aa7987d58d9" }, "downloads": -1, "filename": "Sanic_Dispatcher-0.7.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8296d3aa4ff25a555d4abcc8087d445f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9867, "upload_time": "2019-08-27T02:28:59", "url": "https://files.pythonhosted.org/packages/c0/85/ef1684141ef20a9cd4ae27179fbda3488f23ec6eaed905dae1f2e2d214be/Sanic_Dispatcher-0.7.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63e8ea8fb08b0493c3150f209d182762", "sha256": "25470c1f3fbf8ff3356675b449046ffe8c016bb0eb353664c252bb871ad98265" }, "downloads": -1, "filename": "Sanic-Dispatcher-0.7.3.0.tar.gz", "has_sig": false, "md5_digest": "63e8ea8fb08b0493c3150f209d182762", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8826, "upload_time": "2019-08-27T02:29:00", "url": "https://files.pythonhosted.org/packages/a2/01/e0492fbed309d85476476a5f59c65dafd1320a687972217f2695bf2aa319/Sanic-Dispatcher-0.7.3.0.tar.gz" } ] }