mirror of https://github.com/sgoudham/Enso-Bot.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
355 lines
12 KiB
Plaintext
355 lines
12 KiB
Plaintext
5 years ago
|
Metadata-Version: 1.2
|
||
|
Name: aiohttp
|
||
|
Version: 1.0.5
|
||
|
Summary: http client/server for asyncio
|
||
|
Home-page: https://github.com/KeepSafe/aiohttp/
|
||
|
Author: Nikolay Kim
|
||
|
Author-email: fafhrd91@gmail.com
|
||
|
Maintainer: Andrew Svetlov
|
||
|
Maintainer-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.5 (2016-10-11)
|
||
|
------------------
|
||
|
|
||
|
- Fix StreamReader._read_nowait to return all available
|
||
|
data up to the requested amount #1297
|
||
|
|
||
|
|
||
|
1.0.4 (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
|