Metadata-Version: 1.1
Name: aiohttp
Version: 1.0.3
Summary: http client/server for asyncio
Home-page: https://github.com/KeepSafe/aiohttp/
Author: Andrew Svetlov
Author-email: andrew.svetlov@gmail.com
License: Apache 2
Description: http client/server for asyncio
        ==============================
        
        .. image:: https://raw.github.com/KeepSafe/aiohttp/master/docs/_static/aiohttp-icon-128x128.png
          :height: 64px
          :width: 64px
          :alt: aiohttp logo
        
        .. image:: https://travis-ci.org/KeepSafe/aiohttp.svg?branch=master
          :target:  https://travis-ci.org/KeepSafe/aiohttp
          :align: right
        
        .. image:: https://codecov.io/gh/KeepSafe/aiohttp/branch/master/graph/badge.svg
          :target: https://codecov.io/gh/KeepSafe/aiohttp
        
        .. image:: https://badge.fury.io/py/aiohttp.svg
            :target: https://badge.fury.io/py/aiohttp
        
        Features
        --------
        
        - Supports both client and server side of HTTP protocol.
        - Supports both client and server Web-Sockets out-of-the-box.
        - Web-server has middlewares and pluggable routing.
        
        
        Getting started
        ---------------
        
        Client
        ^^^^^^
        
        To retrieve something from the web:
        
        .. code-block:: python
        
          import aiohttp
          import asyncio
        
          async def fetch(session, url):
              with aiohttp.Timeout(10, loop=session.loop):
                  async with session.get(url) as response:
                      return await response.text()
        
          async def main(loop):
              async with aiohttp.ClientSession(loop=loop) as session:
                  html = await fetch(session, 'http://python.org')
                  print(html)
        
          if __name__ == '__main__':
              loop = asyncio.get_event_loop()
              loop.run_until_complete(main(loop))
        
        
        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 wshandler(request):
                ws = web.WebSocketResponse()
                await ws.prepare(request)
        
                async for msg in ws:
                    if msg.type == web.MsgType.text:
                        ws.send_str("Hello, {}".format(msg.data))
                    elif msg.type == web.MsgType.binary:
                        ws.send_bytes(msg.data)
                    elif msg.type == web.MsgType.close:
                        break
        
                return ws
        
        
            app = web.Application()
            app.router.add_get('/echo', wshandler)
            app.router.add_get('/', handle)
            app.router.add_get('/{name}', handle)
        
            web.run_app(app)
        
        
        Note: examples are written for Python 3.5+ and utilize PEP-492 aka
        async/await.  If you are using Python 3.4 please replace ``await`` with
        ``yield from`` and ``async def`` with ``@coroutine`` e.g.::
        
            async def coro(...):
                ret = await f()
        
        should be replaced by::
        
            @asyncio.coroutine
            def coro(...):
                ret = yield from f()
        
        Documentation
        -------------
        
        https://aiohttp.readthedocs.io/
        
        Discussion list
        ---------------
        
        *aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
        
        Requirements
        ------------
        
        - Python >= 3.4.2
        - chardet_
        - multidict_
        
        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
        .. _multidict: https://pypi.python.org/pypi/multidict
        .. _cChardet: https://pypi.python.org/pypi/cchardet
        
        License
        -------
        
        ``aiohttp`` is offered under the Apache 2 license.
        
        
        Source code
        ------------
        
        The latest developer version is available in a github repository:
        https://github.com/KeepSafe/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
        
        CHANGES
        =======
        
        1.0.3 (2016-09-22)
        ------------------
        
        - Fix FlowControlStreamReader.read_nowait so that it checks
          whether the transport is paused #1206
        
        
        1.0.2 (2016-09-22)
        ------------------
        
        - Make CookieJar compatible with 32-bit systems #1188
        
        - Add missing `WSMsgType` to `web_ws.__all__`, see #1200
        
        - Fix `CookieJar` ctor when called with `loop=None` #1203
        
        - Fix broken upper-casing in wsgi support #1197
        
        
        1.0.1 (2016-09-16)
        ------------------
        
        - Restore `aiohttp.web.MsgType` alias for `aiohttp.WSMsgType` for sake
          of backward compatibility #1178
        
        - Tune alabaster schema.
        
        - Use `text/html` content type for displaying index pages by static
          file handler.
        
        - Fix `AssertionError` in static file handling #1177
        
        - Fix access log formats `%O` and `%b` for static file handling
        
        - Remove `debug` setting of GunicornWorker, use `app.debug`
          to control its debug-mode instead
        
        
        1.0.0 (2016-09-16)
        -------------------
        
        - Change default size for client session's connection pool from
          unlimited to 20 #977
        
        - Add IE support for cookie deletion. #994
        
        - Remove deprecated `WebSocketResponse.wait_closed` method (BACKWARD
          INCOMPATIBLE)
        
        - Remove deprecated `force` parameter for `ClientResponse.close`
          method (BACKWARD INCOMPATIBLE)
        
        - Avoid using of mutable CIMultiDict kw param in make_mocked_request
          #997
        
        - Make WebSocketResponse.close a little bit faster by avoiding new
          task creating just for timeout measurement
        
        - Add `proxy` and `proxy_auth` params to `client.get()` and family,
          deprecate `ProxyConnector` #998
        
        - Add support for websocket send_json and receive_json, synchronize
          server and client API for websockets #984
        
        - Implement router shourtcuts for most useful HTTP methods, use
          `app.router.add_get()`, `app.router.add_post()` etc. instead of
          `app.router.add_route()` #986
        
        - Support SSL connections for gunicorn worker #1003
        
        - Move obsolete examples to legacy folder
        
        - Switch to multidict 2.0 and title-cased strings #1015
        
        - `{FOO}e` logger format is case-sensitive now
        
        - Fix logger report for unix socket 8e8469b
        
        - Rename aiohttp.websocket to aiohttp._ws_impl
        
        - Rename aiohttp.MsgType tp aiohttp.WSMsgType
        
        - Introduce aiohttp.WSMessage officially
        
        - Rename Message -> WSMessage
        
        - Remove deprecated decode param from resp.read(decode=True)
        
        - Use 5min default client timeout #1028
        
        - Relax HTTP method validation in UrlDispatcher #1037
        
        - Pin minimal supported asyncio version to 3.4.2+ (`loop.is_close()`
          should be present)
        
        - Remove aiohttp.websocket module (BACKWARD INCOMPATIBLE)
          Please use high-level client and server approaches
        
        - Link header for 451 status code is mandatory
        
        - Fix test_client fixture to allow multiple clients per test #1072
        
        - make_mocked_request now accepts dict as headers #1073
        
        - Add Python 3.5.2/3.6+ compatibility patch for async generator
          protocol change #1082
        
        - Improvement test_client can accept instance object #1083
        
        - Simplify ServerHttpProtocol implementation #1060
        
        - Add a flag for optional showing directory index for static file
          handling #921
        
        - Define `web.Application.on_startup()` signal handler #1103
        
        - Drop ChunkedParser and LinesParser #1111
        
        - Call `Application.startup` in GunicornWebWorker #1105
        
        - Fix client handling hostnames with 63 bytes when a port is given in
          the url #1044
        
        - Implement proxy support for ClientSession.ws_connect #1025
        
        - Return named tuple from WebSocketResponse.can_prepare #1016
        
        - Fix access_log_format in `GunicornWebWorker` #1117
        
        - Setup Content-Type to application/octet-stream by default #1124
        
        - Deprecate debug parameter from app.make_handler(), use
          `Application(debug=True)` instead #1121
        
        - Remove fragment string in request path #846
        
        - Use aiodns.DNSResolver.gethostbyname() if available #1136
        
        - Fix static file sending on uvloop when sendfile is available #1093
        
        - Make prettier urls if query is empty dict #1143
        
        - Fix redirects for HEAD requests #1147
        
        - Default value for `StreamReader.read_nowait` is -1 from now #1150
        
        - `aiohttp.StreamReader` is not inherited from `asyncio.StreamReader` from now
          (BACKWARD INCOMPATIBLE) #1150
        
        - Streams documentation added #1150
        
        - Add `multipart` coroutine method for web Request object #1067
        
        - Publish ClientSession.loop property #1149
        
        - Fix static file with spaces #1140
        
        - Fix piling up asyncio loop by cookie expiration callbacks #1061
        
        - Drop `Timeout` class for sake of `async_timeout` external library.
          `aiohttp.Timeout` is an alias for `async_timeout.timeout`
        
        - `use_dns_cache` parameter of `aiohttp.TCPConnector` is `True` by
          default (BACKWARD INCOMPATIBLE) #1152
        
        - `aiohttp.TCPConnector` uses asynchronous DNS resolver if available by
          default (BACKWARD INCOMPATIBLE) #1152
        
        - Conform to RFC3986 - do not include url fragments in client requests #1174
        
        - Drop `ClientSession.cookies` (BACKWARD INCOMPATIBLE) #1173
        
        - Refactor `AbstractCookieJar` public API (BACKWARD INCOMPATIBLE) #1173
        
        - Fix clashing cookies with have the same name but belong to different
          domains (BACKWARD INCOMPATIBLE) #1125
        
        - Support binary Content-Transfer-Encoding #1169
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.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Topic :: Internet :: WWW/HTTP
