aiohttp-2.3.10-cp36-cp36m-linux_armv7l.whl

STEP 1: Have you installed this repository?

If not, run this installation script command:

curl -s https://packagecloud.io/install/repositories/quan/python3-arm/script.python.sh | bash
copy
curl -s https://packagecloud.io/install/repositories/quan/python3-arm/script.python.sh | bash

STEP 2: Install the package
sudo pip install aiohttp==2.3.10

Async http client/server framework (asyncio)

Full 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

.. image:: https://codecov.io/gh/aio-libs/aiohttp/branch/master/graph/badge.svg
  :target: https://codecov.io/gh/aio-libs/aiohttp

.. image:: https://badge.fury.io/py/aiohttp.svg
    :target: https://badge.fury.io/py/aiohttp

.. 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.
- 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):
      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 wshandler(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.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/

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.4.2
- async-timeout_
- 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
.. _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


2.3.10 (2018-02-02)
===================

- Fix 100% CPU usage on HTTP GET and websocket connection just after it (#1955)

- Patch broken `ssl.match_hostname()` on Python<3.7 (#2674)

2.3.9 (2018-01-16)
==================

- Fix colon handing in path for dynamic resources (#2670)

2.3.8 (2018-01-15)
==================

- Do not use `yarl.unquote` internal function in aiohttp.  Fix
  incorrectly unquoted path part in URL dispatcher (#2662)

- Fix compatibility with `yarl==1.0.0` (#2662)

2.3.7 (2017-12-27)
==================

- Fixed race-condition for iterating addresses from the DNSCache. (#2620)
- Fix docstring for request.host (#2591)
- Fix docstring for request.remote (#2592)


2.3.6 (2017-12-04)
==================

- Correct `request.app` context (for handlers not just middlewares). (#2577)


2.3.5 (2017-11-30)
==================

- Fix compatibility with `pytest` 3.3+ (#2565)


2.3.4 (2017-11-29)
==================

- Make `request.app` point to proper application instance when using nested
  applications (with middlewares). (#2550)
- Change base class of ClientConnectorSSLError to ClientSSLError from
  ClientConnectorError. (#2563)
- Return client connection back to free pool on error in `connector.connect()`.
  (#2567)


2.3.3 (2017-11-17)
==================

- Having a `;` in Response content type does not assume it contains a charset
  anymore. (#2197)
- Use `getattr(asyncio, 'async')` for keeping compatibility with Python 3.7.
  (#2476)
- Ignore `NotImplementedError` raised by `set_child_watcher` from `uvloop`.
  (#2491)
- Fix warning in `ClientSession.__del__` by stopping to try to close it.
  (#2523)
- Fixed typo's in Third-party libraries page. And added async-v20 to the list
  (#2510)


2.3.2 (2017-11-01)
==================

- Fix passing client max size on cloning request obj. (#2385)
- Fix ClientConnectorSSLError and ClientProxyConnectionError for proxy
  connector. (#2408)
- Drop generated `_http_parser` shared object from tarball distribution. (#2414)
- Fix connector convert OSError to ClientConnectorError. (#2423)
- Fix connection attempts for multiple dns hosts. (#2424)
- Fix ValueError for AF_INET6 sockets if a preexisting INET6 socket to the
  `aiohttp.web.run_app` function. (#2431)
- `_SessionRequestContextManager` closes the session properly now. (#2441)
- Rename `from_env` to `trust_env` in client reference. (#2451)


2.3.1 (2017-10-18)
==================

- Relax attribute lookup in warning about old-styled middleware (#2340)


2.3.0 (2017-10-18)
==================

Features
--------

- Add SSL related params to `ClientSession.request` (#1128)
- Make enable_compression work on HTTP/1.0 (#1828)
- Deprecate registering synchronous web handlers (#1993)
- Switch to `multidict 3.0`. All HTTP headers preserve casing now but compared
  in case-insensitive way. (#1994)
- Improvement for `normalize_path_middleware`. Added possibility to handle URLs
  with query string. (#1995)
- Use towncrier for CHANGES.txt build (#1997)
- Implement `trust_env=True` param in `ClientSession`. (#1998)
- Added variable to customize proxy headers (#2001)
- Implement `router.add_routes` and router decorators. (#2004)
- Deprecated `BaseRequest.has_body` in favor of
  `BaseRequest.can_read_body` Added `BaseRequest.body_exists`
  attribute that stays static for the lifetime of the request (#2005)
- Provide `BaseRequest.loop` attribute (#2024)
- Make `_CoroGuard` awaitable and fix `ClientSession.close` warning message
  (#2026)
- Responses to redirects without Location header are returned instead of
  raising a RuntimeError (#2030)
- Added `get_client`, `get_server`, `setUpAsync` and `tearDownAsync` methods to
  AioHTTPTestCase (#2032)
- Add automatically a SafeChildWatcher to the test loop (#2058)
- add ability to disable automatic response decompression (#2110)
- Add support for throttling DNS request, avoiding the requests saturation when
  there is a miss in the DNS cache and many requests getting into the connector
  at the same time. (#2111)
- Use request for getting access log information instead of message/transport
  pair. Add `RequestBase.remote` property for accessing to IP of client
  initiated HTTP request. (#2123)
- json() raises a ContentTypeError exception if the content-type does not meet
  the requirements instead of raising a generic ClientResponseError. (#2136)
- Make the HTTP client able to return HTTP chunks when chunked transfer
  encoding is used. (#2150)
- add `append_version` arg into `StaticResource.url` and
  `StaticResource.url_for` methods for getting an url with hash (version) of
  the file. (#2157)
- Fix parsing the Forwarded header. * commas and semicolons are allowed inside
  quoted-strings; * empty forwarded-pairs (as in for=_1;;by=_2) are allowed; *
  non-standard parameters are allowed (although this alone could be easily done
  in the previous parser). (#2173)
- Don't require ssl module to run. aiohttp does not require SSL to function.
  The code paths involved with SSL will only be hit upon SSL usage. Raise
  `RuntimeError` if HTTPS protocol is required but ssl module is not present.
  (#2221)
- Accept coroutine fixtures in pytest plugin (#2223)
- Call `shutdown_asyncgens` before event loop closing on Python 3.6. (#2227)
- Speed up Signals when there are no receivers (#2229)
- Raise `InvalidURL` instead of `ValueError` on fetches with invalid URL.
  (#2241)
- Move `DummyCookieJar` into `cookiejar.py` (#2242)
- `run_app`: Make `print=None` disable printing (#2260)
- Support `brotli` encoding (generic-purpose lossless compression algorithm)
  (#2270)
- Add server support for WebSockets Per-Message Deflate. Add client option to
  add deflate compress header in WebSockets request header. If calling
  ClientSession.ws_connect() with `compress=15` the client will support deflate
  compress negotiation. (#2273)
- Support `verify_ssl`, `fingerprint`, `ssl_context` and `proxy_headers` by
  `client.ws_connect`. (#2292)
- Added `aiohttp.ClientConnectorSSLError` when connection fails due
  `ssl.SSLError` (#2294)
- `aiohttp.web.Application.make_handler` support `access_log_class` (#2315)
- Build HTTP parser extension in non-strict mode by default. (#2332)


Bugfixes
--------

- Clear auth information on redirecting to other domain (#1699)
- Fix missing app.loop on startup hooks during tests (#2060)
- Fix issue with synchronous session closing when using `ClientSession` as an
  asynchronous context manager. (#2063)
- Fix issue with `CookieJar` incorrectly expiring cookies in some edge cases.
  (#2084)
- Force use of IPv4 during test, this will make tests run in a Docker container
  (#2104)
- Warnings about unawaited coroutines now correctly point to the user's code.
  (#2106)
- Fix issue with `IndexError` being raised by the `StreamReader.iter_chunks()`
  generator. (#2112)
- Support HTTP 308 Permanent redirect in client class. (#2114)
- Fix `FileResponse` sending empty chunked body on 304. (#2143)
- Do not add `Content-Length: 0` to GET/HEAD/TRACE/OPTIONS requests by default.
  (#2167)
- Fix parsing the Forwarded header according to RFC 7239. (#2170)
- Securely determining remote/scheme/host #2171 (#2171)
- Fix header name parsing, if name is split into multiple lines (#2183)
- Handle session close during connection, `KeyError:
  <aiohttp.connector._TransportPlaceholder>` (#2193)
- Fixes uncaught `TypeError` in `helpers.guess_filename` if `name` is not a
  string (#2201)
- Raise OSError on async DNS lookup if resolved domain is an alias for another
  one, which does not have an A or CNAME record. (#2231)
- Fix incorrect warning in `StreamReader`. (#2251)
- Properly clone state of web request (#2284)
- Fix C HTTP parser for cases when status line is split into different TCP
  packets. (#2311)
- Fix `web.FileResponse` overriding user supplied Content-Type (#2317)


Improved Documentation
----------------------

- Add a note about possible performance degradation in `await resp.text()` if
  charset was not provided by `Content-Type` HTTP header. Pass explicit
  encoding to solve it. (#1811)
- Drop `disqus` widget from documentation pages. (#2018)
- Add a graceful shutdown section to the client usage documentation. (#2039)
- Document `connector_owner` parameter. (#2072)
- Update the doc of web.Application (#2081)
- Fix mistake about access log disabling. (#2085)
- Add example usage of on_startup and on_shutdown signals by creating and
  disposing an aiopg connection engine. (#2131)
- Document `encoded=True` for `yarl.URL`, it disables all yarl transformations.
  (#2198)
- Document that all app's middleware factories are run for every request.
  (#2225)
- Reflect the fact that default resolver is threaded one starting from aiohttp
  1.1 (#2228)


Deprecations and Removals
-------------------------

- Drop deprecated `Server.finish_connections` (#2006)
- Drop %O format from logging, use %b instead. Drop %e format from logging,
  environment variables are not supported anymore. (#2123)
- Drop deprecated secure_proxy_ssl_header support (#2171)
- Removed TimeService in favor of simple caching. TimeService also had a bug
  where it lost about 0.5 seconds per second. (#2176)
- Drop unused response_factory from static files API (#2290)


Misc
----

- #2013, #2014, #2048, #2094, #2149, #2187, #2214, #2225, #2243, #2248


2.2.5 (2017-08-03)
==================

- Don't raise deprecation warning on
  `loop.run_until_complete(client.close())` (#2065)

2.2.4 (2017-08-02)
==================

- Fix issue with synchronous session closing when using ClientSession
  as an asynchronous context manager.  (#2063)

2.2.3 (2017-07-04)
==================

- Fix `_CoroGuard` for python 3.4

2.2.2 (2017-07-03)
==================

- Allow `await session.close()` along with `yield from session.close()`


2.2.1 (2017-07-02)
==================

- Relax `yarl` requirement to 0.11+

- Backport #2026: `session.close` *is* a coroutine (#2029)


2.2.0 (2017-06-20)
==================

- Add doc for add_head, update doc for add_get. (#1944)

- Fixed consecutive calls for `Response.write_eof`.

- Retain method attributes (e.g. :code:`__doc__`) when registering synchronous
  handlers for resources. (#1953)

- Added signal TERM handling in `run_app` to gracefully exit (#1932)

- Fix websocket issues caused by frame fragmentation. (#1962)

- Raise RuntimeError is you try to set the Content Length and enable
  chunked encoding at the same time (#1941)

- Small update for `unittest_run_loop`

- Use CIMultiDict for ClientRequest.skip_auto_headers (#1970)

- Fix wrong startup sequence: test server and `run_app()` are not raise
  `DeprecationWarning` now (#1947)

- Make sure cleanup signal is sent if startup signal has been sent (#1959)

- Fixed server keep-alive handler, could cause 100% cpu utilization (#1955)

- Connection can be destroyed before response get processed if
  `await aiohttp.request(..)` is used (#1981)

- MultipartReader does not work with -OO (#1969)

- Fixed `ClientPayloadError` with blank `Content-Encoding` header (#1931)

- Support `deflate` encoding implemented in `httpbin.org/deflate` (#1918)

- Fix BadStatusLine caused by extra `CRLF` after `POST` data (#1792)

- Keep a reference to `ClientSession` in response object (#1985)

- Deprecate undocumented `app.on_loop_available` signal (#1978)



2.1.0 (2017-05-26)
==================

- Added support for experimental `async-tokio` event loop written in Rust
  https://github.com/PyO3/tokio

- Write to transport ``\r\n`` before closing after keepalive timeout,
  otherwise client can not detect socket disconnection. (#1883)

- Only call `loop.close` in `run_app` if the user did *not* supply a loop.
  Useful for allowing clients to specify their own cleanup before closing the
  asyncio loop if they wish to tightly control loop behavior

- Content disposition with semicolon in filename (#917)

- Added `request_info` to response object and `ClientResponseError`. (#1733)

- Added `history` to `ClientResponseError`. (#1741)

- Allow to disable redirect url re-quoting (#1474)

- Handle RuntimeError from transport (#1790)

- Dropped "%O" in access logger (#1673)

- Added `args` and `kwargs` to `unittest_run_loop`. Useful with other
  decorators, for example `@patch`. (#1803)

- Added `iter_chunks` to response.content object. (#1805)

- Avoid creating TimerContext when there is no timeout to allow
  compatibility with Tornado. (#1817) (#1180)

- Add `proxy_from_env` to `ClientRequest` to read from environment
  variables. (#1791)

- Add DummyCookieJar helper. (#1830)

- Fix assertion errors in Python 3.4 from noop helper. (#1847)

- Do not unquote `+` in match_info values (#1816)

- Use Forwarded, X-Forwarded-Scheme and X-Forwarded-Host for better scheme and
  host resolution. (#1134)

- Fix sub-application middlewares resolution order (#1853)

- Fix applications comparison (#1866)

- Fix static location in index when prefix is used (#1662)

- Make test server more reliable (#1896)

- Extend list of web exceptions, add HTTPUnprocessableEntity,
  HTTPFailedDependency, HTTPInsufficientStorage status codes (#1920)


2.0.7 (2017-04-12)
==================

- Fix *pypi* distribution

- Fix exception description (#1807)

- Handle socket error in FileResponse (#1773)

- Cancel websocket heartbeat on close (#1793)


2.0.6 (2017-04-04)
==================

- Keeping blank values for `request.post()` and `multipart.form()` (#1765)

- TypeError in data_received of ResponseHandler (#1770)

- Fix ``web.run_app`` not to bind to default host-port pair if only socket is
  passed (#1786)


2.0.5 (2017-03-29)
==================

- Memory leak with aiohttp.request (#1756)

- Disable cleanup closed ssl transports by default.

- Exception in request handling if the server responds before the body
  is sent (#1761)


2.0.4 (2017-03-27)
==================

- Memory leak with aiohttp.request (#1756)

- Encoding is always UTF-8 in POST data (#1750)

- Do not add "Content-Disposition" header by default (#1755)


2.0.3 (2017-03-24)
==================

- Call https website through proxy will cause error (#1745)

- Fix exception on multipart/form-data post if content-type is not set (#1743)


2.0.2 (2017-03-21)
==================

- Fixed Application.on_loop_available signal (#1739)

- Remove debug code


2.0.1 (2017-03-21)
==================

- Fix allow-head to include name on route (#1737)

- Fixed AttributeError in WebSocketResponse.can_prepare (#1736)


2.0.0 (2017-03-20)
==================

- Added `json` to `ClientSession.request()` method (#1726)

- Added session's `raise_for_status` parameter, automatically calls
  raise_for_status() on any request. (#1724)

- `response.json()` raises `ClientReponseError` exception if response's
  content type does not match (#1723)

  - Cleanup timer and loop handle on any client exception.

- Deprecate `loop` parameter for Application's constructor


`2.0.0rc1` (2017-03-15)
=======================

- Properly handle payload errors (#1710)

- Added `ClientWebSocketResponse.get_extra_info()` (#1717)

- It is not possible to combine Transfer-Encoding and chunked parameter,
  same for compress and Content-Encoding (#1655)

- Connector's `limit` parameter indicates total concurrent connections.
  New `limit_per_host` added, indicates total connections per endpoint. (#1601)

- Use url's `raw_host` for name resolution (#1685)

- Change `ClientResponse.url` to `yarl.URL` instance (#1654)

- Add max_size parameter to web.Request reading methods (#1133)

- Web Request.post() stores data in temp files (#1469)

- Add the `allow_head=True` keyword argument for `add_get` (#1618)

- `run_app` and the Command Line Interface now support serving over
  Unix domain sockets for faster inter-process communication.

- `run_app` now supports passing a preexisting socket object. This can be useful
  e.g. for socket-based activated applications, when binding of a socket is
  done by the parent process.

- Implementation for Trailer headers parser is broken (#1619)

- Fix FileResponse to not fall on bad request (range out of file size)

- Fix FileResponse to correct stream video to Chromes

- Deprecate public low-level api (#1657)

- Deprecate `encoding` parameter for ClientSession.request() method

- Dropped aiohttp.wsgi (#1108)

- Dropped `version` from ClientSession.request() method

- Dropped websocket version 76 support (#1160)

- Dropped: `aiohttp.protocol.HttpPrefixParser`  (#1590)

- Dropped: Servers response's `.started`, `.start()` and
  `.can_start()` method (#1591)

- Dropped:  Adding `sub app` via `app.router.add_subapp()` is deprecated
  use `app.add_subapp()` instead (#1592)

- Dropped: `Application.finish()` and `Application.register_on_finish()` (#1602)

- Dropped: `web.Request.GET` and `web.Request.POST`

- Dropped: aiohttp.get(), aiohttp.options(), aiohttp.head(),
  aiohttp.post(), aiohttp.put(), aiohttp.patch(), aiohttp.delete(), and
  aiohttp.ws_connect() (#1593)

- Dropped: `aiohttp.web.WebSocketResponse.receive_msg()` (#1605)

- Dropped: `ServerHttpProtocol.keep_alive_timeout` attribute and
  `keep-alive`, `keep_alive_on`, `timeout`, `log` constructor parameters (#1606)

- Dropped: `TCPConnector's`` `.resolve`, `.resolved_hosts`,
  `.clear_resolved_hosts()` attributes and `resolve` constructor
  parameter (#1607)

- Dropped `ProxyConnector` (#1609)

Checksums

MD5 611bdaf249645707362cb33cb96fa8c7
SHA1 c169e2c015a91da4a6fc342884a67e51d551e866
SHA256 c2a1f284624cee45d524f128467be018eb7dc9d2b51a701a50dd23a6fb7249e2
SHA512 e60e93a7be7d4560af3b719ebd86a215879aa27451b022d61e6b16a08147729b008a14ed690c8e0d0083420bec14f01bdcf129c1e20e79b52b4fbf9396c026c1

Requires

  • requires-dist: chardet
  • requires-dist: multidict (>=4.0.0)
  • requires-dist: async-timeout (>=1.2.0)
  • requires-dist: yarl (>=1.0.0)
  • requires-dist: idna-ssl (>=1.0.0)
  • requires-python: >=3.4.2

Files

  • aiohttp/worker.py
  • aiohttp/web.py
  • aiohttp/web_ws.py
  • aiohttp/web_urldispatcher.py
  • aiohttp/web_server.py
  • aiohttp/web_response.py
  • aiohttp/web_request.py
  • aiohttp/web_protocol.py
  • aiohttp/web_middlewares.py
  • aiohttp/web_fileresponse.py
  • aiohttp/web_exceptions.py
  • aiohttp/test_utils.py
  • aiohttp/streams.py
  • aiohttp/signals.py
  • aiohttp/resolver.py
  • aiohttp/pytest_plugin.py
  • aiohttp/payload.py
  • aiohttp/payload_streamer.py
  • aiohttp/multipart.py
  • aiohttp/log.py
  • aiohttp/locks.py
  • aiohttp/http.py
  • aiohttp/http_writer.py
  • aiohttp/http_websocket.py
  • aiohttp/http_parser.py
  • aiohttp/http_exceptions.py
  • aiohttp/helpers.py
  • aiohttp/hdrs.py
  • aiohttp/frozenlist.py
  • aiohttp/formdata.py

Uploaded

about 6 years ago

Package Size

617 KB

Downloads

41

wget

wget --content-disposition "https://packagecloud.io/quan/python3-arm/packages/python/aiohttp-2.3.10-cp36-cp36m-linux_armv7l.whl/download?distro_version_id=166"

Homepage

https://github.com/aio-libs/aiohttp/

License

Apache 2