Metadata-Version: 2.1
Name: sanic
Version: 19.3.1
Summary: A microframework based on uvloop, httptools, and learnings of flask
Home-page: http://github.com/channelcat/sanic/
Author: Channel Cat
Author-email: channelcat@gmail.com
License: MIT
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Requires-Dist: httptools (>=0.0.10)
Requires-Dist: aiofiles (>=0.3.0)
Requires-Dist: websockets (<7.0,>=6.0)
Requires-Dist: multidict (<5.0,>=4.0)
Requires-Dist: uvloop (>=0.5.3) ; sys_platform != "win32" and implementation_name == "cpython"
Requires-Dist: ujson (>=1.35) ; sys_platform != "win32" and implementation_name == "cpython"
Provides-Extra: dev
Requires-Dist: pytest (==4.1.0) ; extra == 'dev'
Requires-Dist: multidict (<5.0,>=4.0) ; extra == 'dev'
Requires-Dist: gunicorn ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: aiohttp (<=3.2.1,>=2.3.0) ; extra == 'dev'
Requires-Dist: beautifulsoup4 ; extra == 'dev'
Requires-Dist: pytest-sanic ; extra == 'dev'
Requires-Dist: pytest-sugar ; extra == 'dev'
Requires-Dist: aiofiles ; extra == 'dev'
Requires-Dist: tox ; extra == 'dev'
Requires-Dist: black ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: uvloop (>=0.5.3) ; (sys_platform != "win32" and implementation_name == "cpython") and extra == 'dev'
Requires-Dist: ujson (>=1.35) ; (sys_platform != "win32" and implementation_name == "cpython") and extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: recommonmark ; extra == 'docs'
Requires-Dist: sphinxcontrib-asyncio ; extra == 'docs'
Requires-Dist: docutils ; extra == 'docs'
Requires-Dist: pygments ; extra == 'docs'
Provides-Extra: test
Requires-Dist: pytest (==4.1.0) ; extra == 'test'
Requires-Dist: multidict (<5.0,>=4.0) ; extra == 'test'
Requires-Dist: gunicorn ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'
Requires-Dist: aiohttp (<=3.2.1,>=2.3.0) ; extra == 'test'
Requires-Dist: beautifulsoup4 ; extra == 'test'
Requires-Dist: pytest-sanic ; extra == 'test'
Requires-Dist: pytest-sugar ; extra == 'test'
Requires-Dist: uvloop (>=0.5.3) ; (sys_platform != "win32" and implementation_name == "cpython") and extra == 'test'
Requires-Dist: ujson (>=1.35) ; (sys_platform != "win32" and implementation_name == "cpython") and extra == 'test'

.. image:: https://raw.githubusercontent.com/huge-success/sanic-assets/master/png/sanic-framework-logo-400x97.png
    :alt: Sanic | Build fast. Run fast.

Sanic | Build fast. Run fast.
=============================

.. start-badges

.. list-table::
    :stub-columns: 1

    * - Build
      - | |Build Status| |AppVeyor Build Status| |Codecov|
    * - Docs
      - |Documentation|
    * - Package
      - | |PyPI| |PyPI version| |Wheel| |Supported implementations| |Code style black|
    * - Support
      - | |Forums| |Join the chat at https://gitter.im/sanic-python/Lobby|

.. |Forums| image:: https://img.shields.io/badge/forums-community-ff0068.svg
   :target: https://community.sanicframework.org/
.. |Join the chat at https://gitter.im/sanic-python/Lobby| image:: https://badges.gitter.im/sanic-python/Lobby.svg
   :target: https://gitter.im/sanic-python/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
.. |Codecov| image:: https://codecov.io/gh/huge-success/sanic/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/huge-success/sanic
.. |Build Status| image:: https://travis-ci.org/huge-success/sanic.svg?branch=master
   :target: https://travis-ci.org/huge-success/sanic
.. |AppVeyor Build Status| image:: https://ci.appveyor.com/api/projects/status/d8pt3ids0ynexi8c/branch/master?svg=true
   :target: https://ci.appveyor.com/project/huge-success/sanic
.. |Documentation| image:: https://readthedocs.org/projects/sanic/badge/?version=latest
   :target: http://sanic.readthedocs.io/en/latest/?badge=latest
.. |PyPI| image:: https://img.shields.io/pypi/v/sanic.svg
   :target: https://pypi.python.org/pypi/sanic/
.. |PyPI version| image:: https://img.shields.io/pypi/pyversions/sanic.svg
   :target: https://pypi.python.org/pypi/sanic/
.. |Code style black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/ambv/black
.. |Wheel| image:: https://img.shields.io/pypi/wheel/sanic.svg
    :alt: PyPI Wheel
    :target: https://pypi.python.org/pypi/sanic
.. |Supported implementations| image:: https://img.shields.io/pypi/implementation/sanic.svg
    :alt: Supported implementations
    :target: https://pypi.python.org/pypi/sanic

.. end-badges

Sanic is a Python web server and web framework that's written to go fast. It allows the usage of the ``async/await`` syntax added in Python 3.5, which makes your code non-blocking and speedy.

`Source code on GitHub <https://github.com/huge-success/sanic/>`_ | `Help and discussion board <https://community.sanicframework.org/>`_. 

The project is maintained by the community, for the community **Contributions are welcome!**

The goal of the project is to provide a simple way to get up and running a highly performant HTTP server that is easy to build, to expand, and ultimately to scale.

Installation
------------

``pip3 install sanic``

    Sanic makes use of ``uvloop`` and ``ujson`` to help with performance. If you do not want to use those packages, simply add an environmental variable ``SANIC_NO_UVLOOP=true`` or ``SANIC_NO_UJSON=true`` at install time.

    .. code:: shell

       $ export SANIC_NO_UVLOOP=true
       $ export SANIC_NO_UJSON=true 
       $ pip3 install sanic


Hello World Example
-------------------

.. code:: python

    from sanic import Sanic
    from sanic.response import json

    app = Sanic()

    @app.route('/')
    async def test(request):
        return json({'hello': 'world'})

    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8000)

Sanic can now be easily run using ``python3 hello.py``.

.. code::

    [2018-12-30 11:37:41 +0200] [13564] [INFO] Goin' Fast @ http://0.0.0.0:8000
    [2018-12-30 11:37:41 +0200] [13564] [INFO] Starting worker [13564]

And, we can verify it is working: ``curl localhost:8000 -i``

.. code::

    HTTP/1.1 200 OK
    Connection: keep-alive
    Keep-Alive: 5
    Content-Length: 17
    Content-Type: application/json

    {"hello":"world"}

**Now, let's go build something fast!**


Documentation
-------------

`Documentation on Readthedocs <http://sanic.readthedocs.io/>`_.

Changelog
---------

`Release Changelogs <https://github.com/huge-success/sanic/blob/master/CHANGELOG.md>`_.


Questions and Discussion
------------------------

`Ask a question or join the conversation <https://community.sanicframework.org/>`_.

Contribution
------------

We are always happy to have new contributions. We have `marked issues good for anyone looking to get started <https://github.com/huge-success/sanic/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner>`_, and welcome `questions on the forums <https://community.sanicframework.org/>`_. Please take a look at our `Contribution guidelines <https://github.com/huge-success/sanic/blob/master/CONTRIBUTING.md>`_.


