aiohttp 3.0 release

126 views
Skip to first unread message

Andrew Svetlov

unread,
Feb 12, 2018, 8:26:09 AM2/12/18
to aio-libs

Brief

Major release, many already deprecated things are removed
Minimal supported Python version is 3.5.3.
aiohttp uses shiny async/await syntax everywhere internally (while old yield from is still supported).

Read https://docs.aiohttp.org/en/stable/whats_new_3_0.html for brief information about most important changes.

The full changelog is below:

3.0.0 (2018-02-12)

Features

  • Speed up the PayloadWriter.write method for large request bodies. (#2126)
  • StreamResponse and Response are now MutableMappings. (#2246)
  • ClientSession publishes a set of signals to track the HTTP request execution.
    (#2313)
  • Content-Disposition fast access in ClientResponse (#2455)
  • Added support to Flask-style decorators with class-based Views. (#2472)
  • Signal handlers (registered callbacks) should be coroutines. (#2480)
  • Support async with test_client.ws_connect(...) (#2525)
  • Introduce site and application runner as underlying API for web.run_app
    implementation. (#2530)
  • Only quote multipart boundary when necessary and sanitize input (#2544)
  • Make the aiohttp.ClientResponse.get_encoding method public with the
    processing of invalid charset while detecting content encoding. (#2549)
  • Add optional configurable per message compression for
    ClientWebSocketResponse and WebSocketResponse. (#2551)
  • Add hysteresis to StreamReader to prevent flipping between paused and
    resumed states too often. (#2555)
  • Support .netrc by trust_env (#2581)
  • Avoid to create a new resource when adding a route with the same name and
    path of the last added resource (#2586)
  • MultipartWriter.boundary is str now. (#2589)
  • Allow a custom port to be used by TestServer (and associated pytest
    fixtures) (#2613)
  • Add param access_log_class to web.run_app function (#2615)
  • Add ssl parameter to client API (#2626)
  • Fixes performance issue introduced by #2577. When there are no middlewares
    installed by the user, no additional and useless code is executed. (#2629)
  • Rename PayloadWriter to StreamWriter (#2654)
  • New options reuse_portreuse_address are added to run_app and
    TCPSite. (#2679)
  • Use custom classes to pass client signals parameters (#2686)
  • Use attrs library for data classes, replace namedtuple. (#2690)
  • Pytest fixtures renaming, add aiohttp_ prefix (#2578)
  • Add aiohttp- prefix for pytest-aiohttp command line
    parameters (#2578)

Bugfixes

  • Correctly process upgrade request from server to HTTP2. aiohttp does not
    support HTTP2 yet, the protocol is not upgraded but response is handled
    correctly. (#2277)
  • Fix ClientConnectorSSLError and ClientProxyConnectionError for proxy
    connector (#2408)
  • Fix connector convert OSError to ClientConnectorError (#2423)
  • Fix connection attempts for multiple dns hosts (#2424)
  • Fix writing to closed transport by raising asyncio.CancelledError (#2499)
  • Fix warning in ClientSession.__del__ by stopping to try to close it.
    (#2523)
  • Fixed race-condition for iterating addresses from the DNSCache. (#2620)
  • Fix default value of access_log_format argument in web.run_app (#2649)
  • Freeze sub-application on adding to parent app (#2656)
  • Do percent encoding for .url_for() parameters (#2668)
  • Correctly process request start time and multiple request/response
    headers in access log extra (#2641)

Improved Documentation

  • Improve tutorial docs, using literalinclude to link to the actual files.
    (#2396)
  • Small improvement docs: better example for file uploads. (#2401)
  • Rename from_env to trust_env in client reference. (#2451)
  • Fixed mistype in Proxy Support section where trust_env parameter was
    used in session.get("http://python.org", trust_env=True) method instead of
    aiohttp.ClientSession constructor as follows:
    aiohttp.ClientSession(trust_env=True). (#2688)
  • Fix issue with unittest example not compiling in testing docs. (#2717)

Deprecations and Removals

  • Simplify HTTP pipelining implementation (#2109)
  • Drop StreamReaderPayload and DataQueuePayload. (#2257)
  • Drop md5 and sha1 finger-prints (#2267)
  • Drop WSMessage.tp (#2321)
  • Drop Python 3.4 and Python 3.5.0, 3.5.1, 3.5.2. Minimal supported Python
    versions are 3.5.3 and 3.6.0. yield from is gone, use async/await syntax.
    (#2343)
  • Drop aiohttp.Timeout and use async_timeout.timeout instead. (#2348)
  • Drop resolve param from TCPConnector. (#2377)
  • Add DeprecationWarning for returning HTTPException (#2415)
  • send_str()send_bytes()send_json()ping() and pong() are
    genuine async functions now. (#2475)
  • Drop undocumented app.on_pre_signal and app.on_post_signal. Signal
    handlers should be coroutines, support for regular functions is dropped.
    (#2480)
  • StreamResponse.drain() is not a part of public API anymore, just use await StreamResponse.write()StreamResponse.write is converted to async
    function. (#2483)
  • Drop deprecated slow_request_timeout param and **kwargs`` fromRequestHandler`. (#2500)
  • Drop deprecated resource.url(). (#2501)
  • Remove %u and %l format specifiers from access log format. (#2506)
  • Drop deprecated request.GET property. (#2547)
  • Simplify stream classes: drop ChunksQueue and FlowControlChunksQueue,
    merge FlowControlStreamReader functionality into StreamReader, drop
    FlowControlStreamReader name. (#2555)
  • Do not create a new resource on router.add_get(..., allow_head=True)
    (#2585)
  • Drop access to TCP tuning options from PayloadWriter and Response classes
    (#2604)
  • Drop deprecated encoding parameter from client API (#2606)
  • Deprecate verify_sslssl_context and fingerprint parameters in
    client API (#2626)
  • Get rid of the legacy class StreamWriter. (#2651)
  • Forbid non-strings in resource.url_for() parameters. (#2668)
  • Deprecate inheritance from ClientSession and web.Application and
    custom user attributes for ClientSessionweb.Request and
    web.Application (#2691)
  • Drop resp = await aiohttp.request(...) syntax for sake of async with aiohttp.request(...) as resp:. (#2540)
  • Forbid synchronous context managers for ClientSession and test
    server/client. (#2362)

Misc

Nikolay Kim

unread,
Feb 12, 2018, 11:17:48 AM2/12/18
to Andrew Svetlov, aio-libs
Congratulations to the aiohttp team!


Sent from my iPhone
--
You received this message because you are subscribed to the Google Groups "aio-libs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aio-libs+u...@googlegroups.com.
To post to this group, send email to aio-...@googlegroups.com.
Visit this group at https://groups.google.com/group/aio-libs.
To view this discussion on the web visit https://groups.google.com/d/msgid/aio-libs/20675bdd-8bd4-404f-9b77-1b696e2aaa6f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages