Changelog¶
3.6.2 (2019-10-09)¶
Features¶
Bugfixes¶
Reset the
sock_read
timeout each time data is received for aaiohttp.ClientResponse
. #3808Fix handling of expired cookies so they are not stored in CookieJar. #4063
Fix misleading message in the string representation of
ClientConnectorError
;self.ssl == None
means default SSL context, not SSL disabled #4097Don’t clobber HTTP status when using FileResponse. #4106
Improved Documentation¶
3.6.0 (2019-09-06)¶
Features¶
Add support for Named Pipes (Site and Connector) under Windows. This feature requires Proactor event loop to work. #3629
Removed
Transfer-Encoding: chunked
header from websocket responses to be compatible with more http proxy servers. #3798Accept non-GET request for starting websocket handshake on server side. #3980
Bugfixes¶
Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. #3532
Fix an issue where cookies would sometimes not be set during a redirect. #3576
Change normalize_path_middleware to use 308 redirect instead of 301.
This behavior should prevent clients from being unable to use PUT/POST methods on endpoints that are redirected because of a trailing slash. #3579
Drop the processed task from
all_tasks()
list early. It prevents logging about a task with unhandled exception when the server is used in conjunction withasyncio.run()
. #3587Signal
type annotation changed fromSignal[Callable[['TraceConfig'], Awaitable[None]]]
toSignal[Callable[ClientSession, SimpleNamespace, ...]
. #3595Use sanitized URL as Location header in redirects #3614
Improve typing annotations for multipart.py along with changes required by mypy in files that references multipart.py. #3621
Close session created inside
aiohttp.request
when unhandled exception occurs #3628Cleanup per-chunk data in generic data read. Memory leak fixed. #3631
Use correct type for add_view and family #3633
Fix _keepalive field in __slots__ of
RequestHandler
. #3644Properly handle ConnectionResetError, to silence the “Cannot write to closing transport” exception when clients disconnect uncleanly. #3648
Suppress pytest warnings due to
test_utils
classes #3660Fix overshadowing of overlapped sub-application prefixes. #3701
Fixed return type annotation for WSMessage.json() #3720
Properly expose TooManyRedirects publicly as documented. #3818
Fix missing brackets for IPv6 in proxy CONNECT request #3841
Make the signature of
aiohttp.test_utils.TestClient.request
matchasyncio.ClientSession.request
according to the docs #3852Use correct style for re-exported imports, makes mypy
--strict
mode happy. #3868Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View #3880
Made cython HTTP parser set Reason-Phrase of the response to an empty string if it is missing. #3906
Add URL to the string representation of ClientResponseError. #3959
Accept
istr
keys inLooseHeaders
type hints. #3976Fixed race conditions in _resolve_host caching and throttling when tracing is enabled. #4013
For URLs like “unix://localhost/…” set Host HTTP header to “localhost” instead of “localhost:None”. #4039
Improved Documentation¶
Modify documentation for Background Tasks to remove deprecated usage of event loop. #3526
use
if __name__ == '__main__':
in server examples. #3775Update documentation reference to the default access logger. #3783
Improve documentation for
web.BaseRequest.path
andweb.BaseRequest.raw_path
. #3791Removed deprecation warning in tracing example docs #3964
3.5.4 (2019-01-12)¶
3.5.3 (2019-01-10)¶
Bugfixes¶
Fix type stubs for
aiohttp.web.run_app(access_log=True)
and fix edge case ofaccess_log=True
and the event loop being in debug mode. #3504Fix
aiohttp.ClientTimeout
type annotations to acceptNone
for fields #3511Send custom per-request cookies even if session jar is empty #3515
Restore Linux binary wheels publishing on PyPI
3.5.2 (2019-01-08)¶
Features¶
Bugfixes¶
Preserve MultipartWriter parts headers on write. Refactor the way how
Payload.headers
are handled. Payload instances now always have headers and Content-Type defined. Fix Payload Content-Disposition header reset after initial creation. #3035Log suppressed exceptions in
GunicornWebWorker
. #3464Remove wildcard imports. #3468
Use the same task for app initialization and web server handling in gunicorn workers. It allows to use Python3.7 context vars smoothly. #3471
Fix handling of chunked+gzipped response when first chunk does not give uncompressed data #3477
Replace
collections.MutableMapping
withcollections.abc.MutableMapping
to avoid a deprecation warning. #3480Payload.size
type annotation changed fromOptional[float]
toOptional[int]
. #3484Ignore done tasks when cancels pending activities on
web.run_app
finalization. #3497
3.5.1 (2018-12-24)¶
Fix a regression about
ClientSession._requote_redirect_url
modification in debug mode.
3.5.0 (2018-12-22)¶
Features¶
The library type annotations are checked in strict mode now.
Add support for setting cookies for individual request (#2387)
Application.add_domain implementation (#2809)
The default
app
in the request returned bytest_utils.make_mocked_request
can now have objects assigned to it and retrieved using the[]
operator. (#3174)Make
request.url
accessible when transport is closed. (#3177)Add
zlib_executor_size
argument toResponse
constructor to allow compression to run in a background executor to avoid blocking the main thread and potentially triggering health check failures. (#3205)Enable users to set
ClientTimeout
inaiohttp.request
(#3213)Don’t raise a warning if
NETRC
environment variable is not set and~/.netrc
file doesn’t exist. (#3267)Add default logging handler to web.run_app If the
Application.debug`
flag is set and the default loggeraiohttp.access
is used, access logs will now be output using a stderrStreamHandler
if no handlers are attached. Furthermore, if the default logger has no log level set, the log level will be set toDEBUG
. (#3324)Add method argument to
session.ws_connect()
. Sometimes server API requires a different HTTP method for WebSocket connection establishment. For example,Docker exec
needs POST. (#3378)Create a task per request handling. (#3406)
Bugfixes¶
Enable passing
access_log_class
viahandler_args
(#3158)Return empty bytes with end-of-chunk marker in empty stream reader. (#3186)
Accept
CIMultiDictProxy
instances forheaders
argument inweb.Response
constructor. (#3207)Don’t uppercase HTTP method in parser (#3233)
Make method match regexp RFC-7230 compliant (#3235)
Add
app.pre_frozen
state to properly handle startup signals in sub-applications. (#3237)Enhanced parsing and validation of helpers.BasicAuth.decode. (#3239)
Change imports from collections module in preparation for 3.8. (#3258)
Ensure Host header is added first to ClientRequest to better replicate browser (#3265)
Fix forward compatibility with Python 3.8: importing ABCs directly from the collections module will not be supported anymore. (#3273)
Keep the query string by
normalize_path_middleware
. (#3278)Fix missing parameter
raise_for_status
for aiohttp.request() (#3290)Bracket IPv6 addresses in the HOST header (#3304)
Fix default message for server ping and pong frames. (#3308)
Fix tests/test_connector.py typo and tests/autobahn/server.py duplicate loop def. (#3337)
Fix false-negative indicator end_of_HTTP_chunk in StreamReader.readchunk function (#3361)
Release HTTP response before raising status exception (#3364)
Fix task cancellation when
sendfile()
syscall is used by static file handling. (#3383)Fix stack trace for
asyncio.TimeoutError
which was not logged, when it is caught in the handler. (#3414)
Improved Documentation¶
Deprecations and Removals¶
Deprecate modification of
session.requote_redirect_url
(#2278)Deprecate
stream.unread_data()
(#3260)Deprecated use of boolean in
resp.enable_compression()
(#3318)Encourage creation of aiohttp public objects inside a coroutine (#3331)
Drop dead
Connection.detach()
andConnection.writer
. Both methods were broken for more than 2 years. (#3358)Deprecate
app.loop
,request.loop
,client.loop
andconnector.loop
properties. (#3374)Deprecate explicit debug argument. Use asyncio debug mode instead. (#3381)
Deprecate body parameter in HTTPException (and derived classes) constructor. (#3385)
Deprecate bare connector close, use
async with connector:
andawait connector.close()
instead. (#3417)Deprecate obsolete
read_timeout
andconn_timeout
inClientSession
constructor. (#3438)
Misc¶
#3341, #3351