{ "info": { "author": "Dan Pozmanter", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Application Frameworks" ], "description": "Jawaf\n=====\n\n|Build Status| |Documentation| |PyPI| |PyPI Version|\n\n**Jawaf asynchronous web application framework**\n\nWhat if there was a web framework like `Django`_ that was:\n\n- Asynchronous & Non Blocking\n- Blazing Fast\n- Built on SQLAlchemy Core\n\nThat\u2019s the motivation behind Jawaf.\n\n`Sanic`_ is a blazing fast Python 3.5+ async, non-blocking framework.\nJawaf wraps it with Django like functionality. It features built in\nsessions, async database connectivity through SQLAlchemy Core (with data\nmigrations handled by Alembic), and built in unit testing using py.test.\nJawaf also provides management commands, project/app scaffolding, built\nin CSRF protection, user auth, and an optional RESTful admin API. It\u2019s\nevent extensible using simply structured python packages as apps.\n\nRead the `documentation`_ to get started.\n\n**Built On**\n\n`Python 3`_ (Version 3.6+ Required)\n\n`Sanic`_\n\n`Alembic`_\n\n`asyncpg`_\n\n`ascynpgsa`_\n\n`SQLAlchemy Core`_\n\n`sanic\\_session`_\n\n`py.test`_\n\n**Features**\n\n- Built on an async stack (Sanic) to run fast and scale.\n- SQLAlchemy Core integration\n- Database migrations\n- Sessions\n- Validators\n- Unit testing\n- Management commands\n- Project/app scaffolding\n- Extensible using structured python packages as apps\n- CSRF protection baked in\n- Send email asynchronously\n- Optional User Authentication, Groups & Permissions built in\n- Optional Admin API\n\n**Notes**\n\nMany of the software requirements are in beta, alpha, or even pre-alpha\nstatus. You\u2019d be well advised to have a long hard think about using this\nin production.\n\nGiven the early status of this project it is subject to potential\nbackwards-incompatible changes.\n\nJawaf is provided \u201cat your own risk\u201d.\n\n.. _Django: https://www.djangoproject.com/\n.. _Sanic: https://github.com/channelcat/sanic\n.. _documentation: http://jawaf.readthedocs.io\n.. _Python 3: https://www.python.org/\n.. _Alembic: http://alembic.zzzcomputing.com/en/latest/\n.. _asyncpg: https://github.com/MagicStack/asyncpg\n.. _ascynpgsa: https://github.com/CanopyTax/asyncpgsa\n.. _SQLAlchemy Core: http://docs.sqlalchemy.org/en/latest/core/\n.. _Redis: https://redis.io/\n.. _sanic\\_session: https://github.com/subyraman/sanic_session\n.. _py.test: http://doc.pytest.org/en/latest/\n\n.. |Build Status| image:: https://travis-ci.org/danpozmanter/jawaf.svg?branch=master\n :target: https://travis-ci.org/danpozmanter/jawaf\n.. |Documentation| image:: https://readthedocs.org/projects/jawaf/badge/?version=latest\n :target: http://jawaf.readthedocs.io/en/latest/?badge=latest\n.. |PyPI| image:: https://img.shields.io/pypi/v/jawaf.svg\n :target: https://pypi.python.org/pypi/jawaf/\n.. |PyPI Version| image:: https://img.shields.io/pypi/pyversions/jawaf.svg\n :target: https://pypi.python.org/pypi/jawaf/\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/danpozmanter/jawaf", "keywords": "web framework", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "Jawaf", "package_url": "https://pypi.org/project/Jawaf/", "platform": "", "project_url": "https://pypi.org/project/Jawaf/", "project_urls": { "Homepage": "https://github.com/danpozmanter/jawaf" }, "release_url": "https://pypi.org/project/Jawaf/0.4.0/", "requires_dist": null, "requires_python": "", "summary": "Asynchronous Web Application Framework", "version": "0.4.0" }, "last_serial": 4619435, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "833d67eb86eff1ce99336cad95ab8a10", "sha256": "d94d9f6f15c511f68ccb9cc3dac851183ba688c31bc3d643cf739b68e9cb9c27" }, "downloads": -1, "filename": "Jawaf-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "833d67eb86eff1ce99336cad95ab8a10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37372, "upload_time": "2017-04-24T02:46:08", "url": "https://files.pythonhosted.org/packages/2f/2b/6bb6db0ebb3b539a52a6708c3d5e66fcd47231f103c7686249fbd8fdad02/Jawaf-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2a75985fcdaf72884c1afb410d14ad6e", "sha256": "b04100d7e0bfdc9e194261244a61c72d9911beaa5ac8e24c5b15a8c43f11846b" }, "downloads": -1, "filename": "Jawaf-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2a75985fcdaf72884c1afb410d14ad6e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 37729, "upload_time": "2017-04-28T12:32:49", "url": "https://files.pythonhosted.org/packages/58/72/fbc76f5b21bc439804391c0fc8ca04b0202f4de96232c215e10e1586d0e0/Jawaf-0.1.1-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1adc634941b68bdf51656e1b5e57cc93", "sha256": "c02861439b82ef4d82b1685d5381530b09d659bb6b12c4f393e14b9792bbcfcf" }, "downloads": -1, "filename": "Jawaf-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "1adc634941b68bdf51656e1b5e57cc93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 38719, "upload_time": "2017-04-29T23:47:10", "url": "https://files.pythonhosted.org/packages/db/ad/7af61a7112e94a808920354a0749ab88723b65a2e64af582ec1a0a6b6925/Jawaf-0.1.2-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e68fc3adaf0485e80b2f4e1edbde7cf5", "sha256": "182a09f3ccd1897ba56f7b0ac4b00d9838b174d8a1f746364e320a11fc8834b1" }, "downloads": -1, "filename": "Jawaf-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e68fc3adaf0485e80b2f4e1edbde7cf5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39252, "upload_time": "2017-05-03T05:49:46", "url": "https://files.pythonhosted.org/packages/f9/1d/fcab4d00bb7a7359eed0f35addbd4ac6d163bb78d80660319a2c1455c254/Jawaf-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c1e55c0ac236624ad689414ff651aacb", "sha256": "9279887c313bfe25556b68c0338982dbe3221742f1f59536a64912778c19177a" }, "downloads": -1, "filename": "Jawaf-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c1e55c0ac236624ad689414ff651aacb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39259, "upload_time": "2017-05-03T06:44:29", "url": "https://files.pythonhosted.org/packages/35/90/1bfcf845a1bc0194b6339089c0a5ac50a27e62e9ed6b522a05c9e83eeac7/Jawaf-0.2.1-py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "37d195296e3e399a02b8f59e511d69db", "sha256": "09e8b2eaab8aad807f863288233299165b6e10ee59f32e74e4768751016f2fb0" }, "downloads": -1, "filename": "Jawaf-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "37d195296e3e399a02b8f59e511d69db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39241, "upload_time": "2017-05-03T22:51:46", "url": "https://files.pythonhosted.org/packages/2b/21/1cbd7072965615e88c0b6248d776ef06549d9a6a9aa9d53d430305d2dca0/Jawaf-0.2.2-py3-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "f847978572838a7f3be522c3e1427dd2", "sha256": "a45f93bc10bb368da8ebd02127d9395f777a50c3b086fc13ff36d62520cee14a" }, "downloads": -1, "filename": "Jawaf-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f847978572838a7f3be522c3e1427dd2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39224, "upload_time": "2017-05-04T04:21:24", "url": "https://files.pythonhosted.org/packages/75/08/71b1267553c2667c686b795803ef86532a612eabea16296d9f89287b107d/Jawaf-0.2.3-py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "045c9b8b15cea9c89adee99eee366b89", "sha256": "62edf3425ca4f0e504b60fc39bf2f1084746ed57b6f2313c6ed167760c2b510d" }, "downloads": -1, "filename": "Jawaf-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "045c9b8b15cea9c89adee99eee366b89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48507, "upload_time": "2017-05-07T19:11:19", "url": "https://files.pythonhosted.org/packages/cd/f1/82c5e5d9798511f22f81b960ae83b440a5290e6fc6aacd069d757043907a/Jawaf-0.3.0-py3-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9f10b455f30ccd396a33610018b3d37e", "sha256": "8fe90c4bcc591831eefad58d653e3b2d5d2545276fc5cce341c7e9009d715572" }, "downloads": -1, "filename": "Jawaf-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9f10b455f30ccd396a33610018b3d37e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50927, "upload_time": "2017-05-09T22:45:25", "url": "https://files.pythonhosted.org/packages/31/e0/3b4a520b78418e7dc0564a88602be14135fa41048d4c3cd04e79a09f3790/Jawaf-0.3.1-py3-none-any.whl" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "a4826829087e1c1707eb344737a15850", "sha256": "2cff2e50f43b4fafcf2ec9f95d420964414db710ad8925cb80fe87c7692a4830" }, "downloads": -1, "filename": "Jawaf-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a4826829087e1c1707eb344737a15850", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51081, "upload_time": "2017-05-09T23:12:42", "url": "https://files.pythonhosted.org/packages/fa/c2/5e8d0b0dda23354a91182be923808af54f3f921c467d11a183a34f2756a8/Jawaf-0.3.2-py3-none-any.whl" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "c1ae455449ee8f99bc7703fbbc33a78a", "sha256": "61c4281472a1e4b45b7b0abf378b83bc9105d1b98f95547c17f106bac2c2c3c1" }, "downloads": -1, "filename": "Jawaf-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c1ae455449ee8f99bc7703fbbc33a78a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40636, "upload_time": "2017-05-19T06:55:45", "url": "https://files.pythonhosted.org/packages/16/cd/9f8b739d5a04e3290057f0838936f9c0badee979182689fcb3876786346e/Jawaf-0.3.3-py3-none-any.whl" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "a4b2291719ecb163d2f8ec0f7258186b", "sha256": "6859a6847ecf7374f25cb1658c863b3f57cc79547c05279ac06c3c5f1d99f926" }, "downloads": -1, "filename": "Jawaf-0.3.5.tar.gz", "has_sig": false, "md5_digest": "a4b2291719ecb163d2f8ec0f7258186b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25420, "upload_time": "2017-08-17T05:37:19", "url": "https://files.pythonhosted.org/packages/a7/e4/55cc07270864a5c1f88cbd4fd4e53bc184764cc89bfc3fe8a3792163ff6c/Jawaf-0.3.5.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "d12056aaa4187272b33a4e7c5a2fdd84", "sha256": "3eacda49d8cfe1c7a1762d14974dc117cb4ec97f94c21103876aaf7b65df6136" }, "downloads": -1, "filename": "Jawaf-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d12056aaa4187272b33a4e7c5a2fdd84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50133, "upload_time": "2018-12-20T05:24:34", "url": "https://files.pythonhosted.org/packages/b3/88/ac06f4593331f6c89396f8994182c35ddcd18a717a46655c104a08bb4187/Jawaf-0.4.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d12056aaa4187272b33a4e7c5a2fdd84", "sha256": "3eacda49d8cfe1c7a1762d14974dc117cb4ec97f94c21103876aaf7b65df6136" }, "downloads": -1, "filename": "Jawaf-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d12056aaa4187272b33a4e7c5a2fdd84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50133, "upload_time": "2018-12-20T05:24:34", "url": "https://files.pythonhosted.org/packages/b3/88/ac06f4593331f6c89396f8994182c35ddcd18a717a46655c104a08bb4187/Jawaf-0.4.0-py3-none-any.whl" } ] }