aio-libs/aiohttp
### [`v3.6.2`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#362-2019-10-09)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.6.1...v3.6.2)
==================
## Features
- Made exceptions pickleable. Also changed the repr of some exceptions.
`#4077 `\_
- Use `Iterable` type hint instead of `Sequence` for `Application` _middleware_
parameter. `#4125 `\_
## Bugfixes
- Reset the `sock_read` timeout each time data is received for a
`aiohttp.ClientResponse`. `#3808
`\_
- Fix 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 `#4097
`\_
- Don't clobber HTTP status when using FileResponse.
`#4106 `\_
## Improved Documentation
- Added minimal required logging configuration to logging documentation.
`#2469 `\_
- Update docs to reflect proxy support.
`#4100 `\_
- Fix typo in code example in testing docs.
`#4108 `\_
## Misc
- `#4102 `\_
* * *
### [`v3.6.1`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#361-2019-09-19)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.6.0...v3.6.1)
==================
## Features
- Compatibility with Python 3.8.
`#4056 `\_
## Bugfixes
- correct some exception string format
`#4068 `\_
- Emit a warning when `ssl.OP_NO_COMPRESSION` is
unavailable because the runtime is built against
an outdated OpenSSL.
`#4052 `\_
- Update multidict requirement to >= 4.5
`#4057 `\_
## Improved Documentation
- Provide pytest-aiohttp namespace for pytest fixtures in docs.
`#3723 `\_
* * *
### [`v3.6.0`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#360-2019-09-06)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.5.4...v3.6.0)
==================
## 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. `#3798
`\_
- Accept 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 with
`asyncio.run()`. `#3587 `\_
- `Signal` type annotation changed from `Signal[Callable[['TraceConfig'],
Awaitable[None]]]` to `Signal[Callable[ClientSession, SimpleNamespace, ...]`.
`#3595 `\_
- Use 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
`#3628 `\_
- Cleanup 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`.
`#3644 `_
- Properly handle ConnectionResetError, to silence the "Cannot write to closing
transport" exception when clients disconnect uncleanly.
`#3648 `\_
- Suppress pytest warnings due to `test_utils` classes
`#3660 `\_
- Fix 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` match
`asyncio.ClientSession.request` according to the docs `#3852
`\_
- Use correct style for re-exported imports, makes mypy `--strict` mode happy.
`#3868 `\_
- Fixed 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 in `LooseHeaders` type hints.
`#3976 `\_
- Fixed 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.
`#3775 `\_
- Update documentation reference to the default access logger.
`#3783 `\_
- Improve documentation for `web.BaseRequest.path` and `web.BaseRequest.raw_path`.
`#3791 `\_
- Removed deprecation warning in tracing example docs
`#3964 `\_
* * *
### [`v3.5.4`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#354-2019-01-12)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.5.3...v3.5.4)
==================
## Bugfixes
- Fix stream `.read()` / `.readany()` / `.iter_any()` which used to return a
partial content only in case of compressed content
`#3525 `\_
### [`v3.5.3`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#353-2019-01-10)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.5.2...v3.5.3)
==================
## Bugfixes
- Fix type stubs for `aiohttp.web.run_app(access_log=True)` and fix edge case of
`access_log=True` and the event loop being in debug mode. `#3504
`\_
- Fix `aiohttp.ClientTimeout` type annotations to accept `None` for fields
`#3511 `\_
- Send custom per-request cookies even if session jar is empty
`#3515 `\_
- Restore Linux binary wheels publishing on PyPI
* * *
### [`v3.5.2`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#352-2019-01-08)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.5.1...v3.5.2)
==================
## Features
- `FileResponse` from `web_fileresponse.py` uses a `ThreadPoolExecutor` to work
with files asynchronously. I/O based payloads from `payload.py` uses a
`ThreadPoolExecutor` to work with I/O objects asynchronously. `#3313
`\_
- Internal Server Errors in plain text if the browser does not support HTML.
`#3483 `\_
## 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. `#3035 `\_
- Log suppressed exceptions in `GunicornWebWorker`.
`#3464 `\_
- Remove 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` with `collections.abc.MutableMapping` to
avoid a deprecation warning. `#3480
`\_
- `Payload.size` type annotation changed from `Optional[float]` to
`Optional[int]`. `#3484 `\_
- Ignore done tasks when cancels pending activities on `web.run_app` finalization.
`#3497 `\_
## Improved Documentation
- Add documentation for `aiohttp.web.HTTPException`.
`#3490 `\_
## Misc
- `#3487 `\_
* * *
### [`v3.5.1`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#351-2018-12-24)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.5.0...v3.5.1)
====================
- Fix a regression about `ClientSession._requote_redirect_url` modification in debug
mode.
### [`v3.5.0`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#350-2018-12-22)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.4.4...v3.5.0)
====================
## 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 by `test_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 to `Response` 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` in `aiohttp.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 logger````aiohttp.access`is used, access logs will now be output
using a *stderr*`StreamHandler`if no handlers are attached. Furthermore, if the
default logger has no log level set, the log level will be set to`DEBUG``. (`#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` via `handler_args` (`#3158
`\_)
- Return empty bytes with end-of-chunk marker in empty stream reader. (`#3186
`\_)
- Accept `CIMultiDictProxy` instances for `headers` argument in `web.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
- Improve documentation of `Application.make_handler` parameters. (`#3152
`\_)
- Fix BaseRequest.raw_headers doc. (`#3215
`_)
- Fix typo in TypeError exception reason in `web.Application._handle` (`#3229
`\_)
- Make server access log format placeholder %b documentation reflect
behavior and docstring. (`#3307 `\_)
## 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()` and `Connection.writer`. Both methods were broken
for more than 2 years. (`#3358 `\_)
- Deprecate `app.loop`, `request.loop`, `client.loop` and `connector.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:` and `await
connector.close()` instead. (`#3417
`\_)
- Deprecate obsolete `read_timeout` and `conn_timeout` in `ClientSession`
constructor. (`#3438 `\_)
## Misc
- [#3341](https://togithub.com/aio-libs/aiohttp/issues/3341), [#3351](https://togithub.com/aio-libs/aiohttp/issues/3351)
### [`v3.4.4`](https://togithub.com/aio-libs/aiohttp/releases/v3.4.4)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.4.3...v3.4.4)
## Changes
- Fix installation from sources when compiling toolkit is not available (`#3241 `\_)
### [`v3.4.3`](https://togithub.com/aio-libs/aiohttp/releases/v3.4.3)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.4.2...v3.4.3)
## Changes
- Add `app.pre_frozen` state to properly handle startup signals in sub-applications. (`#3237 `\_)
### [`v3.4.2`](https://togithub.com/aio-libs/aiohttp/releases/v3.4.2)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.4.1...v3.4.2)
## Changes
- Fix `iter_chunks` type annotation (`#3230 `\_)
### [`v3.4.1`](https://togithub.com/aio-libs/aiohttp/releases/v3.4.1)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.4.0...v3.4.1)
Fixed regressions for HTTP headers processing and documentation publishing
# Changes
- Fix empty header parsing regression. (`#3218 `\_)
- Fix BaseRequest.raw_headers doc. (`#3215 `_)
- Fix documentation building on ReadTheDocs (`#3221 `\_)
### [`v3.4.0`](https://togithub.com/aio-libs/aiohttp/releases/v3.4.0)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.3.2...v3.4.0)
# Changes
## Features
- Add type hints (`#3049 `\_)
- Add `raise_for_status` request parameter (`#3073 `\_)
- Add type hints to HTTP client (`#3092 `\_)
- Minor server optimizations (`#3095 `\_)
- Preserve the cause when `HTTPException` is raised from another exception. (`#3096 `\_)
- Add `close_boundary` option in `MultipartWriter.write` method. Support streaming (`#3104 `\_)
- Added a `remove_slash` option to the `normalize_path_middleware` factory. (`#3173 `\_)
- The class `AbstractRouteDef` is importable from `aiohttp.web`. (`#3183 `\_)
## Bugfixes
- Prevent double closing when client connection is released before the
last `data_received()` callback. (`#3031 `\_)
- Make redirect with `normalize_path_middleware` work when using url encoded paths. (`#3051 `\_)
- Postpone web task creation to connection establishment. (`#3052 `\_)
- Fix `sock_read` timeout. (`#3053 `\_)
- When using a server-request body as the `data=` argument of a client request, iterate over the content with `readany` instead of `readline` to avoid `Line too long` errors. (`#3054 `\_)
- fix `UrlDispatcher` has no attribute `add_options`, add `web.options` (`#3062 `\_)
- correct filename in content-disposition with multipart body (`#3064 `\_)
- Many HTTP proxies has buggy keepalive support.
Let's not reuse connection but close it after processing every response. (`#3070 `\_)
- raise 413 "Payload Too Large" rather than raising ValueError in request.post()
Add helpful debug message to 413 responses (`#3087 `\_)
- Fix `StreamResponse` equality, now that they are `MutableMapping` objects. (`#3100 `\_)
- Fix server request objects comparison (`#3116 `\_)
- Do not hang on `206 Partial Content` response with `Content-Encoding: gzip` (`#3123 `\_)
- Fix timeout precondition checkers (`#3145 `\_)
## Improved Documentation
- Add a new FAQ entry that clarifies that you should not reuse response
objects in middleware functions. (`#3020 `\_)
- Add FAQ section "Why is creating a ClientSession outside of an event loop dangerous?" (`#3072 `\_)
- Fix link to Rambler (`#3115 `\_)
- Fix TCPSite documentation on the Server Reference page. (`#3146 `\_)
- Fix documentation build configuration file for Windows. (`#3147 `\_)
- Remove no longer existing lingering_timeout parameter of Application.make_handler from documentation. (`#3151 `_)
- Mention that `app.make_handler` is deprecated, recommend to use runners
API instead. (`#3157 `\_)
## Deprecations and Removals
- Drop `loop.current_task()` from `helpers.current_task()` (`#2826 `\_)
- Drop `reader` parameter from `request.multipart()`. (`#3090 `\_)
### [`v3.3.2`](https://togithub.com/aio-libs/aiohttp/releases/v3.3.2)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.3.1...v3.3.2)
Bugfix release
## Changes
- Many HTTP proxies has buggy keepalive support. Let's not reuse connection but
close it after processing every response. ([#3070](https://togithub.com/aio-libs/aiohttp/issues/3070))
- Provide vendor source files in tarball ([#3076](https://togithub.com/aio-libs/aiohttp/issues/3076))
### [`v3.3.1`](https://togithub.com/aio-libs/aiohttp/releases/v3.3.1)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.3.0...v3.3.1)
Bugfix release.
## Changes
- Fix `sock_read` timeout. ([#3053](https://togithub.com/aio-libs/aiohttp/issues/3053))
- When using a server-request body as the `data=` argument of a client request,
iterate over the content with `readany` instead of `readline` to avoid `Line
too long` errors. ([#3054](https://togithub.com/aio-libs/aiohttp/issues/3054))
### [`v3.3.0`](https://togithub.com/aio-libs/aiohttp/releases/v3.3.0)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.2.1...v3.3.0)
The main change is introducing new client timeouts.
The release has many new improvements and bugfixes as well.
# Changes
## Features
- Raise `ConnectionResetError` instead of `CancelledError` on trying to
write to a closed stream. [#2499](https://togithub.com/aio-libs/aiohttp/issues/2499)
- Implement `ClientTimeout` class and support socket read timeout. [#2768](https://togithub.com/aio-libs/aiohttp/issues/2768)
- Enable logging when `aiohttp.web` is used as a program [#2956](https://togithub.com/aio-libs/aiohttp/issues/2956)
- Add canonical property to resources [#2968](https://togithub.com/aio-libs/aiohttp/issues/2968)
- Forbid reading response BODY after release [#2983](https://togithub.com/aio-libs/aiohttp/issues/2983)
- Implement base protocol class to avoid a dependency from internal
`asyncio.streams.FlowControlMixin` [#2986](https://togithub.com/aio-libs/aiohttp/issues/2986)
- Cythonize `@helpers.reify`, 5% boost on macro benchmark [#2995](https://togithub.com/aio-libs/aiohttp/issues/2995)
- Optimize HTTP parser [#3015](https://togithub.com/aio-libs/aiohttp/issues/3015)
- Implement `runner.addresses` property. [#3036](https://togithub.com/aio-libs/aiohttp/issues/3036)
- Use `bytearray` instead of a list of `bytes` in websocket reader. It
improves websocket message reading a little. [#3039](https://togithub.com/aio-libs/aiohttp/issues/3039)
- Remove heartbeat on closing connection on keepalive timeout. The used hack
violates HTTP protocol. [#3041](https://togithub.com/aio-libs/aiohttp/issues/3041)
- Limit websocket message size on reading to 4 MB by default. [#3045](https://togithub.com/aio-libs/aiohttp/issues/3045)
## Bugfixes
- Don't reuse a connection with the same URL but different proxy/TLS settings
[#2981](https://togithub.com/aio-libs/aiohttp/issues/2981)
- When parsing the Forwarded header, the optional port number is now preserved.
[#3009](https://togithub.com/aio-libs/aiohttp/issues/3009)
## Improved Documentation
- Make Change Log more visible in docs [#3029](https://togithub.com/aio-libs/aiohttp/issues/3029)
- Make style and grammar improvements on the FAQ page. [#3030](https://togithub.com/aio-libs/aiohttp/issues/3030)- Document that signal handlers should be async functions since aiohttp 3.0
[#3032](https://togithub.com/aio-libs/aiohttp/issues/3032)
## Deprecations and Removals
- Deprecate custom application's router. [#3021](https://togithub.com/aio-libs/aiohttp/issues/3021)
### [`v3.2.1`](https://togithub.com/aio-libs/aiohttp/releases/v3.2.1)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.2.0...v3.2.1)
## Changes
- Don't reuse a connection with the same URL but different proxy/TLS settings
([#2981](https://togithub.com/aio-libs/aiohttp/issues/2981))
### [`v3.2.0`](https://togithub.com/aio-libs/aiohttp/releases/v3.2.0)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.1.3...v3.2.0)
## Changes
## Features
- Raise `TooManyRedirects` exception when client gets redirected too many
times instead of returning last response. (`#2631 `\_)
- Extract route definitions into separate `web_routedef.py` file (`#2876 `\_)
- Raise an exception on request body reading after sending response. (`#2895 `\_)
- ClientResponse and RequestInfo now have real_url property, which is request
url without fragment part being stripped (`#2925 `_)
- Speed up connector limiting (`#2937 `\_)
- Added and links property for ClientResponse object (`#2948 `\_)
- Add `request.config_dict` for exposing nested applications data. (`#2949 `\_)
- Speed up HTTP headers serialization, server micro-benchmark runs 5% faster
now. (`#2957 `\_)
- Apply assertions in debug mode only (`#2966 `\_)
## Bugfixes
- expose property `app` for TestClient (`#2891 `\_)
- Call on_chunk_sent when write_eof takes as a param the last chunk (`#2909 `_)
- A closing bracket was added to **repr** of resources (`#2935 `\_)
- Fix compression of FileResponse (`#2942 `\_)
- Fixes some bugs in the limit connection feature (`#2964 `\_)
## Improved Documentation
- Drop `async_timeout` usage from documentation for client API in favor of
`timeout` parameter. (`#2865 `\_)
- Improve Gunicorn logging documentation (`#2921 `\_)
- Replace multipart writer `.serialize()` method with `.write()` in
documentation. (`#2965 `\_)
## Deprecations and Removals
- Deprecate Application.make_handler() (`#2938 `_)
## Misc
- [#2958](https://togithub.com/aio-libs/aiohttp/issues/2958)
### [`v3.1.3`](https://togithub.com/aio-libs/aiohttp/releases/v3.1.3)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.1.2...v3.1.3)
Bugfix release
## Changes
- Fix cancellation broadcast during DNS resolve (`#2910 `\_)
### [`v3.1.2`](https://togithub.com/aio-libs/aiohttp/releases/v3.1.2)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.1.1...v3.1.2)
Bugfix release, no new features against 3.1.0
# Changes
- Make `LineTooLong` exception more detailed about actual data size ([#2863](https://togithub.com/aio-libs/aiohttp/issues/2863))
- Call `on_chunk_sent` when `write_eof()` takes as a param the last chunk ([#2909](https://togithub.com/aio-libs/aiohttp/issues/2909))
### [`v3.1.1`](https://togithub.com/aio-libs/aiohttp/releases/v3.1.1)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.1.0...v3.1.1)
# Changes
- Support _asynchronous iterators_ (and _asynchronous generators_ as
well) in both client and server API as request / response BODY
payloads. ([#2802](https://togithub.com/aio-libs/aiohttp/issues/2802))
### [`v3.1.0`](https://togithub.com/aio-libs/aiohttp/releases/v3.1.0)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.9...v3.1.0)
Welcome to aiohttp 3.1 release.
This is an _incremental_ release, fully backward compatible with _aiohttp 3.0_.
But we have added several new features.
The most visible one is `app.add_routes()` (an alias for existing
`app.router.add_routes()`. The addition is very important because
all _aiohttp_ docs now uses `app.add_routes()` call in code
snippets. All your existing code still do register routes / resource
without any warning but you've got the idea for a favorite way: noisy
`app.router.add_get()` is replaced by `app.add_routes()`.
The library does not make a preference between decorators::
routes = web.RouteTableDef()
[@routes](https://togithub.com/routes).get('/')
async def hello(request):
return web.Response(text="Hello, world")
app.add_routes(routes)
and route tables as a list::
async def hello(request):
return web.Response(text="Hello, world")
app.add_routes([web.get('/', hello)])
Both ways are equal, user may decide basing on own code taste.
Also we have a lot of minor features, bug fixes and documentation
updates, see below.
## Features
- Relax JSON content-type checking in the `ClientResponse.json()` to allow
"application/xxx+json" instead of strict "application/json". ([#2206](https://togithub.com/aio-libs/aiohttp/issues/2206))
- Bump C HTTP parser to version 2.8 ([#2730](https://togithub.com/aio-libs/aiohttp/issues/2730))
- Accept a coroutine as an application factory in `web.run_app` and gunicorn
worker. ([#2739](https://togithub.com/aio-libs/aiohttp/issues/2739))
- Implement application cleanup context (`app.cleanup_ctx` property). ([#2747](https://togithub.com/aio-libs/aiohttp/issues/2747))
- Make `writer.write_headers` a coroutine. ([#2762](https://togithub.com/aio-libs/aiohttp/issues/2762))
- Add tracking signals for getting request/response bodies. ([#2767](https://togithub.com/aio-libs/aiohttp/issues/2767))
- Deprecate ClientResponseError.code in favor of .status to keep similarity
with response classes. ([#2781](https://togithub.com/aio-libs/aiohttp/issues/2781))
- Implement `app.add_routes()` method. ([#2787](https://togithub.com/aio-libs/aiohttp/issues/2787))
- Implement `web.static()` and `RouteTableDef.static()` API. ([#2795](https://togithub.com/aio-libs/aiohttp/issues/2795))
- Install a test event loop as default by `asyncio.set_event_loop()`. The
change affects aiohttp test utils but backward compatibility is not broken
for 99.99% of use cases. ([#2804](https://togithub.com/aio-libs/aiohttp/issues/2804))
- Refactor `ClientResponse` constructor: make logically required constructor
arguments mandatory, drop `_post_init()` method. ([#2820](https://togithub.com/aio-libs/aiohttp/issues/2820))
- Use `app.add_routes()` in server docs everywhere ([#2830](https://togithub.com/aio-libs/aiohttp/issues/2830))
- Websockets refactoring, all websocket writer methods are converted into
coroutines. ([#2836](https://togithub.com/aio-libs/aiohttp/issues/2836))
- Provide `Content-Range` header for `Range` requests ([#2844](https://togithub.com/aio-libs/aiohttp/issues/2844))
## Bugfixes
- Fix websocket client return EofStream. ([#2784](https://togithub.com/aio-libs/aiohttp/issues/2784))
- Fix websocket demo. ([#2789](https://togithub.com/aio-libs/aiohttp/issues/2789))
- Property `BaseRequest.http_range` now returns a python-like slice when
requesting the tail of the range. It's now indicated by a negative value in
`range.start` rather then in `range.stop` ([#2805](https://togithub.com/aio-libs/aiohttp/issues/2805))
- Close a connection if an unexpected exception occurs while sending a request
([#2827](https://togithub.com/aio-libs/aiohttp/issues/2827))
- Fix firing DNS tracing events. ([#2841](https://togithub.com/aio-libs/aiohttp/issues/2841))
## Improved Documentation
- Change `ClientResponse.json()` documentation to reflect that it now
allows "application/xxx+json" content-types ([#2206](https://togithub.com/aio-libs/aiohttp/issues/2206))
- Document behavior when cchardet detects encodings that are unknown to Python.
([#2732](https://togithub.com/aio-libs/aiohttp/issues/2732))
- Add diagrams for tracing request life style. ([#2748](https://togithub.com/aio-libs/aiohttp/issues/2748))
- Drop removed functionality for passing `StreamReader` as data at client
side. ([#2793](https://togithub.com/aio-libs/aiohttp/issues/2793))
### [`v3.0.9`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.9)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.8...v3.0.9)
## Changes
- Close a connection if an unexpected exception occurs while sending a request
([#2827](https://togithub.com/aio-libs/aiohttp/issues/2827))
### [`v3.0.8`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.8)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.7...v3.0.8)
## Changes
- Use `asyncio.current_task()` on Python 3.7 ([#2825](https://togithub.com/aio-libs/aiohttp/issues/2825))
### [`v3.0.7`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.7)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.6...v3.0.7)
Fixed previously broken SSL proxies (http proxies with upgrade to HTTPS by CONNECT method).
## Changes
- Fix SSL proxy support by client. ([#2810](https://togithub.com/aio-libs/aiohttp/issues/2810))
- Restore a imperative check in `setup.py` for python version. The check
works in parallel to environment marker. As effect a error about unsupported
Python versions is raised even on outdated systems with very old
`setuptools` version installed. ([#2813](https://togithub.com/aio-libs/aiohttp/issues/2813))
### [`v3.0.6`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.6)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.5...v3.0.6)
## Changes
- Add `_reuse_address` and `_reuse_port` to
`web_runner.TCPSite.__slots__`. ([#2792](https://togithub.com/aio-libs/aiohttp/issues/2792))
### [`v3.0.5`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.5)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.4...v3.0.5)
The release is pretty important, as well as bug fixes for aiohttp 3.0.4
Update to aiohttp 3.0.5 is highly recommended for aiohttp server code.
## Changes
- Fix `InvalidStateError` on processing a sequence of two
`RequestHandler.data_received` calls on web server. ([#2773](https://togithub.com/aio-libs/aiohttp/issues/2773))
### [`v3.0.4`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.4)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.3...v3.0.4)
## Changes
- Fix `IndexError` in HTTP request handling by server. ([#2752](https://togithub.com/aio-libs/aiohttp/issues/2752))
- Fix MultipartWriter.append\* no longer returning part/payload. ([#2759](https://togithub.com/aio-libs/aiohttp/issues/2759))
### [`v3.0.3`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.3)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.2...v3.0.3)
## Changes
- Relax `attrs` dependency to minimal actually supported version
17.0.3 The change allows to avoid version conflicts with currently
existing test tools.
### [`v3.0.2`](https://togithub.com/aio-libs/aiohttp/releases/v3.0.2)
[Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.0.1...v3.0.2)
Upgrade is highly recommended for Windows users.
## Changes
- Prevent Windows absolute URLs in static files. Paths like
`/static/D:\path` and `/static/\\hostname\drive\path` are
forbidden.
Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you tick the rebase/retry checkbox below.
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
==3.0.1
->==3.6.2
Release Notes
aio-libs/aiohttp
### [`v3.6.2`](https://togithub.com/aio-libs/aiohttp/blob/master/CHANGES.rst#362-2019-10-09) [Compare Source](https://togithub.com/aio-libs/aiohttp/compare/v3.6.1...v3.6.2) ================== ## Features - Made exceptions pickleable. Also changed the repr of some exceptions. `#4077Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or if you tick the rebase/retry checkbox below.
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.