From 6a5ab96bd9cb404b4abfd5160fe8f34a29d941e5 Mon Sep 17 00:00:00 2001 From: Andrew Svetlov Date: Wed, 9 Oct 2019 19:07:42 +0300 Subject: [PATCH] Bump to 3.6.2 --- CHANGES.rst | 252 +++++++++++++++++++++++++++++-------------- CHANGES/2469.doc | 1 - CHANGES/3808.bugfix | 1 - CHANGES/4063.bugfix | 1 - CHANGES/4077.feature | 1 - CHANGES/4097.bugfix | 1 - CHANGES/4100.doc | 1 - CHANGES/4102.misc | 1 - CHANGES/4106.bugfix | 1 - CHANGES/4108.doc | 1 - CHANGES/4125.feature | 1 - aiohttp/__init__.py | 2 +- 12 files changed, 173 insertions(+), 91 deletions(-) delete mode 100644 CHANGES/2469.doc delete mode 100644 CHANGES/3808.bugfix delete mode 100644 CHANGES/4063.bugfix delete mode 100644 CHANGES/4077.feature delete mode 100644 CHANGES/4097.bugfix delete mode 100644 CHANGES/4100.doc delete mode 100644 CHANGES/4102.misc delete mode 100644 CHANGES/4106.bugfix delete mode 100644 CHANGES/4108.doc delete mode 100644 CHANGES/4125.feature diff --git a/CHANGES.rst b/CHANGES.rst index 8eef19d9af..5a3265f861 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -14,6 +14,53 @@ Changelog .. towncrier release notes start +3.6.2 (2019-10-09) +================== + +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 `_ + + +---- + + 3.6.1 (2019-09-19) ================== @@ -53,10 +100,12 @@ Improved Documentation 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 `_ +- 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 `_ @@ -74,9 +123,11 @@ Bugfixes 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, ...]`. +- 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 `_ @@ -104,22 +155,23 @@ Bugfixes `#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 `_ +- 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 `_ +- 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 `_ +- For URLs like "unix://localhost/..." set Host HTTP header to "localhost" instead of + "localhost:None". `#4039 `_ Improved Documentation @@ -157,8 +209,9 @@ Bugfixes 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 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 @@ -174,9 +227,10 @@ Bugfixes 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 `_ +- ``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 `_ @@ -184,13 +238,10 @@ 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. - `#3035 `_ +- 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. @@ -198,12 +249,13 @@ Bugfixes - 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 `_ +- 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 `_ @@ -237,48 +289,75 @@ 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 `_) +- 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 `_) +- 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 `_) +- 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 `_) @@ -286,9 +365,12 @@ Bugfixes 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 `_) +- 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 `_) @@ -296,17 +378,27 @@ 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 `_) +- 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 `_) +- 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 diff --git a/CHANGES/2469.doc b/CHANGES/2469.doc deleted file mode 100644 index f1040ca4d3..0000000000 --- a/CHANGES/2469.doc +++ /dev/null @@ -1 +0,0 @@ -Added minimal required logging configuration to logging documentation. diff --git a/CHANGES/3808.bugfix b/CHANGES/3808.bugfix deleted file mode 100644 index 4691f24137..0000000000 --- a/CHANGES/3808.bugfix +++ /dev/null @@ -1 +0,0 @@ -Reset the ``sock_read`` timeout each time data is received for a ``aiohttp.client`` response. \ No newline at end of file diff --git a/CHANGES/4063.bugfix b/CHANGES/4063.bugfix deleted file mode 100644 index 4a7e73b51b..0000000000 --- a/CHANGES/4063.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix handling of expired cookies so they are not stored in CookieJar. diff --git a/CHANGES/4077.feature b/CHANGES/4077.feature deleted file mode 100644 index 47fd5e1b22..0000000000 --- a/CHANGES/4077.feature +++ /dev/null @@ -1 +0,0 @@ -Made exceptions pickleable. Also changed the repr of some exceptions. \ No newline at end of file diff --git a/CHANGES/4097.bugfix b/CHANGES/4097.bugfix deleted file mode 100644 index af521a4e6f..0000000000 --- a/CHANGES/4097.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix misleading message in the string representation of `ClientConnectorError`; `self.ssl == None` means certification checks relaxed, not SSL disabled diff --git a/CHANGES/4100.doc b/CHANGES/4100.doc deleted file mode 100644 index dc2335d50a..0000000000 --- a/CHANGES/4100.doc +++ /dev/null @@ -1 +0,0 @@ -Update docs to reflect proxy support. diff --git a/CHANGES/4102.misc b/CHANGES/4102.misc deleted file mode 100644 index d546c45c19..0000000000 --- a/CHANGES/4102.misc +++ /dev/null @@ -1 +0,0 @@ -web.Application and web.BaseRequest objects now has a boolean value of True \ No newline at end of file diff --git a/CHANGES/4106.bugfix b/CHANGES/4106.bugfix deleted file mode 100644 index 26bf89bba2..0000000000 --- a/CHANGES/4106.bugfix +++ /dev/null @@ -1 +0,0 @@ -Don't clobber HTTP status when using FileResponse. diff --git a/CHANGES/4108.doc b/CHANGES/4108.doc deleted file mode 100644 index 157800870e..0000000000 --- a/CHANGES/4108.doc +++ /dev/null @@ -1 +0,0 @@ -Fix typo in code example in testing docs. diff --git a/CHANGES/4125.feature b/CHANGES/4125.feature deleted file mode 100644 index 43dd2638b4..0000000000 --- a/CHANGES/4125.feature +++ /dev/null @@ -1 +0,0 @@ -Use `Iterable` hint instead of `Sequence` for `Application` `middleware` parameter. diff --git a/aiohttp/__init__.py b/aiohttp/__init__.py index 1ff0561006..58149e26c3 100644 --- a/aiohttp/__init__.py +++ b/aiohttp/__init__.py @@ -1,4 +1,4 @@ -__version__ = '3.6.2a2' +__version__ = '3.6.2' from typing import Tuple # noqa