Metadata-Version: 2.1 Name: Quart Version: 0.9.1 Summary: A Python ASGI web microframework with the same API as Flask Home-page: https://gitlab.com/pgjones/quart/ Author: P G Jones Author-email: philip.graham.jones@googlemail.com License: MIT Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.7 Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content Classifier: Topic :: Software Development :: Libraries :: Python Modules Requires-Python: >=3.7.0 Requires-Dist: aiofiles Requires-Dist: blinker Requires-Dist: click Requires-Dist: hypercorn (>=0.6.0) Requires-Dist: itsdangerous Requires-Dist: jinja2 Requires-Dist: multidict Requires-Dist: sortedcontainers Provides-Extra: dotenv Requires-Dist: python-dotenv ; extra == 'dotenv' Quart ===== .. image:: https://assets.gitlab-static.net/pgjones/quart/raw/master/artwork/logo.png :alt: Quart logo |Build Status| |docs| |pypi| |http| |python| |license| |chat| Quart is a Python `ASGI `_ web microframework. It is intended to provide the easiest way to use asyncio functionality in a web context, especially with existing Flask apps. This is possible as the Quart API is a superset of the `Flask `_ API. Quart aims to be a complete web microframework, as it supports HTTP/1.1, HTTP/2 and websockets. Quart is very extendable and has a number of known `extensions `_ and works with many of the `Flask extensions `_. Quickstart ---------- Quart can be installed via `pipenv `_ or `pip `_, .. code-block:: console $ pipenv install quart $ pip install quart and requires Python 3.7.0 or higher (see `python version support `_ for reasoning). A minimal Quart example is, .. code-block:: python from quart import Quart, websocket app = Quart(__name__) @app.route('/') async def hello(): return 'hello' @app.websocket('/ws') async def ws(): while True: await websocket.send('hello') app.run() if the above is in a file called ``app.py`` it can be run as, .. code-block:: console $ python app.py To deploy in a production setting see the `deployment `_ documentation. Features -------- Quart supports the full ASGI 3.0 specification as well as the websocket response and HTTP/2 server push extensions. For those of you familiar with Flask, Quart extends the Flask-API by adding support for, - HTTP/1.1 request streaming. - Websockets. - HTTP/2 server push. Note that not all ASGI servers support these features, for this reason the recommended server is `Hypercorn `_. Contributing ------------ Quart is developed on `GitLab `_. If you come across an issue, or have a feature request please open an `issue `_. If you want to contribute a fix or the feature-implementation please do (typo fixes welcome), by proposing a `merge request `_. Testing ~~~~~~~ The best way to test Quart is with `Tox `_, .. code-block:: console $ pipenv install tox $ tox this will check the code style and run the tests. Help ---- The Quart `documentation `_ is the best place to start, after that try searching `stack overflow `_, if you still can't find an answer please `open an issue `_. API Compatibility with Flask ---------------------------- The Flask API can be described as consisting of the Flask public and private APIs and Werkzeug upon which Flask is based. Quart is designed to be fully compatible with the Flask public API (aside from async and await keywords). Thereafter the aim is to be mostly compatible with the Flask private API and to provide no guarantees about the Werkzeug API. Migrating from Flask ~~~~~~~~~~~~~~~~~~~~ It should be possible to migrate to Quart from Flask by a find and replace of ``flask`` to ``quart`` and then adding ``async`` and ``await`` keywords. See the `docs `_ for full details. .. |Build Status| image:: https://gitlab.com/pgjones/quart/badges/master/build.svg :target: https://gitlab.com/pgjones/quart/commits/master .. |docs| image:: https://img.shields.io/badge/docs-passing-brightgreen.svg :target: https://pgjones.gitlab.io/quart/ .. |pypi| image:: https://img.shields.io/pypi/v/quart.svg :target: https://pypi.python.org/pypi/Quart/ .. |http| image:: https://img.shields.io/badge/http-1.0,1.1,2-orange.svg :target: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol .. |python| image:: https://img.shields.io/pypi/pyversions/quart.svg :target: https://pypi.python.org/pypi/Quart/ .. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg :target: https://gitlab.com/pgjones/quart/blob/master/LICENSE .. |chat| image:: https://img.shields.io/badge/chat-join_now-brightgreen.svg :target: https://gitter.im/python-quart/lobby