- Fix
InvalidStateError
on processing a sequence of twoRequestHandler.data_received
calls on web server. (#2773)
- Fix
IndexError
in HTTP request handling by server. (#2752) - Fix MultipartWriter.append* no longer returning part/payload. (#2759)
- Relax
attrs
dependency to minimal actually supported version 17.0.3 The change allows to avoid version conflicts with currently existing test tools.
- Prevent Windows absolute URLs in static files. Paths like
/static/D:\path
and/static/\\hostname\drive\path
are forbidden.
- Technical release for fixing distribution problems.
- 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_port, reuse_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 forpytest-aiohttp
command line parameters (#2578)
- 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)
- 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)
- 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` from RequestHandler. (#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_ssl
,ssl_context
andfingerprint
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
andweb.Application
and custom user attributes forClientSession
,web.Request
andweb.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)
- #2552