Metadata-Version: 1.2
Name: aiohttp
Version: 3.1.2
Summary: Async http client/server framework (asyncio)
Home-page: https://github.com/aio-libs/aiohttp/
Author: Nikolay Kim
Author-email: fafhrd91@gmail.com
Maintainer: Nikolay Kim <fafhrd91@gmail.com>, Andrew Svetlov <andrew.svetlov@gmail.com>
Maintainer-email: aio-libs@googlegroups.com
License: Apache 2
Description: ==================================
        Async http client/server framework
        ==================================
        
        .. image:: https://raw.githubusercontent.com/aio-libs/aiohttp/master/docs/_static/aiohttp-icon-128x128.png
           :height: 64px
           :width: 64px
           :alt: aiohttp logo
        
        .. image:: https://travis-ci.org/aio-libs/aiohttp.svg?branch=master
           :target:  https://travis-ci.org/aio-libs/aiohttp
           :align: right
           :alt: Travis status for master branch
        
        .. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
           :target: https://codecov.io/gh/aio-libs/aiohttp
           :alt: codecov.io status for master branch
        
        .. image:: https://badge.fury.io/py/aiohttp.svg
           :target: https://badge.fury.io/py/aiohttp
           :alt: Latest PyPI package version
        
        .. image:: https://readthedocs.org/projects/aiohttp/badge/?version=latest
           :target: http://docs.aiohttp.org/
           :alt: Latest Read The Docs
        
        .. image:: https://badges.gitter.im/Join%20Chat.svg
            :target: https://gitter.im/aio-libs/Lobby
            :alt: Chat on Gitter
        
        Key Features
        ============
        
        - Supports both client and server side of HTTP protocol.
        - Supports both client and server Web-Sockets out-of-the-box without the
          Callback Hell.
        - Web-server has middlewares and pluggable routing.
        
        
        Getting started
        ===============
        
        Client
        ------
        
        To retrieve something from the web:
        
        .. code-block:: python
        
          import aiohttp
          import asyncio
          import async_timeout
        
          async def fetch(session, url):
              async with async_timeout.timeout(10):
                  async with session.get(url) as response:
                      return await response.text()
        
          async def main():
              async with aiohttp.ClientSession() as session:
                  html = await fetch(session, 'http://python.org')
                  print(html)
        
          if __name__ == '__main__':
              loop = asyncio.get_event_loop()
              loop.run_until_complete(main())
        
        
        Server
        ------
        
        This is simple usage example:
        
        .. code-block:: python
        
            from aiohttp import web
        
            async def handle(request):
                name = request.match_info.get('name', "Anonymous")
                text = "Hello, " + name
                return web.Response(text=text)
        
            async def wshandle(request):
                ws = web.WebSocketResponse()
                await ws.prepare(request)
        
                async for msg in ws:
                    if msg.type == web.MsgType.text:
                        await ws.send_str("Hello, {}".format(msg.data))
                    elif msg.type == web.MsgType.binary:
                        await ws.send_bytes(msg.data)
                    elif msg.type == web.MsgType.close:
                        break
        
                return ws
        
        
            app = web.Application()
            app.add_routes([web.get('/', handle),
                            web.get('/echo', wshandle),
                            web.get('/{name}', handle)])
        
            web.run_app(app)
        
        
        Documentation
        =============
        
        https://aiohttp.readthedocs.io/
        
        External links
        ==============
        
        * `Third party libraries
          <http://aiohttp.readthedocs.io/en/latest/third_party.html>`_
        * `Built with aiohttp
          <http://aiohttp.readthedocs.io/en/latest/built_with.html>`_
        * `Powered by aiohttp
          <http://aiohttp.readthedocs.io/en/latest/powered_by.html>`_
        
        Feel free to make a Pull Request for adding your link to these pages!
        
        
        Communication channels
        ======================
        
        *aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
        
        Feel free to post your questions and ideas here.
        
        *gitter chat* https://gitter.im/aio-libs/Lobby
        
        We support `Stack Overflow
        <https://stackoverflow.com/questions/tagged/aiohttp>`_.
        Please add *aiohttp* tag to your question there.
        
        Requirements
        ============
        
        - Python >= 3.5.3
        - async-timeout_
        - attrs_
        - chardet_
        - multidict_
        - yarl_
        
        Optionally you may install the cChardet_ and aiodns_ libraries (highly
        recommended for sake of speed).
        
        .. _chardet: https://pypi.python.org/pypi/chardet
        .. _aiodns: https://pypi.python.org/pypi/aiodns
        .. _attrs: https://github.com/python-attrs/attrs
        .. _multidict: https://pypi.python.org/pypi/multidict
        .. _yarl: https://pypi.python.org/pypi/yarl
        .. _async-timeout: https://pypi.python.org/pypi/async_timeout
        .. _cChardet: https://pypi.python.org/pypi/cchardet
        
        License
        =======
        
        ``aiohttp`` is offered under the Apache 2 license.
        
        
        Keepsafe
        ========
        
        The aiohttp community would like to thank Keepsafe
        (https://www.getkeepsafe.com) for it's support in the early days of
        the project.
        
        
        Source code
        ===========
        
        The latest developer version is available in a github repository:
        https://github.com/aio-libs/aiohttp
        
        Benchmarks
        ==========
        
        If you are interested in by efficiency, AsyncIO community maintains a
        list of benchmarks on the official wiki:
        https://github.com/python/asyncio/wiki/Benchmarks
        
        =========
        Changelog
        =========
        
        ..
            You should *NOT* be adding new change log entries to this file, this
            file is managed by towncrier. You *may* edit previous change logs to
            fix problems like typo corrections or such.
            To add a new change log entry, please see
            https://pip.pypa.io/en/latest/development/#adding-a-news-entry
            we named the news folder "changes".
        
            WARNING: Don't drop the next directive!
        
        .. towncrier release notes start
        
        3.1.2 (2018-04-05)
        ==================
        
        - Make ``LineTooLong`` exception more detailed about actual data size (#2863)
        - Call ``on_chunk_sent`` when write_eof takes as a param the last chunk (#2909)
        
        
        3.1.1 (2018-03-27)
        ==================
        
        - Support *asynchronous iterators* (and *asynchronous generators* as
          well) in both client and server API as request / response BODY
          payloads. (#2802)
        
        
        3.1.0 (2018-03-21)
        ==================
        
        Welcome to aiohttp 3.1 release.
        
        This is an *incremental* release, fully backward compatible with *aiohttp 3.0*.
        
        But we have added several new features.
        
        The most visible one is ``app.add_routes()`` (an alias for existing
        ``app.router.add_routes()``. The addition is very important because
        all *aiohttp* docs now uses ``app.add_routes()`` call in code
        snippets. All your existing code still do register routes / resource
        without any warning but you've got the idea for a favorite way: noisy
        ``app.router.add_get()`` is replaced by ``app.add_routes()``.
        
        The library does not make a preference between decorators::
        
           routes = web.RouteTableDef()
        
           @routes.get('/')
           async def hello(request):
               return web.Response(text="Hello, world")
        
           app.add_routes(routes)
        
        and route tables as a list::
        
           async def hello(request):
               return web.Response(text="Hello, world")
        
           app.add_routes([web.get('/', hello)])
        
        Both ways are equal, user may decide basing on own code taste.
        
        Also we have a lot of minor features, bug fixes and documentation
        updates, see below.
        
        Features
        --------
        
        - Relax JSON content-type checking in the ``ClientResponse.json()`` to allow
          "application/xxx+json" instead of strict "application/json". (#2206)
        - Bump C HTTP parser to version 2.8 (#2730)
        - Accept a coroutine as an application factory in ``web.run_app`` and gunicorn
          worker. (#2739)
        - Implement application cleanup context (``app.cleanup_ctx`` property). (#2747)
        - Make ``writer.write_headers`` a coroutine. (#2762)
        - Add tracking signals for getting request/response bodies. (#2767)
        - Deprecate ClientResponseError.code in favor of .status to keep similarity
          with response classes. (#2781)
        - Implement ``app.add_routes()`` method. (#2787)
        - Implement ``web.static()`` and ``RouteTableDef.static()`` API. (#2795)
        - Install a test event loop as default by ``asyncio.set_event_loop()``. The
          change affects aiohttp test utils but backward compatibility is not broken
          for 99.99% of use cases. (#2804)
        - Refactor ``ClientResponse`` constructor: make logically required constructor
          arguments mandatory, drop ``_post_init()`` method. (#2820)
        - Use ``app.add_routes()`` in server docs everywhere (#2830)
        - Websockets refactoring, all websocket writer methods are converted into
          coroutines. (#2836)
        - Provide ``Content-Range`` header for ``Range`` requests (#2844)
        
        
        Bugfixes
        --------
        
        - Fix websocket client return EofStream. (#2784)
        - Fix websocket demo. (#2789)
        - Property ``BaseRequest.http_range`` now returns a python-like slice when
          requesting the tail of the range. It's now indicated by a negative value in
          ``range.start`` rather then in ``range.stop`` (#2805)
        - Close a connection if an unexpected exception occurs while sending a request
          (#2827)
        - Fix firing DNS tracing events. (#2841)
        
        
        Improved Documentation
        ----------------------
        
        - Change ``ClientResponse.json()`` documentation to reflect that it now
          allows "application/xxx+json" content-types (#2206)
        - Document behavior when cchardet detects encodings that are unknown to Python.
          (#2732)
        - Add diagrams for tracing request life style. (#2748)
        - Drop removed functionality for passing ``StreamReader`` as data at client
          side. (#2793)
Platform: UNKNOWN
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Framework :: AsyncIO
Requires-Python: >=3.5.3
