Releases: aio-libs/aiohttp
aiohttp 3.7.1 release
Bugfixes
- Fixed a type error caused by the conditional import of
Protocol
.
#5111 <https://github.com/aio-libs/aiohttp/issues/5111>
_ - Server doesn't send Content-Length for 1xx or 204
#4901 <https://github.com/aio-libs/aiohttp/issues/4901>
_ - Fix run_app typing
#4957 <https://github.com/aio-libs/aiohttp/issues/4957>
_ - Always require
typing_extensions
library.
#5107 <https://github.com/aio-libs/aiohttp/issues/5107>
_ - Fix a variable-shadowing bug causing
ThreadedResolver.resolve
to
return the resolved IP as thehostname
in each record, which prevented
validation of HTTPS connections.
#5110 <https://github.com/aio-libs/aiohttp/issues/5110>
_ - Added annotations to all public attributes.
#5115 <https://github.com/aio-libs/aiohttp/issues/5115>
_ - Fix flaky test_when_timeout_smaller_second
#5116 <https://github.com/aio-libs/aiohttp/issues/5116>
_ - Ensure sending a zero byte file does not throw an exception
#5124 <https://github.com/aio-libs/aiohttp/issues/5124>
_ - Fix a bug in
web.run_app()
about Python version checking on Windows
#5127 <https://github.com/aio-libs/aiohttp/issues/5127>
_
aiohttp 3.7.0 release
Features
- Response headers are now prepared prior to running
on_response_prepare
hooks, directly before headers are sent to the client.
#1958 <https://github.com/aio-libs/aiohttp/issues/1958>
_ - Add a
quote_cookie
option toCookieJar
, a way to skip quotation wrapping of cookies containing special characters.
#2571 <https://github.com/aio-libs/aiohttp/issues/2571>
_ - Call
AccessLogger.log
with the current exception available fromsys.exc_info()
.
#3557 <https://github.com/aio-libs/aiohttp/issues/3557>
_ web.UrlDispatcher.add_routes
andweb.Application.add_routes
return a list
of registeredAbstractRoute
instances.AbstractRouteDef.register
(and all
subclasses) return a list of registered resources registered resource.
#3866 <https://github.com/aio-libs/aiohttp/issues/3866>
_- Added properties of default ClientSession params to ClientSession class so it is available for introspection
#3882 <https://github.com/aio-libs/aiohttp/issues/3882>
_ - Don't cancel web handler on peer disconnection, raise
OSError
on reading/writing instead.
#4080 <https://github.com/aio-libs/aiohttp/issues/4080>
_ - Implement BaseRequest.get_extra_info() to access a protocol transports' extra info.
#4189 <https://github.com/aio-libs/aiohttp/issues/4189>
_ - Added
ClientSession.timeout
property.
#4191 <https://github.com/aio-libs/aiohttp/issues/4191>
_ - allow use of SameSite in cookies.
#4224 <https://github.com/aio-libs/aiohttp/issues/4224>
_ - Use
loop.sendfile()
instead of custom implementation if available.
#4269 <https://github.com/aio-libs/aiohttp/issues/4269>
_ - Apply SO_REUSEADDR to test server's socket.
#4393 <https://github.com/aio-libs/aiohttp/issues/4393>
_ - Use .raw_host instead of slower .host in client API
#4402 <https://github.com/aio-libs/aiohttp/issues/4402>
_ - Allow configuring the buffer size of input stream by passing
read_bufsize
argument.
#4453 <https://github.com/aio-libs/aiohttp/issues/4453>
_ - Pass tests on Python 3.8 for Windows.
#4513 <https://github.com/aio-libs/aiohttp/issues/4513>
_ - Add
method
andurl
attributes toTraceRequestChunkSentParams
andTraceResponseChunkReceivedParams
.
#4674 <https://github.com/aio-libs/aiohttp/issues/4674>
_ - Add ClientResponse.ok property for checking status code under 400.
#4711 <https://github.com/aio-libs/aiohttp/issues/4711>
_ - Don't ceil timeouts that are smaller than 5 seconds.
#4850 <https://github.com/aio-libs/aiohttp/issues/4850>
_ - TCPSite now listens by default on all interfaces instead of just IPv4 when
None
is passed in as the host.
#4894 <https://github.com/aio-libs/aiohttp/issues/4894>
_ - Bump
http_parser
to 2.9.4
#5070 <https://github.com/aio-libs/aiohttp/issues/5070>
_
Bugfixes
-
Fix keepalive connections not being closed in time
#3296 <https://github.com/aio-libs/aiohttp/issues/3296>
_ -
Fix failed websocket handshake leaving connection hanging.
#3380 <https://github.com/aio-libs/aiohttp/issues/3380>
_ -
Fix tasks cancellation order on exit. The run_app task needs to be cancelled first for cleanup hooks to run with all tasks intact.
#3805 <https://github.com/aio-libs/aiohttp/issues/3805>
_ -
Don't start heartbeat until writer is set
#4062 <https://github.com/aio-libs/aiohttp/issues/4062>
-
Fix handling of multipart file uploads without a content type.
#4089 <https://github.com/aio-libs/aiohttp/issues/4089>
_ -
Preserve view handler function attributes across middlewares
#4174 <https://github.com/aio-libs/aiohttp/issues/4174>
_ -
Fix the string representation of
ServerDisconnectedError
.
#4175 <https://github.com/aio-libs/aiohttp/issues/4175>
_ -
Raising RuntimeError when trying to get encoding from not read body
#4214 <https://github.com/aio-libs/aiohttp/issues/4214>
_ -
Remove warning messages from noop.
#4282 <https://github.com/aio-libs/aiohttp/issues/4282>
_ -
Raise ClientPayloadError if FormData re-processed.
#4345 <https://github.com/aio-libs/aiohttp/issues/4345>
_ -
Fix a warning about unfinished task in
web_protocol.py
#4408 <https://github.com/aio-libs/aiohttp/issues/4408>
_ -
Fixed 'deflate' compression. According to RFC 2616 now.
#4506 <https://github.com/aio-libs/aiohttp/issues/4506>
_ -
Fixed OverflowError on platforms with 32-bit time_t
#4515 <https://github.com/aio-libs/aiohttp/issues/4515>
_ -
Fixed request.body_exists returns wrong value for methods without body.
#4528 <https://github.com/aio-libs/aiohttp/issues/4528>
_ -
Fix connecting to link-local IPv6 addresses.
#4554 <https://github.com/aio-libs/aiohttp/issues/4554>
_ -
Fix a problem with connection waiters that are never awaited.
#4562 <https://github.com/aio-libs/aiohttp/issues/4562>
_ -
Always make sure transport is not closing before reuse a connection.
Reuse a protocol based on keepalive in headers is unreliable.
For example, uWSGI will not support keepalive even it serves a
HTTP 1.1 request, except explicitly configure uWSGI with a
--http-keepalive
option.Servers designed like uWSGI could cause aiohttp intermittently
raise a ConnectionResetException when the protocol poll runs
out and some protocol is reused.
#4587 <https://github.com/aio-libs/aiohttp/issues/4587>
_ -
Handle the last CRLF correctly even if it is received via separate TCP segment.
#4630 <https://github.com/aio-libs/aiohttp/issues/4630>
_ -
Fix the register_resource function to validate route name before splitting it so that route name can include python keywords.
#4691 <https://github.com/aio-libs/aiohttp/issues/4691>
_ -
Improve typing annotations for
web.Request
,aiohttp.ClientResponse
and
multipart
module.
#4736 <https://github.com/aio-libs/aiohttp/issues/4736>
_ -
Fix resolver task is not awaited when connector is cancelled
#4795 <https://github.com/aio-libs/aiohttp/issues/4795>
_ -
Fix a bug "Aiohttp doesn't return any error on invalid request methods"
#4798 <https://github.com/aio-libs/aiohttp/issues/4798>
_ -
Fix HEAD requests for static content.
#4809 <https://github.com/aio-libs/aiohttp/issues/4809>
_ -
Fix incorrect size calculation for memoryview
#4890 <https://github.com/aio-libs/aiohttp/issues/4890>
_ -
Add HTTPMove to all_.
#4897 <https://github.com/aio-libs/aiohttp/issues/4897>
_ -
Fixed the type annotations in the
tracing
module.
#4912 <https://github.com/aio-libs/aiohttp/issues/4912>
_ -
Fix typing for multipart
__aiter__
.
#4931 <https://github.com/aio-libs/aiohttp/issues/4931>
_ -
Fix for race condition on connections in BaseConnector that leads to exceeding the connection limit.
#4936 <https://github.com/aio-libs/aiohttp/issues/4936>
_ -
Add forced UTF-8 encoding for
application/rdap+json
responses.
#4938 <https://github.com/aio-libs/aiohttp/issues/4938>
_ -
Fix inconsistency between Python and C http request parsers in parsing pct-encoded URL.
#4972 <https://github.com/aio-libs/aiohttp/issues/4972>
_ -
Fix connection closing issue in HEAD request.
#5012 <https://github.com/aio-libs/aiohttp/issues/5012>
_ -
Fix type hint on BaseRunner.addresses (from
List[str]
toList[Any]
)
#5086 <https://github.com/aio-libs/aiohttp/issues/5086>
_ -
Make
web.run_app()
more responsive to Ctrl+C on Windows for Python < 3.8. It slightly
increases CPU load as a side effect.
#5098 <https://github.com/aio-libs/aiohttp/issues/5098>
_
Improved Documentation
- Fix example code in client quick-start
#3376 <https://github.com/aio-libs/aiohttp/issues/3376>
_ - Updated the docs so there is no contradiction in
ttl_dns_cache
default value
#3512 <https://github.com/aio-libs/aiohttp/issues/3512>
_ - Add 'Deploy with SSL' to docs.
#4201 <https://github.com/aio-libs/aiohttp/issues/4201>
_ - Change typing of the secure argument on StreamResponse.set_cookie from
Optional[str]
toOptional[bool]
#4204 <https://github.com/aio-libs/aiohttp/issues/4204>
_ - Changes
ttl_dns_cache
type from int to Optional[int].
#4270 <https://github.com/aio-libs/aiohttp/issues/4270>
_ - Simplify README hello word example and add a documentation page for people coming from requests.
#4272 <https://github.com/aio-libs/aiohttp/issues/4272>
_ - Improve some code examples in the documentation involving websockets and starting a simple HTTP site with an AppRunner.
#4285 <https://github.com/aio-libs/aiohttp/issues/4285>
_ - Fix typo in code example in Multipart docs
#4312 <https://github.com/aio-libs/aiohttp/issues/4312>
_ - Fix code example in Multipart section.
#4314 <https://github.com/aio-libs/aiohttp/issues/4314>
_ - Update contributing guide so new contributors read the most recent version of that guide. Update command used to create test coverage reporting.
#4810 <https://github.com/aio-libs/aiohttp/issues/4810>
_ - Spelling: Change "canonize" to "canonicalize".
#4986 <https://github.com/aio-libs/aiohttp/issues/4986>
_ - Add
aiohttp-sse-client
library to third party usage list.
#5084 <https://github.com/aio-libs/aiohttp/issues/5084>
_
Misc
#2856 <https://github.com/aio-libs/aiohttp/issues/2856>
,#4218 <https://github.com/aio-libs/aiohttp/issues/4218>
,#4250 <https://github.com/aio-libs/aiohttp/issues/4250>
_
v4.0.0a1
v3.6.2a1
aiohttp 3.6.2 release
It contains several bufixes.
Changes
Features
- Made exceptions pickleable. Also changed the repr of some exceptions.
#4077 <https://github.com/aio-libs/aiohttp/issues/4077>
_ - Use
Iterable
type hint instead ofSequence
forApplication
middleware
parameter.#4125 <https://github.com/aio-libs/aiohttp/issues/4125>
_
Bugfixes
- Reset the
sock_read
timeout each time data is received for a
aiohttp.ClientResponse
.#3808 <https://github.com/aio-libs/aiohttp/issues/3808>
_ - Fix handling of expired cookies so they are not stored in CookieJar.
#4063 <https://github.com/aio-libs/aiohttp/issues/4063>
_ - Fix misleading message in the string representation of
ClientConnectorError
;
self.ssl == None
means default SSL context, not SSL disabled#4097 <https://github.com/aio-libs/aiohttp/issues/4097>
_ - Don't clobber HTTP status when using FileResponse.
#4106 <https://github.com/aio-libs/aiohttp/issues/4106>
_
Improved Documentation
- Added minimal required logging configuration to logging documentation.
#2469 <https://github.com/aio-libs/aiohttp/issues/2469>
_ - Update docs to reflect proxy support.
#4100 <https://github.com/aio-libs/aiohttp/issues/4100>
_ - Fix typo in code example in testing docs.
#4108 <https://github.com/aio-libs/aiohttp/issues/4108>
_
Misc
#4102 <https://github.com/aio-libs/aiohttp/issues/4102>
_
v3.6.2a2
aiohttp 3.6.1 release
Features
- Compatibility with Python 3.8.
#4056 <https://github.com/aio-libs/aiohttp/issues/4056>
_
Bugfixes
- correct some exception string format
#4068 <https://github.com/aio-libs/aiohttp/issues/4068>
_ - Emit a warning when
ssl.OP_NO_COMPRESSION
is
unavailable because the runtime is built against
an outdated OpenSSL.
#4052 <https://github.com/aio-libs/aiohttp/issues/4052>
_ - Update multidict requirement to >= 4.5
#4057 <https://github.com/aio-libs/aiohttp/issues/4057>
_
Improved Documentation
- Provide pytest-aiohttp namespace for pytest fixtures in docs.
#3723 <https://github.com/aio-libs/aiohttp/issues/3723>
_
aiohttp 3.6.0 release
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 <https://github.com/aio-libs/aiohttp/issues/3629>
_ - Removed
Transfer-Encoding: chunked
header from websocket responses to be compatible with more http proxy servers.
#3798 <https://github.com/aio-libs/aiohttp/issues/3798>
_ - Accept non-GET request for starting websocket handshake on server side.
#3980 <https://github.com/aio-libs/aiohttp/issues/3980>
_
Bugfixes
-
Raise a ClientResponseError instead of an AssertionError for a blank
HTTP Reason Phrase.
#3532 <https://github.com/aio-libs/aiohttp/issues/3532>
_ -
Fix an issue where cookies would sometimes not be set during a redirect.
#3576 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/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()
.
#3587 <https://github.com/aio-libs/aiohttp/issues/3587>
_ -
Signal
type annotation changed fromSignal[Callable[['TraceConfig'], Awaitable[None]]]
toSignal[Callable[ClientSession, SimpleNamespace, ...]
.
#3595 <https://github.com/aio-libs/aiohttp/issues/3595>
_ -
Use sanitized URL as Location header in redirects
#3614 <https://github.com/aio-libs/aiohttp/issues/3614>
_ -
Improve typing annotations for multipart.py along with changes required
by mypy in files that references multipart.py.
#3621 <https://github.com/aio-libs/aiohttp/issues/3621>
_ -
Close session created inside
aiohttp.request
when unhandled exception occurs
#3628 <https://github.com/aio-libs/aiohttp/issues/3628>
_ -
Cleanup per-chunk data in generic data read. Memory leak fixed.
#3631 <https://github.com/aio-libs/aiohttp/issues/3631>
_ -
Use correct type for add_view and family
#3633 <https://github.com/aio-libs/aiohttp/issues/3633>
_ -
Fix keepalive field in slots of
RequestHandler
.
#3644 <https://github.com/aio-libs/aiohttp/issues/3644>
-
Properly handle ConnectionResetError, to silence the "Cannot write to closing
transport" exception when clients disconnect uncleanly.
#3648 <https://github.com/aio-libs/aiohttp/issues/3648>
_ -
Suppress pytest warnings due to
test_utils
classes
#3660 <https://github.com/aio-libs/aiohttp/issues/3660>
_ -
Fix overshadowing of overlapped sub-application prefixes.
#3701 <https://github.com/aio-libs/aiohttp/issues/3701>
_ -
Fixed return type annotation for WSMessage.json()
#3720 <https://github.com/aio-libs/aiohttp/issues/3720>
_ -
Properly expose TooManyRedirects publicly as documented.
#3818 <https://github.com/aio-libs/aiohttp/issues/3818>
_ -
Fix missing brackets for IPv6 in proxy CONNECT request
#3841 <https://github.com/aio-libs/aiohttp/issues/3841>
_ -
Make the signature of
aiohttp.test_utils.TestClient.request
matchasyncio.ClientSession.request
according to the docs
#3852 <https://github.com/aio-libs/aiohttp/issues/3852>
_ -
Use correct style for re-exported imports, makes mypy
--strict
mode happy.
#3868 <https://github.com/aio-libs/aiohttp/issues/3868>
_ -
Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View
#3880 <https://github.com/aio-libs/aiohttp/issues/3880>
_ -
Made cython HTTP parser set Reason-Phrase of the response to an empty string if it is missing.
#3906 <https://github.com/aio-libs/aiohttp/issues/3906>
_ -
Add URL to the string representation of ClientResponseError.
#3959 <https://github.com/aio-libs/aiohttp/issues/3959>
_ -
Accept
istr
keys inLooseHeaders
type hints.
#3976 <https://github.com/aio-libs/aiohttp/issues/3976>
_ -
Fixed race conditions in resolve_host caching and throttling when tracing is enabled.
#4013 <https://github.com/aio-libs/aiohttp/issues/4013>
-
For URLs like "unix://localhost/..." set Host HTTP header to "localhost" instead of "localhost:None".
#4039 <https://github.com/aio-libs/aiohttp/issues/4039>
_
Improved Documentation
- Modify documentation for Background Tasks to remove deprecated usage of event loop.
#3526 <https://github.com/aio-libs/aiohttp/issues/3526>
_ - use
if __name__ == '__main__':
in server examples.
#3775 <https://github.com/aio-libs/aiohttp/issues/3775>
_ - Update documentation reference to the default access logger.
#3783 <https://github.com/aio-libs/aiohttp/issues/3783>
_ - Improve documentation for
web.BaseRequest.path
andweb.BaseRequest.raw_path
.
#3791 <https://github.com/aio-libs/aiohttp/issues/3791>
_ - Removed deprecation warning in tracing example docs
#3964 <https://github.com/aio-libs/aiohttp/issues/3964>
_
aiohttp 3.5.4 bugfix release
Changes
- Fix stream
.read()
/.readany()
/.iter_any()
which used to return a
partial content only in case of compressed content
#3525 <https://github.com/aio-libs/aiohttp/issues/3525>
_
aiohttp 3.5.3 bugfix release
Changes
- 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.
#3504 <https://github.com/aio-libs/aiohttp/issues/3504>
_ - Fix
aiohttp.ClientTimeout
type annotations to acceptNone
for fields
#3511 <https://github.com/aio-libs/aiohttp/issues/3511>
_ - Send custom per-request cookies even if session jar is empty
#3515 <https://github.com/aio-libs/aiohttp/issues/3515>
_ - Restore Linux binary wheels publishing on PyPI