Changelogs » Aiohttp
PyUp Safety actively tracks 304,723 Python packages for vulnerabilities and notifies you when to upgrade.
Aiohttp
3.7.4.post0
======================== Misc ---- - Bumped upper bound of the ``chardet`` runtime dependency to allow their v4.0 version stream. `5366 <https://github.com/aio-libs/aiohttp/issues/5366>`_ ----
3.7.4
================== Bugfixes -------- - **(SECURITY BUG)** Started preventing open redirects in the ``aiohttp.web.normalize_path_middleware`` middleware. For more details, see https://github.com/aio-libs/aiohttp/security/advisories/GHSA-v6wp-4m6f-gcjg. Thanks to `Beast Glatisant <https://github.com/g147>`__ for finding the first instance of this issue and `Jelmer Vernooij <https://jelmer.uk/>`__ for reporting and tracking it down in aiohttp. `5497 <https://github.com/aio-libs/aiohttp/issues/5497>`_ - Fix interpretation difference of the pure-Python and the Cython-based HTTP parsers construct a ``yarl.URL`` object for HTTP request-target. Before this fix, the Python parser would turn the URI's absolute-path for ``//some-path`` into ``/`` while the Cython code preserved it as ``//some-path``. Now, both do the latter. `5498 <https://github.com/aio-libs/aiohttp/issues/5498>`_ ----
3.7.3 not secure
================== Features -------- - Use Brotli instead of brotlipy `3803 <https://github.com/aio-libs/aiohttp/issues/3803>`_ - Made exceptions pickleable. Also changed the repr of some exceptions. `4077 <https://github.com/aio-libs/aiohttp/issues/4077>`_ Bugfixes -------- - Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. `3532 <https://github.com/aio-libs/aiohttp/issues/3532>`_ - Fix ``web_middlewares.normalize_path_middleware`` behavior for patch without slash. `3669 <https://github.com/aio-libs/aiohttp/issues/3669>`_ - Fix overshadowing of overlapped sub-applications prefixes. `3701 <https://github.com/aio-libs/aiohttp/issues/3701>`_ - Make `BaseConnector.close()` a coroutine and wait until the client closes all connections. Drop deprecated "with Connector():" syntax. `3736 <https://github.com/aio-libs/aiohttp/issues/3736>`_ - Reset the ``sock_read`` timeout each time data is received for a ``aiohttp.client`` response. `3808 <https://github.com/aio-libs/aiohttp/issues/3808>`_ - Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View `3880 <https://github.com/aio-libs/aiohttp/issues/3880>`_ - Fixed querying the address families from DNS that the current host supports. `5156 <https://github.com/aio-libs/aiohttp/issues/5156>`_ - Change return type of MultipartReader.__aiter__() and BodyPartReader.__aiter__() to AsyncIterator. `5163 <https://github.com/aio-libs/aiohttp/issues/5163>`_ - Provide x86 Windows wheels. `5230 <https://github.com/aio-libs/aiohttp/issues/5230>`_ Improved Documentation ---------------------- - Add documentation for ``aiohttp.web.FileResponse``. `3958 <https://github.com/aio-libs/aiohttp/issues/3958>`_ - Removed deprecation warning in tracing example docs `3964 <https://github.com/aio-libs/aiohttp/issues/3964>`_ - Fixed wrong "Usage" docstring of ``aiohttp.client.request``. `4603 <https://github.com/aio-libs/aiohttp/issues/4603>`_ - Add aiohttp-pydantic to third party libraries `5228 <https://github.com/aio-libs/aiohttp/issues/5228>`_ Misc ---- - `4102 <https://github.com/aio-libs/aiohttp/issues/4102>`_ ----
3.7.2 not secure
================== Bugfixes -------- - Fixed static files handling for loops without ``.sendfile()`` support `5149 <https://github.com/aio-libs/aiohttp/issues/5149>`_ ----
3.7.1 not secure
================== 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 the ``hostname`` 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>`_ ----
3.7.0 not secure
================== 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 to ``CookieJar``, 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 from ``sys.exc_info()``. `3557 <https://github.com/aio-libs/aiohttp/issues/3557>`_ - `web.UrlDispatcher.add_routes` and `web.Application.add_routes` return a list of registered `AbstractRoute` 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` and `url` attributes to `TraceRequestChunkSentParams` and `TraceResponseChunkReceivedParams`. `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]`` to ``List[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]`` to ``Optional[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>`_ ----
3.6.3 not secure
================== Bugfixes -------- - Pin yarl to ``<1.6.0`` to avoid buggy behavior that will be fixed by the next aiohttp release.
3.6.2 not secure
================== 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 of ``Sequence`` for ``Application`` *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>`_ ----
3.6.1 not secure
================== 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>`_ ----
3.6.0 not secure
================== 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 with ``asyncio.run()``. `3587 <https://github.com/aio-libs/aiohttp/issues/3587>`_ - ``Signal`` type annotation changed from ``Signal[Callable[['TraceConfig'], Awaitable[None]]]`` to ``Signal[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`` match ``asyncio.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 in ``LooseHeaders`` 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`` and ``web.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>`_ ----
3.5.4 not secure
================== Bugfixes -------- - 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>`_
3.5.3 not secure
================== 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 <https://github.com/aio-libs/aiohttp/issues/3504>`_ - Fix ``aiohttp.ClientTimeout`` type annotations to accept ``None`` 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 ----
3.5.2 not secure
================== 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 <https://github.com/aio-libs/aiohttp/issues/3313>`_ - Internal Server Errors in plain text if the browser does not support HTML. `3483 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/3035>`_ - Log suppressed exceptions in ``GunicornWebWorker``. `3464 <https://github.com/aio-libs/aiohttp/issues/3464>`_ - Remove wildcard imports. `3468 <https://github.com/aio-libs/aiohttp/issues/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 <https://github.com/aio-libs/aiohttp/issues/3471>`_ - Fix handling of chunked+gzipped response when first chunk does not give uncompressed data `3477 <https://github.com/aio-libs/aiohttp/issues/3477>`_ - Replace ``collections.MutableMapping`` with ``collections.abc.MutableMapping`` to avoid a deprecation warning. `3480 <https://github.com/aio-libs/aiohttp/issues/3480>`_ - ``Payload.size`` type annotation changed from ``Optional[float]`` to ``Optional[int]``. `3484 <https://github.com/aio-libs/aiohttp/issues/3484>`_ - Ignore done tasks when cancels pending activities on ``web.run_app`` finalization. `3497 <https://github.com/aio-libs/aiohttp/issues/3497>`_ Improved Documentation ---------------------- - Add documentation for ``aiohttp.web.HTTPException``. `3490 <https://github.com/aio-libs/aiohttp/issues/3490>`_ Misc ---- - `3487 <https://github.com/aio-libs/aiohttp/issues/3487>`_ ----
3.5.1 not secure
==================== - Fix a regression about ``ClientSession._requote_redirect_url`` modification in debug mode.
3.5.0 not secure
==================== Features -------- - The library type annotations are checked in strict mode now. - Add support for setting cookies for individual request (`2387 <https://github.com/aio-libs/aiohttp/pull/2387>`_) - Application.add_domain implementation (`2809 <https://github.com/aio-libs/aiohttp/pull/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 <https://github.com/aio-libs/aiohttp/pull/3174>`_) - Make ``request.url`` accessible when transport is closed. (`3177 <https://github.com/aio-libs/aiohttp/pull/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 <https://github.com/aio-libs/aiohttp/pull/3205>`_) - Enable users to set ``ClientTimeout`` in ``aiohttp.request`` (`3213 <https://github.com/aio-libs/aiohttp/pull/3213>`_) - Don't raise a warning if ``NETRC`` environment variable is not set and ``~/.netrc`` file doesn't exist. (`3267 <https://github.com/aio-libs/aiohttp/pull/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 <https://github.com/aio-libs/aiohttp/pull/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 <https://github.com/aio-libs/aiohttp/pull/3378>`_) - Create a task per request handling. (`3406 <https://github.com/aio-libs/aiohttp/pull/3406>`_) Bugfixes -------- - Enable passing ``access_log_class`` via ``handler_args`` (`3158 <https://github.com/aio-libs/aiohttp/pull/3158>`_) - Return empty bytes with end-of-chunk marker in empty stream reader. (`3186 <https://github.com/aio-libs/aiohttp/pull/3186>`_) - Accept ``CIMultiDictProxy`` instances for ``headers`` argument in ``web.Response`` constructor. (`3207 <https://github.com/aio-libs/aiohttp/pull/3207>`_) - Don't uppercase HTTP method in parser (`3233 <https://github.com/aio-libs/aiohttp/pull/3233>`_) - Make method match regexp RFC-7230 compliant (`3235 <https://github.com/aio-libs/aiohttp/pull/3235>`_) - Add ``app.pre_frozen`` state to properly handle startup signals in sub-applications. (`3237 <https://github.com/aio-libs/aiohttp/pull/3237>`_) - Enhanced parsing and validation of helpers.BasicAuth.decode. (`3239 <https://github.com/aio-libs/aiohttp/pull/3239>`_) - Change imports from collections module in preparation for 3.8. (`3258 <https://github.com/aio-libs/aiohttp/pull/3258>`_) - Ensure Host header is added first to ClientRequest to better replicate browser (`3265 <https://github.com/aio-libs/aiohttp/pull/3265>`_) - Fix forward compatibility with Python 3.8: importing ABCs directly from the collections module will not be supported anymore. (`3273 <https://github.com/aio-libs/aiohttp/pull/3273>`_) - Keep the query string by ``normalize_path_middleware``. (`3278 <https://github.com/aio-libs/aiohttp/pull/3278>`_) - Fix missing parameter ``raise_for_status`` for aiohttp.request() (`3290 <https://github.com/aio-libs/aiohttp/pull/3290>`_) - Bracket IPv6 addresses in the HOST header (`3304 <https://github.com/aio-libs/aiohttp/pull/3304>`_) - Fix default message for server ping and pong frames. (`3308 <https://github.com/aio-libs/aiohttp/pull/3308>`_) - Fix tests/test_connector.py typo and tests/autobahn/server.py duplicate loop def. (`3337 <https://github.com/aio-libs/aiohttp/pull/3337>`_) - Fix false-negative indicator end_of_HTTP_chunk in StreamReader.readchunk function (`3361 <https://github.com/aio-libs/aiohttp/pull/3361>`_) - Release HTTP response before raising status exception (`3364 <https://github.com/aio-libs/aiohttp/pull/3364>`_) - Fix task cancellation when ``sendfile()`` syscall is used by static file handling. (`3383 <https://github.com/aio-libs/aiohttp/pull/3383>`_) - Fix stack trace for ``asyncio.TimeoutError`` which was not logged, when it is caught in the handler. (`3414 <https://github.com/aio-libs/aiohttp/pull/3414>`_) Improved Documentation ---------------------- - Improve documentation of ``Application.make_handler`` parameters. (`3152 <https://github.com/aio-libs/aiohttp/pull/3152>`_) - Fix BaseRequest.raw_headers doc. (`3215 <https://github.com/aio-libs/aiohttp/pull/3215>`_) - Fix typo in TypeError exception reason in ``web.Application._handle`` (`3229 <https://github.com/aio-libs/aiohttp/pull/3229>`_) - Make server access log format placeholder %b documentation reflect behavior and docstring. (`3307 <https://github.com/aio-libs/aiohttp/pull/3307>`_) Deprecations and Removals ------------------------- - Deprecate modification of ``session.requote_redirect_url`` (`2278 <https://github.com/aio-libs/aiohttp/pull/2278>`_) - Deprecate ``stream.unread_data()`` (`3260 <https://github.com/aio-libs/aiohttp/pull/3260>`_) - Deprecated use of boolean in ``resp.enable_compression()`` (`3318 <https://github.com/aio-libs/aiohttp/pull/3318>`_) - Encourage creation of aiohttp public objects inside a coroutine (`3331 <https://github.com/aio-libs/aiohttp/pull/3331>`_) - Drop dead ``Connection.detach()`` and ``Connection.writer``. Both methods were broken for more than 2 years. (`3358 <https://github.com/aio-libs/aiohttp/pull/3358>`_) - Deprecate ``app.loop``, ``request.loop``, ``client.loop`` and ``connector.loop`` properties. (`3374 <https://github.com/aio-libs/aiohttp/pull/3374>`_) - Deprecate explicit debug argument. Use asyncio debug mode instead. (`3381 <https://github.com/aio-libs/aiohttp/pull/3381>`_) - Deprecate body parameter in HTTPException (and derived classes) constructor. (`3385 <https://github.com/aio-libs/aiohttp/pull/3385>`_) - Deprecate bare connector close, use ``async with connector:`` and ``await connector.close()`` instead. (`3417 <https://github.com/aio-libs/aiohttp/pull/3417>`_) - Deprecate obsolete ``read_timeout`` and ``conn_timeout`` in ``ClientSession`` constructor. (`3438 <https://github.com/aio-libs/aiohttp/pull/3438>`_) Misc ---- - 3341, 3351
3.4.4 not secure
================== - Fix installation from sources when compiling toolkit is not available (`3241 <https://github.com/aio-libs/aiohttp/pull/3241>`_)
3.4.3 not secure
================== - Add ``app.pre_frozen`` state to properly handle startup signals in sub-applications. (`3237 <https://github.com/aio-libs/aiohttp/pull/3237>`_)
3.4.2 not secure
================== - Fix ``iter_chunks`` type annotation (`3230 <https://github.com/aio-libs/aiohttp/pull/3230>`_)
3.4.1 not secure
================== - Fix empty header parsing regression. (`3218 <https://github.com/aio-libs/aiohttp/pull/3218>`_) - Fix BaseRequest.raw_headers doc. (`3215 <https://github.com/aio-libs/aiohttp/pull/3215>`_) - Fix documentation building on ReadTheDocs (`3221 <https://github.com/aio-libs/aiohttp/pull/3221>`_)
3.4.0 not secure
================== Features -------- - Add type hints (`3049 <https://github.com/aio-libs/aiohttp/pull/3049>`_) - Add ``raise_for_status`` request parameter (`3073 <https://github.com/aio-libs/aiohttp/pull/3073>`_) - Add type hints to HTTP client (`3092 <https://github.com/aio-libs/aiohttp/pull/3092>`_) - Minor server optimizations (`3095 <https://github.com/aio-libs/aiohttp/pull/3095>`_) - Preserve the cause when `HTTPException` is raised from another exception. (`3096 <https://github.com/aio-libs/aiohttp/pull/3096>`_) - Add `close_boundary` option in `MultipartWriter.write` method. Support streaming (`3104 <https://github.com/aio-libs/aiohttp/pull/3104>`_) - Added a ``remove_slash`` option to the ``normalize_path_middleware`` factory. (`3173 <https://github.com/aio-libs/aiohttp/pull/3173>`_) - The class `AbstractRouteDef` is importable from `aiohttp.web`. (`3183 <https://github.com/aio-libs/aiohttp/pull/3183>`_) Bugfixes -------- - Prevent double closing when client connection is released before the last ``data_received()`` callback. (`3031 <https://github.com/aio-libs/aiohttp/pull/3031>`_) - Make redirect with `normalize_path_middleware` work when using url encoded paths. (`3051 <https://github.com/aio-libs/aiohttp/pull/3051>`_) - Postpone web task creation to connection establishment. (`3052 <https://github.com/aio-libs/aiohttp/pull/3052>`_) - Fix ``sock_read`` timeout. (`3053 <https://github.com/aio-libs/aiohttp/pull/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://github.com/aio-libs/aiohttp/pull/3054>`_) - fix `UrlDispatcher` has no attribute `add_options`, add `web.options` (`3062 <https://github.com/aio-libs/aiohttp/pull/3062>`_) - correct filename in content-disposition with multipart body (`3064 <https://github.com/aio-libs/aiohttp/pull/3064>`_) - Many HTTP proxies has buggy keepalive support. Let's not reuse connection but close it after processing every response. (`3070 <https://github.com/aio-libs/aiohttp/pull/3070>`_) - raise 413 "Payload Too Large" rather than raising ValueError in request.post() Add helpful debug message to 413 responses (`3087 <https://github.com/aio-libs/aiohttp/pull/3087>`_) - Fix `StreamResponse` equality, now that they are `MutableMapping` objects. (`3100 <https://github.com/aio-libs/aiohttp/pull/3100>`_) - Fix server request objects comparison (`3116 <https://github.com/aio-libs/aiohttp/pull/3116>`_) - Do not hang on `206 Partial Content` response with `Content-Encoding: gzip` (`3123 <https://github.com/aio-libs/aiohttp/pull/3123>`_) - Fix timeout precondition checkers (`3145 <https://github.com/aio-libs/aiohttp/pull/3145>`_) Improved Documentation ---------------------- - Add a new FAQ entry that clarifies that you should not reuse response objects in middleware functions. (`3020 <https://github.com/aio-libs/aiohttp/pull/3020>`_) - Add FAQ section "Why is creating a ClientSession outside of an event loop dangerous?" (`3072 <https://github.com/aio-libs/aiohttp/pull/3072>`_) - Fix link to Rambler (`3115 <https://github.com/aio-libs/aiohttp/pull/3115>`_) - Fix TCPSite documentation on the Server Reference page. (`3146 <https://github.com/aio-libs/aiohttp/pull/3146>`_) - Fix documentation build configuration file for Windows. (`3147 <https://github.com/aio-libs/aiohttp/pull/3147>`_) - Remove no longer existing lingering_timeout parameter of Application.make_handler from documentation. (`3151 <https://github.com/aio-libs/aiohttp/pull/3151>`_) - Mention that ``app.make_handler`` is deprecated, recommend to use runners API instead. (`3157 <https://github.com/aio-libs/aiohttp/pull/3157>`_) Deprecations and Removals ------------------------- - Drop ``loop.current_task()`` from ``helpers.current_task()`` (`2826 <https://github.com/aio-libs/aiohttp/pull/2826>`_) - Drop ``reader`` parameter from ``request.multipart()``. (`3090 <https://github.com/aio-libs/aiohttp/pull/3090>`_)
3.3.2 not secure
================== - Many HTTP proxies has buggy keepalive support. Let's not reuse connection but close it after processing every response. (`3070 <https://github.com/aio-libs/aiohttp/pull/3070>`_) - Provide vendor source files in tarball (`3076 <https://github.com/aio-libs/aiohttp/pull/3076>`_)
3.3.1 not secure
================== - Fix ``sock_read`` timeout. (`3053 <https://github.com/aio-libs/aiohttp/pull/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://github.com/aio-libs/aiohttp/pull/3054>`_)
3.3.0 not secure
================== Features -------- - Raise ``ConnectionResetError`` instead of ``CancelledError`` on trying to write to a closed stream. (`2499 <https://github.com/aio-libs/aiohttp/pull/2499>`_) - Implement ``ClientTimeout`` class and support socket read timeout. (`2768 <https://github.com/aio-libs/aiohttp/pull/2768>`_) - Enable logging when ``aiohttp.web`` is used as a program (`2956 <https://github.com/aio-libs/aiohttp/pull/2956>`_) - Add canonical property to resources (`2968 <https://github.com/aio-libs/aiohttp/pull/2968>`_) - Forbid reading response BODY after release (`2983 <https://github.com/aio-libs/aiohttp/pull/2983>`_) - Implement base protocol class to avoid a dependency from internal ``asyncio.streams.FlowControlMixin`` (`2986 <https://github.com/aio-libs/aiohttp/pull/2986>`_) - Cythonize ``helpers.reify``, 5% boost on macro benchmark (`2995 <https://github.com/aio-libs/aiohttp/pull/2995>`_) - Optimize HTTP parser (`3015 <https://github.com/aio-libs/aiohttp/pull/3015>`_) - Implement ``runner.addresses`` property. (`3036 <https://github.com/aio-libs/aiohttp/pull/3036>`_) - Use ``bytearray`` instead of a list of ``bytes`` in websocket reader. It improves websocket message reading a little. (`3039 <https://github.com/aio-libs/aiohttp/pull/3039>`_) - Remove heartbeat on closing connection on keepalive timeout. The used hack violates HTTP protocol. (`3041 <https://github.com/aio-libs/aiohttp/pull/3041>`_) - Limit websocket message size on reading to 4 MB by default. (`3045 <https://github.com/aio-libs/aiohttp/pull/3045>`_) Bugfixes -------- - Don't reuse a connection with the same URL but different proxy/TLS settings (`2981 <https://github.com/aio-libs/aiohttp/pull/2981>`_) - When parsing the Forwarded header, the optional port number is now preserved. (`3009 <https://github.com/aio-libs/aiohttp/pull/3009>`_) Improved Documentation ---------------------- - Make Change Log more visible in docs (`3029 <https://github.com/aio-libs/aiohttp/pull/3029>`_) - Make style and grammar improvements on the FAQ page. (`3030 <https://github.com/aio-libs/aiohttp/pull/3030>`_) - Document that signal handlers should be async functions since aiohttp 3.0 (`3032 <https://github.com/aio-libs/aiohttp/pull/3032>`_) Deprecations and Removals ------------------------- - Deprecate custom application's router. (`3021 <https://github.com/aio-libs/aiohttp/pull/3021>`_) Misc ---- - 3008, 3011
3.2.1 not secure
================== - Don't reuse a connection with the same URL but different proxy/TLS settings (`2981 <https://github.com/aio-libs/aiohttp/pull/2981>`_)
3.2.0 not secure
================== Features -------- - Raise ``TooManyRedirects`` exception when client gets redirected too many times instead of returning last response. (`2631 <https://github.com/aio-libs/aiohttp/pull/2631>`_) - Extract route definitions into separate ``web_routedef.py`` file (`2876 <https://github.com/aio-libs/aiohttp/pull/2876>`_) - Raise an exception on request body reading after sending response. (`2895 <https://github.com/aio-libs/aiohttp/pull/2895>`_) - ClientResponse and RequestInfo now have real_url property, which is request url without fragment part being stripped (`2925 <https://github.com/aio-libs/aiohttp/pull/2925>`_) - Speed up connector limiting (`2937 <https://github.com/aio-libs/aiohttp/pull/2937>`_) - Added and links property for ClientResponse object (`2948 <https://github.com/aio-libs/aiohttp/pull/2948>`_) - Add ``request.config_dict`` for exposing nested applications data. (`2949 <https://github.com/aio-libs/aiohttp/pull/2949>`_) - Speed up HTTP headers serialization, server micro-benchmark runs 5% faster now. (`2957 <https://github.com/aio-libs/aiohttp/pull/2957>`_) - Apply assertions in debug mode only (`2966 <https://github.com/aio-libs/aiohttp/pull/2966>`_) Bugfixes -------- - expose property `app` for TestClient (`2891 <https://github.com/aio-libs/aiohttp/pull/2891>`_) - Call on_chunk_sent when write_eof takes as a param the last chunk (`2909 <https://github.com/aio-libs/aiohttp/pull/2909>`_) - A closing bracket was added to `__repr__` of resources (`2935 <https://github.com/aio-libs/aiohttp/pull/2935>`_) - Fix compression of FileResponse (`2942 <https://github.com/aio-libs/aiohttp/pull/2942>`_) - Fixes some bugs in the limit connection feature (`2964 <https://github.com/aio-libs/aiohttp/pull/2964>`_) Improved Documentation ---------------------- - Drop ``async_timeout`` usage from documentation for client API in favor of ``timeout`` parameter. (`2865 <https://github.com/aio-libs/aiohttp/pull/2865>`_) - Improve Gunicorn logging documentation (`2921 <https://github.com/aio-libs/aiohttp/pull/2921>`_) - Replace multipart writer `.serialize()` method with `.write()` in documentation. (`2965 <https://github.com/aio-libs/aiohttp/pull/2965>`_) Deprecations and Removals ------------------------- - Deprecate Application.make_handler() (`2938 <https://github.com/aio-libs/aiohttp/pull/2938>`_) Misc ---- - 2958
3.1.3 not secure
================== - Fix cancellation broadcast during DNS resolve (`2910 <https://github.com/aio-libs/aiohttp/pull/2910>`_)
3.1.2 not secure
================== - Make ``LineTooLong`` exception more detailed about actual data size (`2863 <https://github.com/aio-libs/aiohttp/pull/2863>`_) - Call ``on_chunk_sent`` when write_eof takes as a param the last chunk (`2909 <https://github.com/aio-libs/aiohttp/pull/2909>`_)
3.1.1 not secure
================== - Support *asynchronous iterators* (and *asynchronous generators* as well) in both client and server API as request / response BODY payloads. (`2802 <https://github.com/aio-libs/aiohttp/pull/2802>`_)
3.1.0 not secure
================== 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.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://github.com/aio-libs/aiohttp/pull/2206>`_) - Bump C HTTP parser to version 2.8 (`2730 <https://github.com/aio-libs/aiohttp/pull/2730>`_) - Accept a coroutine as an application factory in ``web.run_app`` and gunicorn worker. (`2739 <https://github.com/aio-libs/aiohttp/pull/2739>`_) - Implement application cleanup context (``app.cleanup_ctx`` property). (`2747 <https://github.com/aio-libs/aiohttp/pull/2747>`_) - Make ``writer.write_headers`` a coroutine. (`2762 <https://github.com/aio-libs/aiohttp/pull/2762>`_) - Add tracking signals for getting request/response bodies. (`2767 <https://github.com/aio-libs/aiohttp/pull/2767>`_) - Deprecate ClientResponseError.code in favor of .status to keep similarity with response classes. (`2781 <https://github.com/aio-libs/aiohttp/pull/2781>`_) - Implement ``app.add_routes()`` method. (`2787 <https://github.com/aio-libs/aiohttp/pull/2787>`_) - Implement ``web.static()`` and ``RouteTableDef.static()`` API. (`2795 <https://github.com/aio-libs/aiohttp/pull/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://github.com/aio-libs/aiohttp/pull/2804>`_) - Refactor ``ClientResponse`` constructor: make logically required constructor arguments mandatory, drop ``_post_init()`` method. (`2820 <https://github.com/aio-libs/aiohttp/pull/2820>`_) - Use ``app.add_routes()`` in server docs everywhere (`2830 <https://github.com/aio-libs/aiohttp/pull/2830>`_) - Websockets refactoring, all websocket writer methods are converted into coroutines. (`2836 <https://github.com/aio-libs/aiohttp/pull/2836>`_) - Provide ``Content-Range`` header for ``Range`` requests (`2844 <https://github.com/aio-libs/aiohttp/pull/2844>`_) Bugfixes -------- - Fix websocket client return EofStream. (`2784 <https://github.com/aio-libs/aiohttp/pull/2784>`_) - Fix websocket demo. (`2789 <https://github.com/aio-libs/aiohttp/pull/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://github.com/aio-libs/aiohttp/pull/2805>`_) - Close a connection if an unexpected exception occurs while sending a request (`2827 <https://github.com/aio-libs/aiohttp/pull/2827>`_) - Fix firing DNS tracing events. (`2841 <https://github.com/aio-libs/aiohttp/pull/2841>`_) Improved Documentation ---------------------- - Document behavior when cchardet detects encodings that are unknown to Python. (`2732 <https://github.com/aio-libs/aiohttp/pull/2732>`_) - Add diagrams for tracing request life style. (`2748 <https://github.com/aio-libs/aiohttp/pull/2748>`_) - Drop removed functionality for passing ``StreamReader`` as data at client side. (`2793 <https://github.com/aio-libs/aiohttp/pull/2793>`_)
3.0.9 not secure
================== - Close a connection if an unexpected exception occurs while sending a request (`2827 <https://github.com/aio-libs/aiohttp/pull/2827>`_)
3.0.8 not secure
================== - Use ``asyncio.current_task()`` on Python 3.7 (`2825 <https://github.com/aio-libs/aiohttp/pull/2825>`_)
3.0.7 not secure
================== - Fix SSL proxy support by client. (`2810 <https://github.com/aio-libs/aiohttp/pull/2810>`_) - Restore an imperative check in ``setup.py`` for python version. The check works in parallel to environment marker. As effect an error about unsupported Python versions is raised even on outdated systems with very old ``setuptools`` version installed. (`2813 <https://github.com/aio-libs/aiohttp/pull/2813>`_)
3.0.6 not secure
================== - Add ``_reuse_address`` and ``_reuse_port`` to ``web_runner.TCPSite.__slots__``. (`2792 <https://github.com/aio-libs/aiohttp/pull/2792>`_)
3.0.5 not secure
================== - Fix ``InvalidStateError`` on processing a sequence of two ``RequestHandler.data_received`` calls on web server. (`2773 <https://github.com/aio-libs/aiohttp/pull/2773>`_)
3.0.4 not secure
================== - Fix ``IndexError`` in HTTP request handling by server. (`2752 <https://github.com/aio-libs/aiohttp/pull/2752>`_) - Fix MultipartWriter.append* no longer returning part/payload. (`2759 <https://github.com/aio-libs/aiohttp/pull/2759>`_)
3.0.3 not secure
================== - Relax ``attrs`` dependency to minimal actually supported version 17.0.3 The change allows to avoid version conflicts with currently existing test tools.
3.0.2 not secure
================== Security Fix ------------ - Prevent Windows absolute URLs in static files. Paths like ``/static/D:\path`` and ``/static/\\hostname\drive\path`` are forbidden.
3.0.1 not secure
===== - Technical release for fixing distribution problems.
3.0.0 not secure
================== Features -------- - Speed up the `PayloadWriter.write` method for large request bodies. (`2126 <https://github.com/aio-libs/aiohttp/pull/2126>`_) - StreamResponse and Response are now MutableMappings. (`2246 <https://github.com/aio-libs/aiohttp/pull/2246>`_) - ClientSession publishes a set of signals to track the HTTP request execution. (`2313 <https://github.com/aio-libs/aiohttp/pull/2313>`_) - Content-Disposition fast access in ClientResponse (`2455 <https://github.com/aio-libs/aiohttp/pull/2455>`_) - Added support to Flask-style decorators with class-based Views. (`2472 <https://github.com/aio-libs/aiohttp/pull/2472>`_) - Signal handlers (registered callbacks) should be coroutines. (`2480 <https://github.com/aio-libs/aiohttp/pull/2480>`_) - Support ``async with test_client.ws_connect(...)`` (`2525 <https://github.com/aio-libs/aiohttp/pull/2525>`_) - Introduce *site* and *application runner* as underlying API for `web.run_app` implementation. (`2530 <https://github.com/aio-libs/aiohttp/pull/2530>`_) - Only quote multipart boundary when necessary and sanitize input (`2544 <https://github.com/aio-libs/aiohttp/pull/2544>`_) - Make the `aiohttp.ClientResponse.get_encoding` method public with the processing of invalid charset while detecting content encoding. (`2549 <https://github.com/aio-libs/aiohttp/pull/2549>`_) - Add optional configurable per message compression for `ClientWebSocketResponse` and `WebSocketResponse`. (`2551 <https://github.com/aio-libs/aiohttp/pull/2551>`_) - Add hysteresis to `StreamReader` to prevent flipping between paused and resumed states too often. (`2555 <https://github.com/aio-libs/aiohttp/pull/2555>`_) - Support `.netrc` by `trust_env` (`2581 <https://github.com/aio-libs/aiohttp/pull/2581>`_) - Avoid to create a new resource when adding a route with the same name and path of the last added resource (`2586 <https://github.com/aio-libs/aiohttp/pull/2586>`_) - `MultipartWriter.boundary` is `str` now. (`2589 <https://github.com/aio-libs/aiohttp/pull/2589>`_) - Allow a custom port to be used by `TestServer` (and associated pytest fixtures) (`2613 <https://github.com/aio-libs/aiohttp/pull/2613>`_) - Add param access_log_class to web.run_app function (`2615 <https://github.com/aio-libs/aiohttp/pull/2615>`_) - Add ``ssl`` parameter to client API (`2626 <https://github.com/aio-libs/aiohttp/pull/2626>`_) - Fixes performance issue introduced by 2577. When there are no middlewares installed by the user, no additional and useless code is executed. (`2629 <https://github.com/aio-libs/aiohttp/pull/2629>`_) - Rename PayloadWriter to StreamWriter (`2654 <https://github.com/aio-libs/aiohttp/pull/2654>`_) - New options *reuse_port*, *reuse_address* are added to `run_app` and `TCPSite`. (`2679 <https://github.com/aio-libs/aiohttp/pull/2679>`_) - Use custom classes to pass client signals parameters (`2686 <https://github.com/aio-libs/aiohttp/pull/2686>`_) - Use ``attrs`` library for data classes, replace `namedtuple`. (`2690 <https://github.com/aio-libs/aiohttp/pull/2690>`_) - Pytest fixtures renaming, add ``aiohttp_`` prefix (`2578 <https://github.com/aio-libs/aiohttp/pull/2578>`_) - Add ``aiohttp-`` prefix for ``pytest-aiohttp`` command line parameters (`2578 <https://github.com/aio-libs/aiohttp/pull/2578>`_) Bugfixes -------- - 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 <https://github.com/aio-libs/aiohttp/pull/2277>`_) - Fix ClientConnectorSSLError and ClientProxyConnectionError for proxy connector (`2408 <https://github.com/aio-libs/aiohttp/pull/2408>`_) - Fix connector convert OSError to ClientConnectorError (`2423 <https://github.com/aio-libs/aiohttp/pull/2423>`_) - Fix connection attempts for multiple dns hosts (`2424 <https://github.com/aio-libs/aiohttp/pull/2424>`_) - Fix writing to closed transport by raising `asyncio.CancelledError` (`2499 <https://github.com/aio-libs/aiohttp/pull/2499>`_) - Fix warning in `ClientSession.__del__` by stopping to try to close it. (`2523 <https://github.com/aio-libs/aiohttp/pull/2523>`_) - Fixed race-condition for iterating addresses from the DNSCache. (`2620 <https://github.com/aio-libs/aiohttp/pull/2620>`_) - Fix default value of `access_log_format` argument in `web.run_app` (`2649 <https://github.com/aio-libs/aiohttp/pull/2649>`_) - Freeze sub-application on adding to parent app (`2656 <https://github.com/aio-libs/aiohttp/pull/2656>`_) - Do percent encoding for `.url_for()` parameters (`2668 <https://github.com/aio-libs/aiohttp/pull/2668>`_) - Correctly process request start time and multiple request/response headers in access log extra (`2641 <https://github.com/aio-libs/aiohttp/pull/2641>`_) Improved Documentation ---------------------- - Improve tutorial docs, using `literalinclude` to link to the actual files. (`2396 <https://github.com/aio-libs/aiohttp/pull/2396>`_) - Small improvement docs: better example for file uploads. (`2401 <https://github.com/aio-libs/aiohttp/pull/2401>`_) - Rename `from_env` to `trust_env` in client reference. (`2451 <https://github.com/aio-libs/aiohttp/pull/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 <https://github.com/aio-libs/aiohttp/pull/2688>`_) - Fix issue with unittest example not compiling in testing docs. (`2717 <https://github.com/aio-libs/aiohttp/pull/2717>`_) Deprecations and Removals ------------------------- - Simplify HTTP pipelining implementation (`2109 <https://github.com/aio-libs/aiohttp/pull/2109>`_) - Drop `StreamReaderPayload` and `DataQueuePayload`. (`2257 <https://github.com/aio-libs/aiohttp/pull/2257>`_) - Drop `md5` and `sha1` finger-prints (`2267 <https://github.com/aio-libs/aiohttp/pull/2267>`_) - Drop WSMessage.tp (`2321 <https://github.com/aio-libs/aiohttp/pull/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 <https://github.com/aio-libs/aiohttp/pull/2343>`_) - Drop `aiohttp.Timeout` and use `async_timeout.timeout` instead. (`2348 <https://github.com/aio-libs/aiohttp/pull/2348>`_) - Drop `resolve` param from TCPConnector. (`2377 <https://github.com/aio-libs/aiohttp/pull/2377>`_) - Add DeprecationWarning for returning HTTPException (`2415 <https://github.com/aio-libs/aiohttp/pull/2415>`_) - `send_str()`, `send_bytes()`, `send_json()`, `ping()` and `pong()` are genuine async functions now. (`2475 <https://github.com/aio-libs/aiohttp/pull/2475>`_) - Drop undocumented `app.on_pre_signal` and `app.on_post_signal`. Signal handlers should be coroutines, support for regular functions is dropped. (`2480 <https://github.com/aio-libs/aiohttp/pull/2480>`_) - `StreamResponse.drain()` is not a part of public API anymore, just use `await StreamResponse.write()`. `StreamResponse.write` is converted to async function. (`2483 <https://github.com/aio-libs/aiohttp/pull/2483>`_) - Drop deprecated `slow_request_timeout` param and `**kwargs`` from `RequestHandler`. (`2500 <https://github.com/aio-libs/aiohttp/pull/2500>`_) - Drop deprecated `resource.url()`. (`2501 <https://github.com/aio-libs/aiohttp/pull/2501>`_) - Remove `%u` and `%l` format specifiers from access log format. (`2506 <https://github.com/aio-libs/aiohttp/pull/2506>`_) - Drop deprecated `request.GET` property. (`2547 <https://github.com/aio-libs/aiohttp/pull/2547>`_) - Simplify stream classes: drop `ChunksQueue` and `FlowControlChunksQueue`, merge `FlowControlStreamReader` functionality into `StreamReader`, drop `FlowControlStreamReader` name. (`2555 <https://github.com/aio-libs/aiohttp/pull/2555>`_) - Do not create a new resource on `router.add_get(..., allow_head=True)` (`2585 <https://github.com/aio-libs/aiohttp/pull/2585>`_) - Drop access to TCP tuning options from PayloadWriter and Response classes (`2604 <https://github.com/aio-libs/aiohttp/pull/2604>`_) - Drop deprecated `encoding` parameter from client API (`2606 <https://github.com/aio-libs/aiohttp/pull/2606>`_) - Deprecate ``verify_ssl``, ``ssl_context`` and ``fingerprint`` parameters in client API (`2626 <https://github.com/aio-libs/aiohttp/pull/2626>`_) - Get rid of the legacy class StreamWriter. (`2651 <https://github.com/aio-libs/aiohttp/pull/2651>`_) - Forbid non-strings in `resource.url_for()` parameters. (`2668 <https://github.com/aio-libs/aiohttp/pull/2668>`_) - Deprecate inheritance from ``ClientSession`` and ``web.Application`` and custom user attributes for ``ClientSession``, ``web.Request`` and ``web.Application`` (`2691 <https://github.com/aio-libs/aiohttp/pull/2691>`_) - Drop `resp = await aiohttp.request(...)` syntax for sake of `async with aiohttp.request(...) as resp:`. (`2540 <https://github.com/aio-libs/aiohttp/pull/2540>`_) - Forbid synchronous context managers for `ClientSession` and test server/client. (`2362 <https://github.com/aio-libs/aiohttp/pull/2362>`_) Misc ---- - 2552
2.3.10 not secure
=================== - Fix 100% CPU usage on HTTP GET and websocket connection just after it (`1955 <https://github.com/aio-libs/aiohttp/pull/1955>`_) - Patch broken `ssl.match_hostname()` on Python<3.7 (`2674 <https://github.com/aio-libs/aiohttp/pull/2674>`_)
2.3.9 not secure
================== - Fix colon handing in path for dynamic resources (`2670 <https://github.com/aio-libs/aiohttp/pull/2670>`_)
2.3.8 not secure
================== - Do not use `yarl.unquote` internal function in aiohttp. Fix incorrectly unquoted path part in URL dispatcher (`2662 <https://github.com/aio-libs/aiohttp/pull/2662>`_) - Fix compatibility with `yarl==1.0.0` (`2662 <https://github.com/aio-libs/aiohttp/pull/2662>`_)
2.3.7 not secure
================== - Fixed race-condition for iterating addresses from the DNSCache. (`2620 <https://github.com/aio-libs/aiohttp/pull/2620>`_) - Fix docstring for request.host (`2591 <https://github.com/aio-libs/aiohttp/pull/2591>`_) - Fix docstring for request.remote (`2592 <https://github.com/aio-libs/aiohttp/pull/2592>`_)
2.3.6 not secure
================== - Correct `request.app` context (for handlers not just middlewares). (`2577 <https://github.com/aio-libs/aiohttp/pull/2577>`_)
2.3.5 not secure
================== - Fix compatibility with `pytest` 3.3+ (`2565 <https://github.com/aio-libs/aiohttp/pull/2565>`_)
2.3.4 not secure
================== - Make `request.app` point to proper application instance when using nested applications (with middlewares). (`2550 <https://github.com/aio-libs/aiohttp/pull/2550>`_) - Change base class of ClientConnectorSSLError to ClientSSLError from ClientConnectorError. (`2563 <https://github.com/aio-libs/aiohttp/pull/2563>`_) - Return client connection back to free pool on error in `connector.connect()`. (`2567 <https://github.com/aio-libs/aiohttp/pull/2567>`_)
2.3.3 not secure
================== - Having a `;` in Response content type does not assume it contains a charset anymore. (`2197 <https://github.com/aio-libs/aiohttp/pull/2197>`_) - Use `getattr(asyncio, 'async')` for keeping compatibility with Python 3.7. (`2476 <https://github.com/aio-libs/aiohttp/pull/2476>`_) - Ignore `NotImplementedError` raised by `set_child_watcher` from `uvloop`. (`2491 <https://github.com/aio-libs/aiohttp/pull/2491>`_) - Fix warning in `ClientSession.__del__` by stopping to try to close it. (`2523 <https://github.com/aio-libs/aiohttp/pull/2523>`_) - Fixed typo's in Third-party libraries page. And added async-v20 to the list (`2510 <https://github.com/aio-libs/aiohttp/pull/2510>`_)
2.3.2 not secure
================== - Fix passing client max size on cloning request obj. (`2385 <https://github.com/aio-libs/aiohttp/pull/2385>`_) - Fix ClientConnectorSSLError and ClientProxyConnectionError for proxy connector. (`2408 <https://github.com/aio-libs/aiohttp/pull/2408>`_) - Drop generated `_http_parser` shared object from tarball distribution. (`2414 <https://github.com/aio-libs/aiohttp/pull/2414>`_) - Fix connector convert OSError to ClientConnectorError. (`2423 <https://github.com/aio-libs/aiohttp/pull/2423>`_) - Fix connection attempts for multiple dns hosts. (`2424 <https://github.com/aio-libs/aiohttp/pull/2424>`_) - Fix ValueError for AF_INET6 sockets if a preexisting INET6 socket to the `aiohttp.web.run_app` function. (`2431 <https://github.com/aio-libs/aiohttp/pull/2431>`_) - `_SessionRequestContextManager` closes the session properly now. (`2441 <https://github.com/aio-libs/aiohttp/pull/2441>`_) - Rename `from_env` to `trust_env` in client reference. (`2451 <https://github.com/aio-libs/aiohttp/pull/2451>`_)
2.3.1 not secure
================== - Relax attribute lookup in warning about old-styled middleware (`2340 <https://github.com/aio-libs/aiohttp/pull/2340>`_)
2.3.0 not secure
================== Features -------- - Add SSL related params to `ClientSession.request` (`1128 <https://github.com/aio-libs/aiohttp/pull/1128>`_) - Make enable_compression work on HTTP/1.0 (`1828 <https://github.com/aio-libs/aiohttp/pull/1828>`_) - Deprecate registering synchronous web handlers (`1993 <https://github.com/aio-libs/aiohttp/pull/1993>`_) - Switch to `multidict 3.0`. All HTTP headers preserve casing now but compared in case-insensitive way. (`1994 <https://github.com/aio-libs/aiohttp/pull/1994>`_) - Improvement for `normalize_path_middleware`. Added possibility to handle URLs with query string. (`1995 <https://github.com/aio-libs/aiohttp/pull/1995>`_) - Use towncrier for CHANGES.txt build (`1997 <https://github.com/aio-libs/aiohttp/pull/1997>`_) - Implement `trust_env=True` param in `ClientSession`. (`1998 <https://github.com/aio-libs/aiohttp/pull/1998>`_) - Added variable to customize proxy headers (`2001 <https://github.com/aio-libs/aiohttp/pull/2001>`_) - Implement `router.add_routes` and router decorators. (`2004 <https://github.com/aio-libs/aiohttp/pull/2004>`_) - Deprecated `BaseRequest.has_body` in favor of `BaseRequest.can_read_body` Added `BaseRequest.body_exists` attribute that stays static for the lifetime of the request (`2005 <https://github.com/aio-libs/aiohttp/pull/2005>`_) - Provide `BaseRequest.loop` attribute (`2024 <https://github.com/aio-libs/aiohttp/pull/2024>`_) - Make `_CoroGuard` awaitable and fix `ClientSession.close` warning message (`2026 <https://github.com/aio-libs/aiohttp/pull/2026>`_) - Responses to redirects without Location header are returned instead of raising a RuntimeError (`2030 <https://github.com/aio-libs/aiohttp/pull/2030>`_) - Added `get_client`, `get_server`, `setUpAsync` and `tearDownAsync` methods to AioHTTPTestCase (`2032 <https://github.com/aio-libs/aiohttp/pull/2032>`_) - Add automatically a SafeChildWatcher to the test loop (`2058 <https://github.com/aio-libs/aiohttp/pull/2058>`_) - add ability to disable automatic response decompression (`2110 <https://github.com/aio-libs/aiohttp/pull/2110>`_) - Add support for throttling DNS request, avoiding the requests saturation when there is a miss in the DNS cache and many requests getting into the connector at the same time. (`2111 <https://github.com/aio-libs/aiohttp/pull/2111>`_) - Use request for getting access log information instead of message/transport pair. Add `RequestBase.remote` property for accessing to IP of client initiated HTTP request. (`2123 <https://github.com/aio-libs/aiohttp/pull/2123>`_) - json() raises a ContentTypeError exception if the content-type does not meet the requirements instead of raising a generic ClientResponseError. (`2136 <https://github.com/aio-libs/aiohttp/pull/2136>`_) - Make the HTTP client able to return HTTP chunks when chunked transfer encoding is used. (`2150 <https://github.com/aio-libs/aiohttp/pull/2150>`_) - add `append_version` arg into `StaticResource.url` and `StaticResource.url_for` methods for getting an url with hash (version) of the file. (`2157 <https://github.com/aio-libs/aiohttp/pull/2157>`_) - Fix parsing the Forwarded header. * commas and semicolons are allowed inside quoted-strings; * empty forwarded-pairs (as in for=_1;;by=_2) are allowed; * non-standard parameters are allowed (although this alone could be easily done in the previous parser). (`2173 <https://github.com/aio-libs/aiohttp/pull/2173>`_) - Don't require ssl module to run. aiohttp does not require SSL to function. The code paths involved with SSL will only be hit upon SSL usage. Raise `RuntimeError` if HTTPS protocol is required but ssl module is not present. (`2221 <https://github.com/aio-libs/aiohttp/pull/2221>`_) - Accept coroutine fixtures in pytest plugin (`2223 <https://github.com/aio-libs/aiohttp/pull/2223>`_) - Call `shutdown_asyncgens` before event loop closing on Python 3.6. (`2227 <https://github.com/aio-libs/aiohttp/pull/2227>`_) - Speed up Signals when there are no receivers (`2229 <https://github.com/aio-libs/aiohttp/pull/2229>`_) - Raise `InvalidURL` instead of `ValueError` on fetches with invalid URL. (`2241 <https://github.com/aio-libs/aiohttp/pull/2241>`_) - Move `DummyCookieJar` into `cookiejar.py` (`2242 <https://github.com/aio-libs/aiohttp/pull/2242>`_) - `run_app`: Make `print=None` disable printing (`2260 <https://github.com/aio-libs/aiohttp/pull/2260>`_) - Support `brotli` encoding (generic-purpose lossless compression algorithm) (`2270 <https://github.com/aio-libs/aiohttp/pull/2270>`_) - Add server support for WebSockets Per-Message Deflate. Add client option to add deflate compress header in WebSockets request header. If calling ClientSession.ws_connect() with `compress=15` the client will support deflate compress negotiation. (`2273 <https://github.com/aio-libs/aiohttp/pull/2273>`_) - Support `verify_ssl`, `fingerprint`, `ssl_context` and `proxy_headers` by `client.ws_connect`. (`2292 <https://github.com/aio-libs/aiohttp/pull/2292>`_) - Added `aiohttp.ClientConnectorSSLError` when connection fails due `ssl.SSLError` (`2294 <https://github.com/aio-libs/aiohttp/pull/2294>`_) - `aiohttp.web.Application.make_handler` support `access_log_class` (`2315 <https://github.com/aio-libs/aiohttp/pull/2315>`_) - Build HTTP parser extension in non-strict mode by default. (`2332 <https://github.com/aio-libs/aiohttp/pull/2332>`_) Bugfixes -------- - Clear auth information on redirecting to other domain (`1699 <https://github.com/aio-libs/aiohttp/pull/1699>`_) - Fix missing app.loop on startup hooks during tests (`2060 <https://github.com/aio-libs/aiohttp/pull/2060>`_) - Fix issue with synchronous session closing when using `ClientSession` as an asynchronous context manager. (`2063 <https://github.com/aio-libs/aiohttp/pull/2063>`_) - Fix issue with `CookieJar` incorrectly expiring cookies in some edge cases. (`2084 <https://github.com/aio-libs/aiohttp/pull/2084>`_) - Force use of IPv4 during test, this will make tests run in a Docker container (`2104 <https://github.com/aio-libs/aiohttp/pull/2104>`_) - Warnings about unawaited coroutines now correctly point to the user's code. (`2106 <https://github.com/aio-libs/aiohttp/pull/2106>`_) - Fix issue with `IndexError` being raised by the `StreamReader.iter_chunks()` generator. (`2112 <https://github.com/aio-libs/aiohttp/pull/2112>`_) - Support HTTP 308 Permanent redirect in client class. (`2114 <https://github.com/aio-libs/aiohttp/pull/2114>`_) - Fix `FileResponse` sending empty chunked body on 304. (`2143 <https://github.com/aio-libs/aiohttp/pull/2143>`_) - Do not add `Content-Length: 0` to GET/HEAD/TRACE/OPTIONS requests by default. (`2167 <https://github.com/aio-libs/aiohttp/pull/2167>`_) - Fix parsing the Forwarded header according to RFC 7239. (`2170 <https://github.com/aio-libs/aiohttp/pull/2170>`_) - Securely determining remote/scheme/host 2171 (`2171 <https://github.com/aio-libs/aiohttp/pull/2171>`_) - Fix header name parsing, if name is split into multiple lines (`2183 <https://github.com/aio-libs/aiohttp/pull/2183>`_) - Handle session close during connection, `KeyError: <aiohttp.connector._TransportPlaceholder>` (`2193 <https://github.com/aio-libs/aiohttp/pull/2193>`_) - Fixes uncaught `TypeError` in `helpers.guess_filename` if `name` is not a string (`2201 <https://github.com/aio-libs/aiohttp/pull/2201>`_) - Raise OSError on async DNS lookup if resolved domain is an alias for another one, which does not have an A or CNAME record. (`2231 <https://github.com/aio-libs/aiohttp/pull/2231>`_) - Fix incorrect warning in `StreamReader`. (`2251 <https://github.com/aio-libs/aiohttp/pull/2251>`_) - Properly clone state of web request (`2284 <https://github.com/aio-libs/aiohttp/pull/2284>`_) - Fix C HTTP parser for cases when status line is split into different TCP packets. (`2311 <https://github.com/aio-libs/aiohttp/pull/2311>`_) - Fix `web.FileResponse` overriding user supplied Content-Type (`2317 <https://github.com/aio-libs/aiohttp/pull/2317>`_) Improved Documentation ---------------------- - Add a note about possible performance degradation in `await resp.text()` if charset was not provided by `Content-Type` HTTP header. Pass explicit encoding to solve it. (`1811 <https://github.com/aio-libs/aiohttp/pull/1811>`_) - Drop `disqus` widget from documentation pages. (`2018 <https://github.com/aio-libs/aiohttp/pull/2018>`_) - Add a graceful shutdown section to the client usage documentation. (`2039 <https://github.com/aio-libs/aiohttp/pull/2039>`_) - Document `connector_owner` parameter. (`2072 <https://github.com/aio-libs/aiohttp/pull/2072>`_) - Update the doc of web.Application (`2081 <https://github.com/aio-libs/aiohttp/pull/2081>`_) - Fix mistake about access log disabling. (`2085 <https://github.com/aio-libs/aiohttp/pull/2085>`_) - Add example usage of on_startup and on_shutdown signals by creating and disposing an aiopg connection engine. (`2131 <https://github.com/aio-libs/aiohttp/pull/2131>`_) - Document `encoded=True` for `yarl.URL`, it disables all yarl transformations. (`2198 <https://github.com/aio-libs/aiohttp/pull/2198>`_) - Document that all app's middleware factories are run for every request. (`2225 <https://github.com/aio-libs/aiohttp/pull/2225>`_) - Reflect the fact that default resolver is threaded one starting from aiohttp 1.1 (`2228 <https://github.com/aio-libs/aiohttp/pull/2228>`_) Deprecations and Removals ------------------------- - Drop deprecated `Server.finish_connections` (`2006 <https://github.com/aio-libs/aiohttp/pull/2006>`_) - Drop %O format from logging, use %b instead. Drop %e format from logging, environment variables are not supported anymore. (`2123 <https://github.com/aio-libs/aiohttp/pull/2123>`_) - Drop deprecated secure_proxy_ssl_header support (`2171 <https://github.com/aio-libs/aiohttp/pull/2171>`_) - Removed TimeService in favor of simple caching. TimeService also had a bug where it lost about 0.5 seconds per second. (`2176 <https://github.com/aio-libs/aiohttp/pull/2176>`_) - Drop unused response_factory from static files API (`2290 <https://github.com/aio-libs/aiohttp/pull/2290>`_) Misc ---- - 2013, 2014, 2048, 2094, 2149, 2187, 2214, 2225, 2243, 2248
2.2.5 not secure
================== - Don't raise deprecation warning on `loop.run_until_complete(client.close())` (`2065 <https://github.com/aio-libs/aiohttp/pull/2065>`_)
2.2.4 not secure
================== - Fix issue with synchronous session closing when using ClientSession as an asynchronous context manager. (`2063 <https://github.com/aio-libs/aiohttp/pull/2063>`_)
2.2.3 not secure
================== - Fix `_CoroGuard` for python 3.4
2.2.2 not secure
================== - Allow `await session.close()` along with `yield from session.close()`
2.2.1 not secure
================== - Relax `yarl` requirement to 0.11+ - Backport 2026: `session.close` *is* a coroutine (`2029 <https://github.com/aio-libs/aiohttp/pull/2029>`_)
2.2.0 not secure
================== - Add doc for add_head, update doc for add_get. (`1944 <https://github.com/aio-libs/aiohttp/pull/1944>`_) - Fixed consecutive calls for `Response.write_eof`. - Retain method attributes (e.g. :code:`__doc__`) when registering synchronous handlers for resources. (`1953 <https://github.com/aio-libs/aiohttp/pull/1953>`_) - Added signal TERM handling in `run_app` to gracefully exit (`1932 <https://github.com/aio-libs/aiohttp/pull/1932>`_) - Fix websocket issues caused by frame fragmentation. (`1962 <https://github.com/aio-libs/aiohttp/pull/1962>`_) - Raise RuntimeError is you try to set the Content Length and enable chunked encoding at the same time (`1941 <https://github.com/aio-libs/aiohttp/pull/1941>`_) - Small update for `unittest_run_loop` - Use CIMultiDict for ClientRequest.skip_auto_headers (`1970 <https://github.com/aio-libs/aiohttp/pull/1970>`_) - Fix wrong startup sequence: test server and `run_app()` are not raise `DeprecationWarning` now (`1947 <https://github.com/aio-libs/aiohttp/pull/1947>`_) - Make sure cleanup signal is sent if startup signal has been sent (`1959 <https://github.com/aio-libs/aiohttp/pull/1959>`_) - Fixed server keep-alive handler, could cause 100% cpu utilization (`1955 <https://github.com/aio-libs/aiohttp/pull/1955>`_) - Connection can be destroyed before response get processed if `await aiohttp.request(..)` is used (`1981 <https://github.com/aio-libs/aiohttp/pull/1981>`_) - MultipartReader does not work with -OO (`1969 <https://github.com/aio-libs/aiohttp/pull/1969>`_) - Fixed `ClientPayloadError` with blank `Content-Encoding` header (`1931 <https://github.com/aio-libs/aiohttp/pull/1931>`_) - Support `deflate` encoding implemented in `httpbin.org/deflate` (`1918 <https://github.com/aio-libs/aiohttp/pull/1918>`_) - Fix BadStatusLine caused by extra `CRLF` after `POST` data (`1792 <https://github.com/aio-libs/aiohttp/pull/1792>`_) - Keep a reference to `ClientSession` in response object (`1985 <https://github.com/aio-libs/aiohttp/pull/1985>`_) - Deprecate undocumented `app.on_loop_available` signal (`1978 <https://github.com/aio-libs/aiohttp/pull/1978>`_)
2.1.0 not secure
================== - Added support for experimental `async-tokio` event loop written in Rust https://github.com/PyO3/tokio - Write to transport ``\r\n`` before closing after keepalive timeout, otherwise client can not detect socket disconnection. (`1883 <https://github.com/aio-libs/aiohttp/pull/1883>`_) - Only call `loop.close` in `run_app` if the user did *not* supply a loop. Useful for allowing clients to specify their own cleanup before closing the asyncio loop if they wish to tightly control loop behavior - Content disposition with semicolon in filename (`917 <https://github.com/aio-libs/aiohttp/pull/917>`_) - Added `request_info` to response object and `ClientResponseError`. (`1733 <https://github.com/aio-libs/aiohttp/pull/1733>`_) - Added `history` to `ClientResponseError`. (`1741 <https://github.com/aio-libs/aiohttp/pull/1741>`_) - Allow to disable redirect url re-quoting (`1474 <https://github.com/aio-libs/aiohttp/pull/1474>`_) - Handle RuntimeError from transport (`1790 <https://github.com/aio-libs/aiohttp/pull/1790>`_) - Dropped "%O" in access logger (`1673 <https://github.com/aio-libs/aiohttp/pull/1673>`_) - Added `args` and `kwargs` to `unittest_run_loop`. Useful with other decorators, for example `patch`. (`1803 <https://github.com/aio-libs/aiohttp/pull/1803>`_) - Added `iter_chunks` to response.content object. (`1805 <https://github.com/aio-libs/aiohttp/pull/1805>`_) - Avoid creating TimerContext when there is no timeout to allow compatibility with Tornado. (`1817 <https://github.com/aio-libs/aiohttp/pull/1817>`_) (`#1180 <https://github.com/aio-libs/aiohttp/pull/1180>`_) - Add `proxy_from_env` to `ClientRequest` to read from environment variables. (`1791 <https://github.com/aio-libs/aiohttp/pull/1791>`_) - Add DummyCookieJar helper. (`1830 <https://github.com/aio-libs/aiohttp/pull/1830>`_) - Fix assertion errors in Python 3.4 from noop helper. (`1847 <https://github.com/aio-libs/aiohttp/pull/1847>`_) - Do not unquote `+` in match_info values (`1816 <https://github.com/aio-libs/aiohttp/pull/1816>`_) - Use Forwarded, X-Forwarded-Scheme and X-Forwarded-Host for better scheme and host resolution. (`1134 <https://github.com/aio-libs/aiohttp/pull/1134>`_) - Fix sub-application middlewares resolution order (`1853 <https://github.com/aio-libs/aiohttp/pull/1853>`_) - Fix applications comparison (`1866 <https://github.com/aio-libs/aiohttp/pull/1866>`_) - Fix static location in index when prefix is used (`1662 <https://github.com/aio-libs/aiohttp/pull/1662>`_) - Make test server more reliable (`1896 <https://github.com/aio-libs/aiohttp/pull/1896>`_) - Extend list of web exceptions, add HTTPUnprocessableEntity, HTTPFailedDependency, HTTPInsufficientStorage status codes (`1920 <https://github.com/aio-libs/aiohttp/pull/1920>`_)
2.0.7 not secure
================== - Fix *pypi* distribution - Fix exception description (`1807 <https://github.com/aio-libs/aiohttp/pull/1807>`_) - Handle socket error in FileResponse (`1773 <https://github.com/aio-libs/aiohttp/pull/1773>`_) - Cancel websocket heartbeat on close (`1793 <https://github.com/aio-libs/aiohttp/pull/1793>`_)
2.0.6 not secure
================== - Keeping blank values for `request.post()` and `multipart.form()` (`1765 <https://github.com/aio-libs/aiohttp/pull/1765>`_) - TypeError in data_received of ResponseHandler (`1770 <https://github.com/aio-libs/aiohttp/pull/1770>`_) - Fix ``web.run_app`` not to bind to default host-port pair if only socket is passed (`1786 <https://github.com/aio-libs/aiohttp/pull/1786>`_)
2.0.5 not secure
================== - Memory leak with aiohttp.request (`1756 <https://github.com/aio-libs/aiohttp/pull/1756>`_) - Disable cleanup closed ssl transports by default. - Exception in request handling if the server responds before the body is sent (`1761 <https://github.com/aio-libs/aiohttp/pull/1761>`_)
2.0.4 not secure
================== - Memory leak with aiohttp.request (`1756 <https://github.com/aio-libs/aiohttp/pull/1756>`_) - Encoding is always UTF-8 in POST data (`1750 <https://github.com/aio-libs/aiohttp/pull/1750>`_) - Do not add "Content-Disposition" header by default (`1755 <https://github.com/aio-libs/aiohttp/pull/1755>`_)
2.0.3 not secure
================== - Call https website through proxy will cause error (`1745 <https://github.com/aio-libs/aiohttp/pull/1745>`_) - Fix exception on multipart/form-data post if content-type is not set (`1743 <https://github.com/aio-libs/aiohttp/pull/1743>`_)
2.0.2 not secure
================== - Fixed Application.on_loop_available signal (`1739 <https://github.com/aio-libs/aiohttp/pull/1739>`_) - Remove debug code
2.0.1 not secure
================== - Fix allow-head to include name on route (`1737 <https://github.com/aio-libs/aiohttp/pull/1737>`_) - Fixed AttributeError in WebSocketResponse.can_prepare (`1736 <https://github.com/aio-libs/aiohttp/pull/1736>`_)
2.0.0 not secure
================== - Added `json` to `ClientSession.request()` method (`1726 <https://github.com/aio-libs/aiohttp/pull/1726>`_) - Added session's `raise_for_status` parameter, automatically calls raise_for_status() on any request. (`1724 <https://github.com/aio-libs/aiohttp/pull/1724>`_) - `response.json()` raises `ClientReponseError` exception if response's content type does not match (`1723 <https://github.com/aio-libs/aiohttp/pull/1723>`_) - Cleanup timer and loop handle on any client exception. - Deprecate `loop` parameter for Application's constructor
2.0.0rc1 not secure
======================= - Properly handle payload errors (`1710 <https://github.com/aio-libs/aiohttp/pull/1710>`_) - Added `ClientWebSocketResponse.get_extra_info()` (`1717 <https://github.com/aio-libs/aiohttp/pull/1717>`_) - It is not possible to combine Transfer-Encoding and chunked parameter, same for compress and Content-Encoding (`1655 <https://github.com/aio-libs/aiohttp/pull/1655>`_) - Connector's `limit` parameter indicates total concurrent connections. New `limit_per_host` added, indicates total connections per endpoint. (`1601 <https://github.com/aio-libs/aiohttp/pull/1601>`_) - Use url's `raw_host` for name resolution (`1685 <https://github.com/aio-libs/aiohttp/pull/1685>`_) - Change `ClientResponse.url` to `yarl.URL` instance (`1654 <https://github.com/aio-libs/aiohttp/pull/1654>`_) - Add max_size parameter to web.Request reading methods (`1133 <https://github.com/aio-libs/aiohttp/pull/1133>`_) - Web Request.post() stores data in temp files (`1469 <https://github.com/aio-libs/aiohttp/pull/1469>`_) - Add the `allow_head=True` keyword argument for `add_get` (`1618 <https://github.com/aio-libs/aiohttp/pull/1618>`_) - `run_app` and the Command Line Interface now support serving over Unix domain sockets for faster inter-process communication. - `run_app` now supports passing a preexisting socket object. This can be useful e.g. for socket-based activated applications, when binding of a socket is done by the parent process. - Implementation for Trailer headers parser is broken (`1619 <https://github.com/aio-libs/aiohttp/pull/1619>`_) - Fix FileResponse to not fall on bad request (range out of file size) - Fix FileResponse to correct stream video to Chromes - Deprecate public low-level api (`1657 <https://github.com/aio-libs/aiohttp/pull/1657>`_) - Deprecate `encoding` parameter for ClientSession.request() method - Dropped aiohttp.wsgi (`1108 <https://github.com/aio-libs/aiohttp/pull/1108>`_) - Dropped `version` from ClientSession.request() method - Dropped websocket version 76 support (`1160 <https://github.com/aio-libs/aiohttp/pull/1160>`_) - Dropped: `aiohttp.protocol.HttpPrefixParser` (`1590 <https://github.com/aio-libs/aiohttp/pull/1590>`_) - Dropped: Servers response's `.started`, `.start()` and `.can_start()` method (`1591 <https://github.com/aio-libs/aiohttp/pull/1591>`_) - Dropped: Adding `sub app` via `app.router.add_subapp()` is deprecated use `app.add_subapp()` instead (`1592 <https://github.com/aio-libs/aiohttp/pull/1592>`_) - Dropped: `Application.finish()` and `Application.register_on_finish()` (`1602 <https://github.com/aio-libs/aiohttp/pull/1602>`_) - Dropped: `web.Request.GET` and `web.Request.POST` - Dropped: aiohttp.get(), aiohttp.options(), aiohttp.head(), aiohttp.post(), aiohttp.put(), aiohttp.patch(), aiohttp.delete(), and aiohttp.ws_connect() (`1593 <https://github.com/aio-libs/aiohttp/pull/1593>`_) - Dropped: `aiohttp.web.WebSocketResponse.receive_msg()` (`1605 <https://github.com/aio-libs/aiohttp/pull/1605>`_) - Dropped: `ServerHttpProtocol.keep_alive_timeout` attribute and `keep-alive`, `keep_alive_on`, `timeout`, `log` constructor parameters (`1606 <https://github.com/aio-libs/aiohttp/pull/1606>`_) - Dropped: `TCPConnector's`` `.resolve`, `.resolved_hosts`, `.clear_resolved_hosts()` attributes and `resolve` constructor parameter (`1607 <https://github.com/aio-libs/aiohttp/pull/1607>`_) - Dropped `ProxyConnector` (`1609 <https://github.com/aio-libs/aiohttp/pull/1609>`_)
1.3.5 not secure
================== - Fixed None timeout support (`1720 <https://github.com/aio-libs/aiohttp/pull/1720>`_)
1.3.4 not secure
================== - Revert timeout handling in client request - Fix StreamResponse representation after eof - Fix file_sender to not fall on bad request (range out of file size) - Fix file_sender to correct stream video to Chromes - Fix NotImplementedError server exception (`1703 <https://github.com/aio-libs/aiohttp/pull/1703>`_) - Clearer error message for URL without a host name. (`1691 <https://github.com/aio-libs/aiohttp/pull/1691>`_) - Silence deprecation warning in __repr__ (`1690 <https://github.com/aio-libs/aiohttp/pull/1690>`_) - IDN + HTTPS = `ssl.CertificateError` (`1685 <https://github.com/aio-libs/aiohttp/pull/1685>`_)
1.3.3 not secure
================== - Fixed memory leak in time service (`1656 <https://github.com/aio-libs/aiohttp/pull/1656>`_)
1.3.2 not secure
================== - Awaiting on WebSocketResponse.send_* does not work (`1645 <https://github.com/aio-libs/aiohttp/pull/1645>`_) - Fix multiple calls to client ws_connect when using a shared header dict (`1643 <https://github.com/aio-libs/aiohttp/pull/1643>`_) - Make CookieJar.filter_cookies() accept plain string parameter. (`1636 <https://github.com/aio-libs/aiohttp/pull/1636>`_)
1.3.1 not secure
================== - Handle CLOSING in WebSocketResponse.__anext__ - Fixed AttributeError 'drain' for server websocket handler (`1613 <https://github.com/aio-libs/aiohttp/pull/1613>`_)
1.3.0 not secure
================== - Multipart writer validates the data on append instead of on a request send (`920 <https://github.com/aio-libs/aiohttp/pull/920>`_) - Multipart reader accepts multipart messages with or without their epilogue to consistently handle valid and legacy behaviors (`1526 <https://github.com/aio-libs/aiohttp/pull/1526>`_) (`#1581 <https://github.com/aio-libs/aiohttp/pull/1581>`_) - Separate read + connect + request timeouts 1523 - Do not swallow Upgrade header (`1587 <https://github.com/aio-libs/aiohttp/pull/1587>`_) - Fix polls demo run application (`1487 <https://github.com/aio-libs/aiohttp/pull/1487>`_) - Ignore unknown 1XX status codes in client (`1353 <https://github.com/aio-libs/aiohttp/pull/1353>`_) - Fix sub-Multipart messages missing their headers on serialization (`1525 <https://github.com/aio-libs/aiohttp/pull/1525>`_) - Do not use readline when reading the content of a part in the multipart reader (`1535 <https://github.com/aio-libs/aiohttp/pull/1535>`_) - Add optional flag for quoting `FormData` fields (`916 <https://github.com/aio-libs/aiohttp/pull/916>`_) - 416 Range Not Satisfiable if requested range end > file size (`1588 <https://github.com/aio-libs/aiohttp/pull/1588>`_) - Having a `:` or `` in a route does not work (`1552 <https://github.com/aio-libs/aiohttp/pull/1552>`_) - Added `receive_timeout` timeout for websocket to receive complete message. (`1325 <https://github.com/aio-libs/aiohttp/pull/1325>`_) - Added `heartbeat` parameter for websocket to automatically send `ping` message. (`1024 <https://github.com/aio-libs/aiohttp/pull/1024>`_) (`#777 <https://github.com/aio-libs/aiohttp/pull/777>`_) - Remove `web.Application` dependency from `web.UrlDispatcher` (`1510 <https://github.com/aio-libs/aiohttp/pull/1510>`_) - Accepting back-pressure from slow websocket clients (`1367 <https://github.com/aio-libs/aiohttp/pull/1367>`_) - Do not pause transport during set_parser stage (`1211 <https://github.com/aio-libs/aiohttp/pull/1211>`_) - Lingering close does not terminate before timeout (`1559 <https://github.com/aio-libs/aiohttp/pull/1559>`_) - `setsockopt` may raise `OSError` exception if socket is closed already (`1595 <https://github.com/aio-libs/aiohttp/pull/1595>`_) - Lots of CancelledError when requests are interrupted (`1565 <https://github.com/aio-libs/aiohttp/pull/1565>`_) - Allow users to specify what should happen to decoding errors when calling a responses `text()` method (`1542 <https://github.com/aio-libs/aiohttp/pull/1542>`_) - Back port std module `http.cookies` for python3.4.2 (`1566 <https://github.com/aio-libs/aiohttp/pull/1566>`_) - Maintain url's fragment in client response (`1314 <https://github.com/aio-libs/aiohttp/pull/1314>`_) - Allow concurrently close WebSocket connection (`754 <https://github.com/aio-libs/aiohttp/pull/754>`_) - Gzipped responses with empty body raises ContentEncodingError (`609 <https://github.com/aio-libs/aiohttp/pull/609>`_) - Return 504 if request handle raises TimeoutError. - Refactor how we use keep-alive and close lingering timeouts. - Close response connection if we can not consume whole http message during client response release - Abort closed ssl client transports, broken servers can keep socket open un-limit time (`1568 <https://github.com/aio-libs/aiohttp/pull/1568>`_) - Log warning instead of `RuntimeError` is websocket connection is closed. - Deprecated: `aiohttp.protocol.HttpPrefixParser` will be removed in 1.4 (`1590 <https://github.com/aio-libs/aiohttp/pull/1590>`_) - Deprecated: Servers response's `.started`, `.start()` and `.can_start()` method will be removed in 1.4 (`1591 <https://github.com/aio-libs/aiohttp/pull/1591>`_) - Deprecated: Adding `sub app` via `app.router.add_subapp()` is deprecated use `app.add_subapp()` instead, will be removed in 1.4 (`1592 <https://github.com/aio-libs/aiohttp/pull/1592>`_) - Deprecated: aiohttp.get(), aiohttp.options(), aiohttp.head(), aiohttp.post(), aiohttp.put(), aiohttp.patch(), aiohttp.delete(), and aiohttp.ws_connect() will be removed in 1.4 (`1593 <https://github.com/aio-libs/aiohttp/pull/1593>`_) - Deprecated: `Application.finish()` and `Application.register_on_finish()` will be removed in 1.4 (`1602 <https://github.com/aio-libs/aiohttp/pull/1602>`_)
1.2.0 not secure
================== - Extract `BaseRequest` from `web.Request`, introduce `web.Server` (former `RequestHandlerFactory`), introduce new low-level web server which is not coupled with `web.Application` and routing (`1362 <https://github.com/aio-libs/aiohttp/pull/1362>`_) - Make `TestServer.make_url` compatible with `yarl.URL` (`1389 <https://github.com/aio-libs/aiohttp/pull/1389>`_) - Implement range requests for static files (`1382 <https://github.com/aio-libs/aiohttp/pull/1382>`_) - Support task attribute for StreamResponse (`1410 <https://github.com/aio-libs/aiohttp/pull/1410>`_) - Drop `TestClient.app` property, use `TestClient.server.app` instead (BACKWARD INCOMPATIBLE) - Drop `TestClient.handler` property, use `TestClient.server.handler` instead (BACKWARD INCOMPATIBLE) - `TestClient.server` property returns a test server instance, was `asyncio.AbstractServer` (BACKWARD INCOMPATIBLE) - Follow gunicorn's signal semantics in `Gunicorn[UVLoop]WebWorker` (`1201 <https://github.com/aio-libs/aiohttp/pull/1201>`_) - Call worker_int and worker_abort callbacks in `Gunicorn[UVLoop]WebWorker` (`1202 <https://github.com/aio-libs/aiohttp/pull/1202>`_) - Has functional tests for client proxy (`1218 <https://github.com/aio-libs/aiohttp/pull/1218>`_) - Fix bugs with client proxy target path and proxy host with port (`1413 <https://github.com/aio-libs/aiohttp/pull/1413>`_) - Fix bugs related to the use of unicode hostnames (`1444 <https://github.com/aio-libs/aiohttp/pull/1444>`_) - Preserve cookie quoting/escaping (`1453 <https://github.com/aio-libs/aiohttp/pull/1453>`_) - FileSender will send gzipped response if gzip version available (`1426 <https://github.com/aio-libs/aiohttp/pull/1426>`_) - Don't override `Content-Length` header in `web.Response` if no body was set (`1400 <https://github.com/aio-libs/aiohttp/pull/1400>`_) - Introduce `router.post_init()` for solving (`1373 <https://github.com/aio-libs/aiohttp/pull/1373>`_) - Fix raise error in case of multiple calls of `TimeServive.stop()` - Allow to raise web exceptions on router resolving stage (`1460 <https://github.com/aio-libs/aiohttp/pull/1460>`_) - Add a warning for session creation outside of coroutine (`1468 <https://github.com/aio-libs/aiohttp/pull/1468>`_) - Avoid a race when application might start accepting incoming requests but startup signals are not processed yet e98e8c6 - Raise a `RuntimeError` when trying to change the status of the HTTP response after the headers have been sent (`1480 <https://github.com/aio-libs/aiohttp/pull/1480>`_) - Fix bug with https proxy acquired cleanup (`1340 <https://github.com/aio-libs/aiohttp/pull/1340>`_) - Use UTF-8 as the default encoding for multipart text parts (`1484 <https://github.com/aio-libs/aiohttp/pull/1484>`_)
1.1.6 not secure
================== - Fix `BodyPartReader.read_chunk` bug about returns zero bytes before `EOF` (`1428 <https://github.com/aio-libs/aiohttp/pull/1428>`_)
1.1.5 not secure
================== - Fix static file serving in fallback mode (`1401 <https://github.com/aio-libs/aiohttp/pull/1401>`_)
1.1.4 not secure
================== - Make `TestServer.make_url` compatible with `yarl.URL` (`1389 <https://github.com/aio-libs/aiohttp/pull/1389>`_) - Generate informative exception on redirects from server which does not provide redirection headers (`1396 <https://github.com/aio-libs/aiohttp/pull/1396>`_)
1.1.3 not secure
================== - Support *root* resources for sub-applications (`1379 <https://github.com/aio-libs/aiohttp/pull/1379>`_)
1.1.2 not secure
================== - Allow starting variables with an underscore (`1379 <https://github.com/aio-libs/aiohttp/pull/1379>`_) - Properly process UNIX sockets by gunicorn worker (`1375 <https://github.com/aio-libs/aiohttp/pull/1375>`_) - Fix ordering for `FrozenList` - Don't propagate pre and post signals to sub-application (`1377 <https://github.com/aio-libs/aiohttp/pull/1377>`_)
1.1.1 not secure
================== - Fix documentation generation (`1120 <https://github.com/aio-libs/aiohttp/pull/1120>`_)
1.1.0 not secure
================== - Drop deprecated `WSClientDisconnectedError` (BACKWARD INCOMPATIBLE) - Use `yarl.URL` in client API. The change is 99% backward compatible but `ClientResponse.url` is an `yarl.URL` instance now. (`1217 <https://github.com/aio-libs/aiohttp/pull/1217>`_) - Close idle keep-alive connections on shutdown (`1222 <https://github.com/aio-libs/aiohttp/pull/1222>`_) - Modify regex in AccessLogger to accept underscore and numbers (`1225 <https://github.com/aio-libs/aiohttp/pull/1225>`_) - Use `yarl.URL` in web server API. `web.Request.rel_url` and `web.Request.url` are added. URLs and templates are percent-encoded now. (`1224 <https://github.com/aio-libs/aiohttp/pull/1224>`_) - Accept `yarl.URL` by server redirections (`1278 <https://github.com/aio-libs/aiohttp/pull/1278>`_) - Return `yarl.URL` by `.make_url()` testing utility (`1279 <https://github.com/aio-libs/aiohttp/pull/1279>`_) - Properly format IPv6 addresses by `aiohttp.web.run_app` (`1139 <https://github.com/aio-libs/aiohttp/pull/1139>`_) - Use `yarl.URL` by server API (`1288 <https://github.com/aio-libs/aiohttp/pull/1288>`_) * Introduce `resource.url_for()`, deprecate `resource.url()`. * Implement `StaticResource`. * Inherit `SystemRoute` from `AbstractRoute` * Drop old-style routes: `Route`, `PlainRoute`, `DynamicRoute`, `StaticRoute`, `ResourceAdapter`. - Revert `resp.url` back to `str`, introduce `resp.url_obj` (`1292 <https://github.com/aio-libs/aiohttp/pull/1292>`_) - Raise ValueError if BasicAuth login has a ":" character (`1307 <https://github.com/aio-libs/aiohttp/pull/1307>`_) - Fix bug when ClientRequest send payload file with opened as open('filename', 'r+b') (`1306 <https://github.com/aio-libs/aiohttp/pull/1306>`_) - Enhancement to AccessLogger (pass *extra* dict) (`1303 <https://github.com/aio-libs/aiohttp/pull/1303>`_) - Show more verbose message on import errors (`1319 <https://github.com/aio-libs/aiohttp/pull/1319>`_) - Added save and load functionality for `CookieJar` (`1219 <https://github.com/aio-libs/aiohttp/pull/1219>`_) - Added option on `StaticRoute` to follow symlinks (`1299 <https://github.com/aio-libs/aiohttp/pull/1299>`_) - Force encoding of `application/json` content type to utf-8 (`1339 <https://github.com/aio-libs/aiohttp/pull/1339>`_) - Fix invalid invocations of `errors.LineTooLong` (`1335 <https://github.com/aio-libs/aiohttp/pull/1335>`_) - Websockets: Stop `async for` iteration when connection is closed (`1144 <https://github.com/aio-libs/aiohttp/pull/1144>`_) - Ensure TestClient HTTP methods return a context manager (`1318 <https://github.com/aio-libs/aiohttp/pull/1318>`_) - Raise `ClientDisconnectedError` to `FlowControlStreamReader` read function if `ClientSession` object is closed by client when reading data. (`1323 <https://github.com/aio-libs/aiohttp/pull/1323>`_) - Document deployment without `Gunicorn` (`1120 <https://github.com/aio-libs/aiohttp/pull/1120>`_) - Add deprecation warning for MD5 and SHA1 digests when used for fingerprint of site certs in TCPConnector. (`1186 <https://github.com/aio-libs/aiohttp/pull/1186>`_) - Implement sub-applications (`1301 <https://github.com/aio-libs/aiohttp/pull/1301>`_) - Don't inherit `web.Request` from `dict` but implement `MutableMapping` protocol. - Implement frozen signals - Don't inherit `web.Application` from `dict` but implement `MutableMapping` protocol. - Support freezing for web applications - Accept access_log parameter in `web.run_app`, use `None` to disable logging - Don't flap `tcp_cork` and `tcp_nodelay` in regular request handling. `tcp_nodelay` is still enabled by default. - Improve performance of web server by removing premature computing of Content-Type if the value was set by `web.Response` constructor. While the patch boosts speed of trivial `web.Response(text='OK', content_type='text/plain)` very well please don't expect significant boost of your application -- a couple DB requests and business logic is still the main bottleneck. - Boost performance by adding a custom time service (`1350 <https://github.com/aio-libs/aiohttp/pull/1350>`_) - Extend `ClientResponse` with `content_type` and `charset` properties like in `web.Request`. (`1349 <https://github.com/aio-libs/aiohttp/pull/1349>`_) - Disable aiodns by default (`559 <https://github.com/aio-libs/aiohttp/pull/559>`_) - Don't flap `tcp_cork` in client code, use TCP_NODELAY mode by default. - Implement `web.Request.clone()` (`1361 <https://github.com/aio-libs/aiohttp/pull/1361>`_)
1.0.5 not secure
================== - Fix StreamReader._read_nowait to return all available data up to the requested amount (`1297 <https://github.com/aio-libs/aiohttp/pull/1297>`_)
1.0.4
================== - Fix FlowControlStreamReader.read_nowait so that it checks whether the transport is paused (`1206 <https://github.com/aio-libs/aiohttp/pull/1206>`_)
1.0.2 not secure
================== - Make CookieJar compatible with 32-bit systems (`1188 <https://github.com/aio-libs/aiohttp/pull/1188>`_) - Add missing `WSMsgType` to `web_ws.__all__`, see (`1200 <https://github.com/aio-libs/aiohttp/pull/1200>`_) - Fix `CookieJar` ctor when called with `loop=None` (`1203 <https://github.com/aio-libs/aiohttp/pull/1203>`_) - Fix broken upper-casing in wsgi support (`1197 <https://github.com/aio-libs/aiohttp/pull/1197>`_)
1.0.1 not secure
================== - Restore `aiohttp.web.MsgType` alias for `aiohttp.WSMsgType` for sake of backward compatibility (`1178 <https://github.com/aio-libs/aiohttp/pull/1178>`_) - Tune alabaster schema. - Use `text/html` content type for displaying index pages by static file handler. - Fix `AssertionError` in static file handling (`1177 <https://github.com/aio-libs/aiohttp/pull/1177>`_) - Fix access log formats `%O` and `%b` for static file handling - Remove `debug` setting of GunicornWorker, use `app.debug` to control its debug-mode instead
1.0.0 not secure
================== - Change default size for client session's connection pool from unlimited to 20 (`977 <https://github.com/aio-libs/aiohttp/pull/977>`_) - Add IE support for cookie deletion. (`994 <https://github.com/aio-libs/aiohttp/pull/994>`_) - Remove deprecated `WebSocketResponse.wait_closed` method (BACKWARD INCOMPATIBLE) - Remove deprecated `force` parameter for `ClientResponse.close` method (BACKWARD INCOMPATIBLE) - Avoid using of mutable CIMultiDict kw param in make_mocked_request (`997 <https://github.com/aio-libs/aiohttp/pull/997>`_) - Make WebSocketResponse.close a little bit faster by avoiding new task creating just for timeout measurement - Add `proxy` and `proxy_auth` params to `client.get()` and family, deprecate `ProxyConnector` (`998 <https://github.com/aio-libs/aiohttp/pull/998>`_) - Add support for websocket send_json and receive_json, synchronize server and client API for websockets (`984 <https://github.com/aio-libs/aiohttp/pull/984>`_) - Implement router shourtcuts for most useful HTTP methods, use `app.router.add_get()`, `app.router.add_post()` etc. instead of `app.router.add_route()` (`986 <https://github.com/aio-libs/aiohttp/pull/986>`_) - Support SSL connections for gunicorn worker (`1003 <https://github.com/aio-libs/aiohttp/pull/1003>`_) - Move obsolete examples to legacy folder - Switch to multidict 2.0 and title-cased strings (`1015 <https://github.com/aio-libs/aiohttp/pull/1015>`_) - `{FOO}e` logger format is case-sensitive now - Fix logger report for unix socket 8e8469b - Rename aiohttp.websocket to aiohttp._ws_impl - Rename aiohttp.MsgType tp aiohttp.WSMsgType - Introduce aiohttp.WSMessage officially - Rename Message -> WSMessage - Remove deprecated decode param from resp.read(decode=True) - Use 5min default client timeout (`1028 <https://github.com/aio-libs/aiohttp/pull/1028>`_) - Relax HTTP method validation in UrlDispatcher (`1037 <https://github.com/aio-libs/aiohttp/pull/1037>`_) - Pin minimal supported asyncio version to 3.4.2+ (`loop.is_close()` should be present) - Remove aiohttp.websocket module (BACKWARD INCOMPATIBLE) Please use high-level client and server approaches - Link header for 451 status code is mandatory - Fix test_client fixture to allow multiple clients per test (`1072 <https://github.com/aio-libs/aiohttp/pull/1072>`_) - make_mocked_request now accepts dict as headers (`1073 <https://github.com/aio-libs/aiohttp/pull/1073>`_) - Add Python 3.5.2/3.6+ compatibility patch for async generator protocol change (`1082 <https://github.com/aio-libs/aiohttp/pull/1082>`_) - Improvement test_client can accept instance object (`1083 <https://github.com/aio-libs/aiohttp/pull/1083>`_) - Simplify ServerHttpProtocol implementation (`1060 <https://github.com/aio-libs/aiohttp/pull/1060>`_) - Add a flag for optional showing directory index for static file handling (`921 <https://github.com/aio-libs/aiohttp/pull/921>`_) - Define `web.Application.on_startup()` signal handler (`1103 <https://github.com/aio-libs/aiohttp/pull/1103>`_) - Drop ChunkedParser and LinesParser (`1111 <https://github.com/aio-libs/aiohttp/pull/1111>`_) - Call `Application.startup` in GunicornWebWorker (`1105 <https://github.com/aio-libs/aiohttp/pull/1105>`_) - Fix client handling hostnames with 63 bytes when a port is given in the url (`1044 <https://github.com/aio-libs/aiohttp/pull/1044>`_) - Implement proxy support for ClientSession.ws_connect (`1025 <https://github.com/aio-libs/aiohttp/pull/1025>`_) - Return named tuple from WebSocketResponse.can_prepare (`1016 <https://github.com/aio-libs/aiohttp/pull/1016>`_) - Fix access_log_format in `GunicornWebWorker` (`1117 <https://github.com/aio-libs/aiohttp/pull/1117>`_) - Setup Content-Type to application/octet-stream by default (`1124 <https://github.com/aio-libs/aiohttp/pull/1124>`_) - Deprecate debug parameter from app.make_handler(), use `Application(debug=True)` instead (`1121 <https://github.com/aio-libs/aiohttp/pull/1121>`_) - Remove fragment string in request path (`846 <https://github.com/aio-libs/aiohttp/pull/846>`_) - Use aiodns.DNSResolver.gethostbyname() if available (`1136 <https://github.com/aio-libs/aiohttp/pull/1136>`_) - Fix static file sending on uvloop when sendfile is available (`1093 <https://github.com/aio-libs/aiohttp/pull/1093>`_) - Make prettier urls if query is empty dict (`1143 <https://github.com/aio-libs/aiohttp/pull/1143>`_) - Fix redirects for HEAD requests (`1147 <https://github.com/aio-libs/aiohttp/pull/1147>`_) - Default value for `StreamReader.read_nowait` is -1 from now (`1150 <https://github.com/aio-libs/aiohttp/pull/1150>`_) - `aiohttp.StreamReader` is not inherited from `asyncio.StreamReader` from now (BACKWARD INCOMPATIBLE) (`1150 <https://github.com/aio-libs/aiohttp/pull/1150>`_) - Streams documentation added (`1150 <https://github.com/aio-libs/aiohttp/pull/1150>`_) - Add `multipart` coroutine method for web Request object (`1067 <https://github.com/aio-libs/aiohttp/pull/1067>`_) - Publish ClientSession.loop property (`1149 <https://github.com/aio-libs/aiohttp/pull/1149>`_) - Fix static file with spaces (`1140 <https://github.com/aio-libs/aiohttp/pull/1140>`_) - Fix piling up asyncio loop by cookie expiration callbacks (`1061 <https://github.com/aio-libs/aiohttp/pull/1061>`_) - Drop `Timeout` class for sake of `async_timeout` external library. `aiohttp.Timeout` is an alias for `async_timeout.timeout` - `use_dns_cache` parameter of `aiohttp.TCPConnector` is `True` by default (BACKWARD INCOMPATIBLE) (`1152 <https://github.com/aio-libs/aiohttp/pull/1152>`_) - `aiohttp.TCPConnector` uses asynchronous DNS resolver if available by default (BACKWARD INCOMPATIBLE) (`1152 <https://github.com/aio-libs/aiohttp/pull/1152>`_) - Conform to RFC3986 - do not include url fragments in client requests (`1174 <https://github.com/aio-libs/aiohttp/pull/1174>`_) - Drop `ClientSession.cookies` (BACKWARD INCOMPATIBLE) (`1173 <https://github.com/aio-libs/aiohttp/pull/1173>`_) - Refactor `AbstractCookieJar` public API (BACKWARD INCOMPATIBLE) (`1173 <https://github.com/aio-libs/aiohttp/pull/1173>`_) - Fix clashing cookies with have the same name but belong to different domains (BACKWARD INCOMPATIBLE) (`1125 <https://github.com/aio-libs/aiohttp/pull/1125>`_) - Support binary Content-Transfer-Encoding (`1169 <https://github.com/aio-libs/aiohttp/pull/1169>`_)
0.22.5 not secure
=================== - Pin miltidict version to >=1.2.2
0.22.3 not secure
=================== - Do not filter cookies if unsafe flag provided (`1005 <https://github.com/aio-libs/aiohttp/pull/1005>`_)
0.22.2 not secure
=================== - Suppress CancelledError when Timeout raises TimeoutError (`970 <https://github.com/aio-libs/aiohttp/pull/970>`_) - Don't expose `aiohttp.__version__` - Add unsafe parameter to CookieJar (`968 <https://github.com/aio-libs/aiohttp/pull/968>`_) - Use unsafe cookie jar in test client tools - Expose aiohttp.CookieJar name
0.22.1 not secure
=================== - Large cookie expiration/max-age does not break an event loop from now (fixes (`967 <https://github.com/aio-libs/aiohttp/pull/967>`_))
0.22.0 not secure
=================== - Fix bug in serving static directory (`803 <https://github.com/aio-libs/aiohttp/pull/803>`_) - Fix command line arg parsing (`797 <https://github.com/aio-libs/aiohttp/pull/797>`_) - Fix a documentation chapter about cookie usage (`790 <https://github.com/aio-libs/aiohttp/pull/790>`_) - Handle empty body with gzipped encoding (`758 <https://github.com/aio-libs/aiohttp/pull/758>`_) - Support 451 Unavailable For Legal Reasons http status (`697 <https://github.com/aio-libs/aiohttp/pull/697>`_) - Fix Cookie share example and few small typos in docs (`817 <https://github.com/aio-libs/aiohttp/pull/817>`_) - UrlDispatcher.add_route with partial coroutine handler (`814 <https://github.com/aio-libs/aiohttp/pull/814>`_) - Optional support for aiodns (`728 <https://github.com/aio-libs/aiohttp/pull/728>`_) - Add ServiceRestart and TryAgainLater websocket close codes (`828 <https://github.com/aio-libs/aiohttp/pull/828>`_) - Fix prompt message for `web.run_app` (`832 <https://github.com/aio-libs/aiohttp/pull/832>`_) - Allow to pass None as a timeout value to disable timeout logic (`834 <https://github.com/aio-libs/aiohttp/pull/834>`_) - Fix leak of connection slot during connection error (`835 <https://github.com/aio-libs/aiohttp/pull/835>`_) - Gunicorn worker with uvloop support `aiohttp.worker.GunicornUVLoopWebWorker` (`878 <https://github.com/aio-libs/aiohttp/pull/878>`_) - Don't send body in response to HEAD request (`838 <https://github.com/aio-libs/aiohttp/pull/838>`_) - Skip the preamble in MultipartReader (`881 <https://github.com/aio-libs/aiohttp/pull/881>`_) - Implement BasicAuth decode classmethod. (`744 <https://github.com/aio-libs/aiohttp/pull/744>`_) - Don't crash logger when transport is None (`889 <https://github.com/aio-libs/aiohttp/pull/889>`_) - Use a create_future compatibility wrapper instead of creating Futures directly (`896 <https://github.com/aio-libs/aiohttp/pull/896>`_) - Add test utilities to aiohttp (`902 <https://github.com/aio-libs/aiohttp/pull/902>`_) - Improve Request.__repr__ (`875 <https://github.com/aio-libs/aiohttp/pull/875>`_) - Skip DNS resolving if provided host is already an ip address (`874 <https://github.com/aio-libs/aiohttp/pull/874>`_) - Add headers to ClientSession.ws_connect (`785 <https://github.com/aio-libs/aiohttp/pull/785>`_) - Document that server can send pre-compressed data (`906 <https://github.com/aio-libs/aiohttp/pull/906>`_) - Don't add Content-Encoding and Transfer-Encoding if no body (`891 <https://github.com/aio-libs/aiohttp/pull/891>`_) - Add json() convenience methods to websocket message objects (`897 <https://github.com/aio-libs/aiohttp/pull/897>`_) - Add client_resp.raise_for_status() (`908 <https://github.com/aio-libs/aiohttp/pull/908>`_) - Implement cookie filter (`799 <https://github.com/aio-libs/aiohttp/pull/799>`_) - Include an example of middleware to handle error pages (`909 <https://github.com/aio-libs/aiohttp/pull/909>`_) - Fix error handling in StaticFileMixin (`856 <https://github.com/aio-libs/aiohttp/pull/856>`_) - Add mocked request helper (`900 <https://github.com/aio-libs/aiohttp/pull/900>`_) - Fix empty ALLOW Response header for cls based View (`929 <https://github.com/aio-libs/aiohttp/pull/929>`_) - Respect CONNECT method to implement a proxy server (`847 <https://github.com/aio-libs/aiohttp/pull/847>`_) - Add pytest_plugin (`914 <https://github.com/aio-libs/aiohttp/pull/914>`_) - Add tutorial - Add backlog option to support more than 128 (default value in "create_server" function) concurrent connections (`892 <https://github.com/aio-libs/aiohttp/pull/892>`_) - Allow configuration of header size limits (`912 <https://github.com/aio-libs/aiohttp/pull/912>`_) - Separate sending file logic from StaticRoute dispatcher (`901 <https://github.com/aio-libs/aiohttp/pull/901>`_) - Drop deprecated share_cookies connector option (BACKWARD INCOMPATIBLE) - Drop deprecated support for tuple as auth parameter. Use aiohttp.BasicAuth instead (BACKWARD INCOMPATIBLE) - Remove deprecated `request.payload` property, use `content` instead. (BACKWARD INCOMPATIBLE) - Drop all mentions about api changes in documentation for versions older than 0.16 - Allow to override default cookie jar (`963 <https://github.com/aio-libs/aiohttp/pull/963>`_) - Add manylinux wheel builds - Dup a socket for sendfile usage (`964 <https://github.com/aio-libs/aiohttp/pull/964>`_)
0.21.6 not secure
=================== - Drop initial query parameters on redirects (`853 <https://github.com/aio-libs/aiohttp/pull/853>`_)
0.21.5 not secure
=================== - Fix command line arg parsing (`797 <https://github.com/aio-libs/aiohttp/pull/797>`_)
0.21.4 not secure
=================== - Fix ResourceAdapter: don't add method to allowed if resource is not match (`826 <https://github.com/aio-libs/aiohttp/pull/826>`_) - Fix Resource: append found method to returned allowed methods
0.21.2 not secure
=================== - Fix a regression: support for handling ~/path in static file routes was broken (`782 <https://github.com/aio-libs/aiohttp/pull/782>`_)
0.21.1 not secure
=================== - Make new resources classes public (`767 <https://github.com/aio-libs/aiohttp/pull/767>`_) - Add `router.resources()` view - Fix cmd-line parameter names in doc
0.21.0 not secure
=================== - Introduce on_shutdown signal (`722 <https://github.com/aio-libs/aiohttp/pull/722>`_) - Implement raw input headers (`726 <https://github.com/aio-libs/aiohttp/pull/726>`_) - Implement web.run_app utility function (`734 <https://github.com/aio-libs/aiohttp/pull/734>`_) - Introduce on_cleanup signal - Deprecate Application.finish() / Application.register_on_finish() in favor of on_cleanup. - Get rid of bare aiohttp.request(), aiohttp.get() and family in docs (`729 <https://github.com/aio-libs/aiohttp/pull/729>`_) - Deprecate bare aiohttp.request(), aiohttp.get() and family (`729 <https://github.com/aio-libs/aiohttp/pull/729>`_) - Refactor keep-alive support (`737 <https://github.com/aio-libs/aiohttp/pull/737>`_): - Enable keepalive for HTTP 1.0 by default - Disable it for HTTP 0.9 (who cares about 0.9, BTW?) - For keepalived connections - Send `Connection: keep-alive` for HTTP 1.0 only - don't send `Connection` header for HTTP 1.1 - For non-keepalived connections - Send `Connection: close` for HTTP 1.1 only - don't send `Connection` header for HTTP 1.0 - Add version parameter to ClientSession constructor, deprecate it for session.request() and family (`736 <https://github.com/aio-libs/aiohttp/pull/736>`_) - Enable access log by default (`735 <https://github.com/aio-libs/aiohttp/pull/735>`_) - Deprecate app.router.register_route() (the method was not documented intentionally BTW). - Deprecate app.router.named_routes() in favor of app.router.named_resources() - route.add_static accepts pathlib.Path now (`743 <https://github.com/aio-libs/aiohttp/pull/743>`_) - Add command line support: `$ python -m aiohttp.web package.main` (`740 <https://github.com/aio-libs/aiohttp/pull/740>`_) - FAQ section was added to docs. Enjoy and fill free to contribute new topics - Add async context manager support to ClientSession - Document ClientResponse's host, method, url properties - Use CORK/NODELAY in client API (`748 <https://github.com/aio-libs/aiohttp/pull/748>`_) - ClientSession.close and Connector.close are coroutines now - Close client connection on exception in ClientResponse.release() - Allow to read multipart parts without content-length specified (`750 <https://github.com/aio-libs/aiohttp/pull/750>`_) - Add support for unix domain sockets to gunicorn worker (`470 <https://github.com/aio-libs/aiohttp/pull/470>`_) - Add test for default Expect handler (`601 <https://github.com/aio-libs/aiohttp/pull/601>`_) - Add the first demo project - Rename `loader` keyword argument in `web.Request.json` method. (`646 <https://github.com/aio-libs/aiohttp/pull/646>`_) - Add local socket binding for TCPConnector (`678 <https://github.com/aio-libs/aiohttp/pull/678>`_)
0.20.2 not secure
=================== - Enable use of `await` for a class based view (`717 <https://github.com/aio-libs/aiohttp/pull/717>`_) - Check address family to fill wsgi env properly (`718 <https://github.com/aio-libs/aiohttp/pull/718>`_) - Fix memory leak in headers processing (thanks to Marco Paolini) (`723 <https://github.com/aio-libs/aiohttp/pull/723>`_)
0.20.1 not secure
=================== - Raise RuntimeError is Timeout context manager was used outside of task context. - Add number of bytes to stream.read_nowait (`700 <https://github.com/aio-libs/aiohttp/pull/700>`_) - Use X-FORWARDED-PROTO for wsgi.url_scheme when available
0.20.0 not secure
=================== - Extend list of web exceptions, add HTTPMisdirectedRequest, HTTPUpgradeRequired, HTTPPreconditionRequired, HTTPTooManyRequests, HTTPRequestHeaderFieldsTooLarge, HTTPVariantAlsoNegotiates, HTTPNotExtended, HTTPNetworkAuthenticationRequired status codes (`644 <https://github.com/aio-libs/aiohttp/pull/644>`_) - Do not remove AUTHORIZATION header by WSGI handler (`649 <https://github.com/aio-libs/aiohttp/pull/649>`_) - Fix broken support for https proxies with authentication (`617 <https://github.com/aio-libs/aiohttp/pull/617>`_) - Get REMOTE_* and SEVER_* http vars from headers when listening on unix socket (`654 <https://github.com/aio-libs/aiohttp/pull/654>`_) - Add HTTP 308 support (`663 <https://github.com/aio-libs/aiohttp/pull/663>`_) - Add Tf format (time to serve request in seconds, %06f format) to access log (`669 <https://github.com/aio-libs/aiohttp/pull/669>`_) - Remove one and a half years long deprecated ClientResponse.read_and_close() method - Optimize chunked encoding: use a single syscall instead of 3 calls on sending chunked encoded data - Use TCP_CORK and TCP_NODELAY to optimize network latency and throughput (`680 <https://github.com/aio-libs/aiohttp/pull/680>`_) - Websocket XOR performance improved (`687 <https://github.com/aio-libs/aiohttp/pull/687>`_) - Avoid sending cookie attributes in Cookie header (`613 <https://github.com/aio-libs/aiohttp/pull/613>`_) - Round server timeouts to seconds for grouping pending calls. That leads to less amount of poller syscalls e.g. epoll.poll(). (`702 <https://github.com/aio-libs/aiohttp/pull/702>`_) - Close connection on websocket handshake error (`703 <https://github.com/aio-libs/aiohttp/pull/703>`_) - Implement class based views (`684 <https://github.com/aio-libs/aiohttp/pull/684>`_) - Add *headers* parameter to ws_connect() (`709 <https://github.com/aio-libs/aiohttp/pull/709>`_) - Drop unused function `parse_remote_addr()` (`708 <https://github.com/aio-libs/aiohttp/pull/708>`_) - Close session on exception (`707 <https://github.com/aio-libs/aiohttp/pull/707>`_) - Store http code and headers in WSServerHandshakeError (`706 <https://github.com/aio-libs/aiohttp/pull/706>`_) - Make some low-level message properties readonly (`710 <https://github.com/aio-libs/aiohttp/pull/710>`_)
0.19.0 not secure
=================== - Memory leak in ParserBuffer (`579 <https://github.com/aio-libs/aiohttp/pull/579>`_) - Support gunicorn's `max_requests` settings in gunicorn worker - Fix wsgi environment building (`573 <https://github.com/aio-libs/aiohttp/pull/573>`_) - Improve access logging (`572 <https://github.com/aio-libs/aiohttp/pull/572>`_) - Drop unused host and port from low-level server (`586 <https://github.com/aio-libs/aiohttp/pull/586>`_) - Add Python 3.5 `async for` implementation to server websocket (`543 <https://github.com/aio-libs/aiohttp/pull/543>`_) - Add Python 3.5 `async for` implementation to client websocket - Add Python 3.5 `async with` implementation to client websocket - Add charset parameter to web.Response constructor (`593 <https://github.com/aio-libs/aiohttp/pull/593>`_) - Forbid passing both Content-Type header and content_type or charset params into web.Response constructor - Forbid duplicating of web.Application and web.Request (`602 <https://github.com/aio-libs/aiohttp/pull/602>`_) - Add an option to pass Origin header in ws_connect (`607 <https://github.com/aio-libs/aiohttp/pull/607>`_) - Add json_response function (`592 <https://github.com/aio-libs/aiohttp/pull/592>`_) - Make concurrent connections respect limits (`581 <https://github.com/aio-libs/aiohttp/pull/581>`_) - Collect history of responses if redirects occur (`614 <https://github.com/aio-libs/aiohttp/pull/614>`_) - Enable passing pre-compressed data in requests (`621 <https://github.com/aio-libs/aiohttp/pull/621>`_) - Expose named routes via UrlDispatcher.named_routes() (`622 <https://github.com/aio-libs/aiohttp/pull/622>`_) - Allow disabling sendfile by environment variable AIOHTTP_NOSENDFILE (`629 <https://github.com/aio-libs/aiohttp/pull/629>`_) - Use ensure_future if available - Always quote params for Content-Disposition (`641 <https://github.com/aio-libs/aiohttp/pull/641>`_) - Support async for in multipart reader (`640 <https://github.com/aio-libs/aiohttp/pull/640>`_) - Add Timeout context manager (`611 <https://github.com/aio-libs/aiohttp/pull/611>`_)
0.18.4 not secure
=================== - Relax rule for router names again by adding dash to allowed characters: they may contain identifiers, dashes, dots and columns
0.18.3 not secure
=================== - Fix formatting for _RequestContextManager helper (`590 <https://github.com/aio-libs/aiohttp/pull/590>`_)
0.18.2 not secure
=================== - Fix regression for OpenSSL < 1.0.0 (`583 <https://github.com/aio-libs/aiohttp/pull/583>`_)
0.18.1 not secure
=================== - Relax rule for router names: they may contain dots and columns starting from now
0.18.0 not secure
=================== - Use errors.HttpProcessingError.message as HTTP error reason and message (`459 <https://github.com/aio-libs/aiohttp/pull/459>`_) - Optimize cythonized multidict a bit - Change repr's of multidicts and multidict views - default headers in ClientSession are now case-insensitive - Make '=' char and 'wss://' schema safe in urls (`477 <https://github.com/aio-libs/aiohttp/pull/477>`_) - `ClientResponse.close()` forces connection closing by default from now (`479 <https://github.com/aio-libs/aiohttp/pull/479>`_) N.B. Backward incompatible change: was `.close(force=False) Using `force` parameter for the method is deprecated: use `.release()` instead. - Properly requote URL's path (`480 <https://github.com/aio-libs/aiohttp/pull/480>`_) - add `skip_auto_headers` parameter for client API (`486 <https://github.com/aio-libs/aiohttp/pull/486>`_) - Properly parse URL path in aiohttp.web.Request (`489 <https://github.com/aio-libs/aiohttp/pull/489>`_) - Raise RuntimeError when chunked enabled and HTTP is 1.0 (`488 <https://github.com/aio-libs/aiohttp/pull/488>`_) - Fix a bug with processing io.BytesIO as data parameter for client API (`500 <https://github.com/aio-libs/aiohttp/pull/500>`_) - Skip auto-generation of Content-Type header (`507 <https://github.com/aio-libs/aiohttp/pull/507>`_) - Use sendfile facility for static file handling (`503 <https://github.com/aio-libs/aiohttp/pull/503>`_) - Default `response_factory` in `app.router.add_static` now is `StreamResponse`, not `None`. The functionality is not changed if default is not specified. - Drop `ClientResponse.message` attribute, it was always implementation detail. - Streams are optimized for speed and mostly memory in case of a big HTTP message sizes (`496 <https://github.com/aio-libs/aiohttp/pull/496>`_) - Fix a bug for server-side cookies for dropping cookie and setting it again without Max-Age parameter. - Don't trim redirect URL in client API (`499 <https://github.com/aio-libs/aiohttp/pull/499>`_) - Extend precision of access log "D" to milliseconds (`527 <https://github.com/aio-libs/aiohttp/pull/527>`_) - Deprecate `StreamResponse.start()` method in favor of `StreamResponse.prepare()` coroutine (`525 <https://github.com/aio-libs/aiohttp/pull/525>`_) `.start()` is still supported but responses begun with `.start()` does not call signal for response preparing to be sent. - Add `StreamReader.__repr__` - Drop Python 3.3 support, from now minimal required version is Python 3.4.1 (`541 <https://github.com/aio-libs/aiohttp/pull/541>`_) - Add `async with` support for `ClientSession.request()` and family (`536 <https://github.com/aio-libs/aiohttp/pull/536>`_) - Ignore message body on 204 and 304 responses (`505 <https://github.com/aio-libs/aiohttp/pull/505>`_) - `TCPConnector` processed both IPv4 and IPv6 by default (`559 <https://github.com/aio-libs/aiohttp/pull/559>`_) - Add `.routes()` view for urldispatcher (`519 <https://github.com/aio-libs/aiohttp/pull/519>`_) - Route name should be a valid identifier name from now (`567 <https://github.com/aio-libs/aiohttp/pull/567>`_) - Implement server signals (`562 <https://github.com/aio-libs/aiohttp/pull/562>`_) - Drop a year-old deprecated *files* parameter from client API. - Added `async for` support for aiohttp stream (`542 <https://github.com/aio-libs/aiohttp/pull/542>`_)
0.17.4 not secure
=================== - Properly parse URL path in aiohttp.web.Request (`489 <https://github.com/aio-libs/aiohttp/pull/489>`_) - Add missing coroutine decorator, the client api is await-compatible now
0.17.3 not secure
=================== - Remove Content-Length header on compressed responses (`450 <https://github.com/aio-libs/aiohttp/pull/450>`_) - Support Python 3.5 - Improve performance of transport in-use list (`472 <https://github.com/aio-libs/aiohttp/pull/472>`_) - Fix connection pooling (`473 <https://github.com/aio-libs/aiohttp/pull/473>`_)
0.17.2 not secure
=================== - Don't forget to pass `data` argument forward (`462 <https://github.com/aio-libs/aiohttp/pull/462>`_) - Fix multipart read bytes count (`463 <https://github.com/aio-libs/aiohttp/pull/463>`_)
0.17.1 not secure
=================== - Fix multidict comparison to arbitrary abc.Mapping
0.17.0 not secure
=================== - Make StaticRoute support Last-Modified and If-Modified-Since headers (`386 <https://github.com/aio-libs/aiohttp/pull/386>`_) - Add Request.if_modified_since and Stream.Response.last_modified properties - Fix deflate compression when writing a chunked response (`395 <https://github.com/aio-libs/aiohttp/pull/395>`_) - Request`s content-length header is cleared now after redirect from POST method (`391 <https://github.com/aio-libs/aiohttp/pull/391>`_) - Return a 400 if server received a non HTTP content (`405 <https://github.com/aio-libs/aiohttp/pull/405>`_) - Fix keep-alive support for aiohttp clients (`406 <https://github.com/aio-libs/aiohttp/pull/406>`_) - Allow gzip compression in high-level server response interface (`403 <https://github.com/aio-libs/aiohttp/pull/403>`_) - Rename TCPConnector.resolve and family to dns_cache (`415 <https://github.com/aio-libs/aiohttp/pull/415>`_) - Make UrlDispatcher ignore quoted characters during url matching (`414 <https://github.com/aio-libs/aiohttp/pull/414>`_) Backward-compatibility warning: this may change the url matched by your queries if they send quoted character (like %2F for /) (`414 <https://github.com/aio-libs/aiohttp/pull/414>`_) - Use optional cchardet accelerator if present (`418 <https://github.com/aio-libs/aiohttp/pull/418>`_) - Borrow loop from Connector in ClientSession if loop is not set - Add context manager support to ClientSession for session closing. - Add toplevel get(), post(), put(), head(), delete(), options(), patch() coroutines. - Fix IPv6 support for client API (`425 <https://github.com/aio-libs/aiohttp/pull/425>`_) - Pass SSL context through proxy connector (`421 <https://github.com/aio-libs/aiohttp/pull/421>`_) - Make the rule: path for add_route should start with slash - Don't process request finishing by low-level server on closed event loop - Don't override data if multiple files are uploaded with same key (`433 <https://github.com/aio-libs/aiohttp/pull/433>`_) - Ensure multipart.BodyPartReader.read_chunk read all the necessary data to avoid false assertions about malformed multipart payload - Don't send body for 204, 205 and 304 http exceptions (`442 <https://github.com/aio-libs/aiohttp/pull/442>`_) - Correctly skip Cython compilation in MSVC not found (`453 <https://github.com/aio-libs/aiohttp/pull/453>`_) - Add response factory to StaticRoute (`456 <https://github.com/aio-libs/aiohttp/pull/456>`_) - Don't append trailing CRLF for multipart.BodyPartReader (`454 <https://github.com/aio-libs/aiohttp/pull/454>`_)
0.16.6 not secure
=================== - Skip compilation on Windows if vcvarsall.bat cannot be found (`438 <https://github.com/aio-libs/aiohttp/pull/438>`_)
0.16.5 not secure
=================== - Get rid of all comprehensions and yielding in _multidict (`410 <https://github.com/aio-libs/aiohttp/pull/410>`_)
0.16.4 not secure
=================== - Don't clear current exception in multidict's `__repr__` (cythonized versions) (`410 <https://github.com/aio-libs/aiohttp/pull/410>`_)
0.16.3 not secure
=================== - Fix StaticRoute vulnerability to directory traversal attacks (`380 <https://github.com/aio-libs/aiohttp/pull/380>`_)
0.16.2 not secure
=================== - Update python version required for `__del__` usage: it's actually 3.4.1 instead of 3.4.0 - Add check for presence of loop.is_closed() method before call the former (`378 <https://github.com/aio-libs/aiohttp/pull/378>`_)
0.16.1 not secure
=================== - Fix regression in static file handling (`377 <https://github.com/aio-libs/aiohttp/pull/377>`_)
0.16.0 not secure
=================== - Unset waiter future after cancellation (`363 <https://github.com/aio-libs/aiohttp/pull/363>`_) - Update request url with query parameters (`372 <https://github.com/aio-libs/aiohttp/pull/372>`_) - Support new `fingerprint` param of TCPConnector to enable verifying SSL certificates via MD5, SHA1, or SHA256 digest (`366 <https://github.com/aio-libs/aiohttp/pull/366>`_) - Setup uploaded filename if field value is binary and transfer encoding is not specified (`349 <https://github.com/aio-libs/aiohttp/pull/349>`_) - Implement `ClientSession.close()` method - Implement `connector.closed` readonly property - Implement `ClientSession.closed` readonly property - Implement `ClientSession.connector` readonly property - Implement `ClientSession.detach` method - Add `__del__` to client-side objects: sessions, connectors, connections, requests, responses. - Refactor connections cleanup by connector (`357 <https://github.com/aio-libs/aiohttp/pull/357>`_) - Add `limit` parameter to connector constructor (`358 <https://github.com/aio-libs/aiohttp/pull/358>`_) - Add `request.has_body` property (`364 <https://github.com/aio-libs/aiohttp/pull/364>`_) - Add `response_class` parameter to `ws_connect()` (`367 <https://github.com/aio-libs/aiohttp/pull/367>`_) - `ProxyConnector` does not support keep-alive requests by default starting from now (`368 <https://github.com/aio-libs/aiohttp/pull/368>`_) - Add `connector.force_close` property - Add ws_connect to ClientSession (`374 <https://github.com/aio-libs/aiohttp/pull/374>`_) - Support optional `chunk_size` parameter in `router.add_static()`
0.15.3 not secure
=================== - Fix graceful shutdown handling - Fix `Expect` header handling for not found and not allowed routes (`340 <https://github.com/aio-libs/aiohttp/pull/340>`_)
0.15.2 not secure
=================== - Flow control subsystem refactoring - HTTP server performance optimizations - Allow to match any request method with `*` - Explicitly call drain on transport (`316 <https://github.com/aio-libs/aiohttp/pull/316>`_) - Make chardet module dependency mandatory (`318 <https://github.com/aio-libs/aiohttp/pull/318>`_) - Support keep-alive for HTTP 1.0 (`325 <https://github.com/aio-libs/aiohttp/pull/325>`_) - Do not chunk single file during upload (`327 <https://github.com/aio-libs/aiohttp/pull/327>`_) - Add ClientSession object for cookie storage and default headers (`328 <https://github.com/aio-libs/aiohttp/pull/328>`_) - Add `keep_alive_on` argument for HTTP server handler.
0.15.1 not secure
=================== - Pass Autobahn Testsuite tests - Fixed websocket fragmentation - Fixed websocket close procedure - Fixed parser buffer limits - Added `timeout` parameter to WebSocketResponse ctor - Added `WebSocketResponse.close_code` attribute
0.15.0 not secure
=================== - Client WebSockets support - New Multipart system (`273 <https://github.com/aio-libs/aiohttp/pull/273>`_) - Support for "Except" header (`287 <https://github.com/aio-libs/aiohttp/pull/287>`_) (`#267 <https://github.com/aio-libs/aiohttp/pull/267>`_) - Set default Content-Type for post requests (`184 <https://github.com/aio-libs/aiohttp/pull/184>`_) - Fix issue with construction dynamic route with regexps and trailing slash (`266 <https://github.com/aio-libs/aiohttp/pull/266>`_) - Add repr to web.Request - Add repr to web.Response - Add repr for NotFound and NotAllowed match infos - Add repr for web.Application - Add repr to UrlMappingMatchInfo (`217 <https://github.com/aio-libs/aiohttp/pull/217>`_) - Gunicorn 19.2.x compatibility
0.14.4 not secure
=================== - Fix issue with error during constructing of url with regex parts (`264 <https://github.com/aio-libs/aiohttp/pull/264>`_)
0.14.3 not secure
=================== - Use path='/' by default for cookies (`261 <https://github.com/aio-libs/aiohttp/pull/261>`_)
0.14.2 not secure
=================== - Connections leak in BaseConnector (`253 <https://github.com/aio-libs/aiohttp/pull/253>`_) - Do not swallow websocket reader exceptions (`255 <https://github.com/aio-libs/aiohttp/pull/255>`_) - web.Request's read, text, json are memorized (`250 <https://github.com/aio-libs/aiohttp/pull/250>`_)
0.14.1 not secure
=================== - HttpMessage._add_default_headers does not overwrite existing headers (`216 <https://github.com/aio-libs/aiohttp/pull/216>`_) - Expose multidict classes at package level - add `aiohttp.web.WebSocketResponse` - According to RFC 6455 websocket subprotocol preference order is provided by client, not by server - websocket's ping and pong accept optional message parameter - multidict views do not accept `getall` parameter anymore, it returns the full body anyway. - multidicts have optional Cython optimization, cythonized version of multidicts is about 5 times faster than pure Python. - multidict.getall() returns `list`, not `tuple`. - Backward incompatible change: now there are two mutable multidicts (`MultiDict`, `CIMultiDict`) and two immutable multidict proxies (`MultiDictProxy` and `CIMultiDictProxy`). Previous edition of multidicts was not a part of public API BTW. - Router refactoring to push Not Allowed and Not Found in middleware processing - Convert `ConnectionError` to `aiohttp.DisconnectedError` and don't eat `ConnectionError` exceptions from web handlers. - Remove hop headers from Response class, wsgi response still uses hop headers. - Allow to send raw chunked encoded response. - Allow to encode output bytes stream into chunked encoding. - Allow to compress output bytes stream with `deflate` encoding. - Server has 75 seconds keepalive timeout now, was non-keepalive by default. - Application does not accept `**kwargs` anymore ((`243 <https://github.com/aio-libs/aiohttp/pull/243>`_)). - Request is inherited from dict now for making per-request storage to middlewares ((`242 <https://github.com/aio-libs/aiohttp/pull/242>`_)).
0.13.1 not secure
=================== - Add `aiohttp.web.StreamResponse.started` property (`213 <https://github.com/aio-libs/aiohttp/pull/213>`_) - HTML escape traceback text in `ServerHttpProtocol.handle_error` - Mention handler and middlewares in `aiohttp.web.RequestHandler.handle_request` on error ((`218 <https://github.com/aio-libs/aiohttp/pull/218>`_))
0.13.0 not secure
=================== - `StreamResponse.charset` converts value to lower-case on assigning. - Chain exceptions when raise `ClientRequestError`. - Support custom regexps in route variables (`204 <https://github.com/aio-libs/aiohttp/pull/204>`_) - Fixed graceful shutdown, disable keep-alive on connection closing. - Decode HTTP message with `utf-8` encoding, some servers send headers in utf-8 encoding (`207 <https://github.com/aio-libs/aiohttp/pull/207>`_) - Support `aiohtt.web` middlewares (`209 <https://github.com/aio-libs/aiohttp/pull/209>`_) - Add ssl_context to TCPConnector (`206 <https://github.com/aio-libs/aiohttp/pull/206>`_)
0.12.0 not secure
=================== - Deep refactoring of `aiohttp.web` in backward-incompatible manner. Sorry, we have to do this. - Automatically force aiohttp.web handlers to coroutines in `UrlDispatcher.add_route()` (`186 <https://github.com/aio-libs/aiohttp/pull/186>`_) - Rename `Request.POST()` function to `Request.post()` - Added POST attribute - Response processing refactoring: constructor does not accept Request instance anymore. - Pass application instance to finish callback - Exceptions refactoring - Do not unquote query string in `aiohttp.web.Request` - Fix concurrent access to payload in `RequestHandle.handle_request()` - Add access logging to `aiohttp.web` - Gunicorn worker for `aiohttp.web` - Removed deprecated `AsyncGunicornWorker` - Removed deprecated HttpClient
0.11.0 not secure
=================== - Support named routes in `aiohttp.web.UrlDispatcher` (`179 <https://github.com/aio-libs/aiohttp/pull/179>`_) - Make websocket subprotocols conform to spec (`181 <https://github.com/aio-libs/aiohttp/pull/181>`_)
0.10.2 not secure
=================== - Don't unquote `environ['PATH_INFO']` in wsgi.py (`177 <https://github.com/aio-libs/aiohttp/pull/177>`_)
0.10.1 not secure
=================== - aiohttp.web.HTTPException and descendants now files response body with string like `404: NotFound` - Fix multidict `__iter__`, the method should iterate over keys, not (key, value) pairs.
0.10.0 not secure
=================== - Add aiohttp.web subpackage for highlevel HTTP server support. - Add *reason* optional parameter to aiohttp.protocol.Response ctor. - Fix aiohttp.client bug for sending file without content-type. - Change error text for connection closed between server responses from 'Can not read status line' to explicit 'Connection closed by server' - Drop closed connections from connector (`173 <https://github.com/aio-libs/aiohttp/pull/173>`_) - Set server.transport to None on .closing() (`172 <https://github.com/aio-libs/aiohttp/pull/172>`_)
0.9.3 not secure
================== - Fix compatibility with asyncio 3.4.1+ (`170 <https://github.com/aio-libs/aiohttp/pull/170>`_)
0.9.2 not secure
================== - Improve redirect handling (`157 <https://github.com/aio-libs/aiohttp/pull/157>`_) - Send raw files as is (`153 <https://github.com/aio-libs/aiohttp/pull/153>`_) - Better websocket support (`150 <https://github.com/aio-libs/aiohttp/pull/150>`_)
0.9.1 not secure
================== - Added MultiDict support for client request params and data (`114 <https://github.com/aio-libs/aiohttp/pull/114>`_). - Fixed parameter type for IncompleteRead exception (`118 <https://github.com/aio-libs/aiohttp/pull/118>`_). - Strictly require ASCII headers names and values (`137 <https://github.com/aio-libs/aiohttp/pull/137>`_) - Keep port in ProxyConnector (`128 <https://github.com/aio-libs/aiohttp/pull/128>`_). - Python 3.4.1 compatibility (`131 <https://github.com/aio-libs/aiohttp/pull/131>`_).
0.9.0 not secure
================== - Better client basic authentication support (`112 <https://github.com/aio-libs/aiohttp/pull/112>`_). - Fixed incorrect line splitting in HttpRequestParser (`97 <https://github.com/aio-libs/aiohttp/pull/97>`_). - Support StreamReader and DataQueue as request data. - Client files handling refactoring (`20 <https://github.com/aio-libs/aiohttp/pull/20>`_). - Backward incompatible: Replace DataQueue with StreamReader for request payload (`87 <https://github.com/aio-libs/aiohttp/pull/87>`_).
0.8.4 not secure
================== - Change ProxyConnector authorization parameters.
0.8.3 not secure
================== - Publish TCPConnector properties: verify_ssl, family, resolve, resolved_hosts. - Don't parse message body for HEAD responses. - Refactor client response decoding.
0.8.2 not secure
================== - Make ProxyConnector.proxy immutable property. - Make UnixConnector.path immutable property. - Fix resource leak for aiohttp.request() with implicit connector. - Rename Connector's reuse_timeout to keepalive_timeout.
0.8.1 not secure
================== - Use case insensitive multidict for server request/response headers. - MultiDict.getall() accepts default value. - Catch server ConnectionError. - Accept MultiDict (and derived) instances in aiohttp.request header argument. - Proxy 'CONNECT' support.
0.8.0 not secure
================== - Add support for utf-8 values in HTTP headers - Allow to use custom response class instead of HttpResponse - Use MultiDict for client request headers - Use MultiDict for server request/response headers - Store response headers in ClientResponse.headers attribute - Get rid of timeout parameter in aiohttp.client API - Exceptions refactoring
0.7.3 not secure
================== - Simple HTTP proxy support.
0.7.2 not secure
================== - Get rid of `__del__` methods - Use ResourceWarning instead of logging warning record.
0.7.1 not secure
================== - Do not unquote client request urls. - Allow multiple waiters on transport drain. - Do not return client connection to pool in case of exceptions. - Rename SocketConnector to TCPConnector and UnixSocketConnector to UnixConnector.
0.7.0 not secure
================== - Connection flow control. - HTTP client session/connection pool refactoring. - Better handling for bad server requests.
0.6.5 not secure
================== - Added client session reuse timeout. - Better client request cancellation support. - Better handling responses without content length. - Added HttpClient verify_ssl parameter support.
0.6.4 not secure
================== - Log content-length missing warning only for put and post requests.
0.6.3 not secure
================== - Better support for server exit. - Read response body until EOF if content-length is not defined (`14 <https://github.com/aio-libs/aiohttp/pull/14>`_)
0.6.2 not secure
================== - Fix trailing char in allowed_methods. - Start slow request timer for first request.
0.6.1 not secure
================== - Added utility method HttpResponse.read_and_close() - Added slow request timeout. - Enable socket SO_KEEPALIVE if available.
0.6.0 not secure
================== - Better handling for process exit.
0.5.0 not secure
================== - Allow to use custom HttpRequest client class. - Use gunicorn keepalive setting for asynchronous worker. - Log leaking responses. - python 3.4 compatibility
0.4.4 not secure
================== - Resolve only AF_INET family, because it is not clear how to pass extra info to asyncio.
0.4.3 not secure
================== - Allow to wait completion of request with `HttpResponse.wait_for_close()`
0.4.2 not secure
================== - Handle exception in client request stream. - Prevent host resolving for each client request.
0.4.1 not secure
================== - Added client support for `expect: 100-continue` header.
0.4 not secure
================ - Added custom wsgi application close procedure - Fixed concurrent host failure in HttpClient
0.3 not secure
================ - Added PortMapperWorker - Added HttpClient - Added TCP connection timeout to HTTP client - Better client connection errors handling - Gracefully handle process exit
0.2 not secure
=== - Fix packaging ========= Changelog ========= .. You should *NOT* be adding new change log entries to this file, this file is managed by towncrier. You *may* edit previous change logs to fix problems like typo corrections or such. To add a new change log entry, please see https://pip.pypa.io/en/latest/development/#adding-a-news-entry we named the news folder "changes". WARNING: Don't drop the next directive! .. towncrier release notes start