1616Bug fixes
1717---------
1818
19- - Adjusted ``FileResponse `` to check file existence and access when preparing the response -- by :user: `steverep `.
20-
21- The :py:class: `~aiohttp.web.FileResponse ` class was modified to respond with
22- 403 Forbidden or 404 Not Found as appropriate. Previously, it would cause a
23- server error if the path did not exist or could not be accessed. Checks for
24- existence, non-regular files, and permissions were expected to be done in the
25- route handler. For static routes, this now permits a compressed file to exist
26- without its uncompressed variant and still be served. In addition, this
27- changes the response status for files without read permission to 403, and for
28- non-regular files from 404 to 403 for consistency.
29-
30-
31- *Related issues and pull requests on GitHub: *
32- :issue: `8182 `.
33-
34-
35-
3619- Fixed server response headers for ``Content-Type `` and ``Content-Encoding `` for
3720 static compressed files -- by :user: `steverep `.
3821
@@ -47,15 +30,32 @@ Bug fixes
4730
4831
4932
50- - Fix duplicate cookie expiration calls in the CookieJar implementation
33+ - Fixed duplicate cookie expiration calls in the CookieJar implementation
5134
5235
5336 *Related issues and pull requests on GitHub: *
5437 :issue: `7784 `.
5538
5639
5740
58- - Fix ``AsyncResolver `` to match ``ThreadedResolver `` behavior
41+ - Adjusted ``FileResponse `` to check file existence and access when preparing the response -- by :user: `steverep `.
42+
43+ The :py:class: `~aiohttp.web.FileResponse ` class was modified to respond with
44+ 403 Forbidden or 404 Not Found as appropriate. Previously, it would cause a
45+ server error if the path did not exist or could not be accessed. Checks for
46+ existence, non-regular files, and permissions were expected to be done in the
47+ route handler. For static routes, this now permits a compressed file to exist
48+ without its uncompressed variant and still be served. In addition, this
49+ changes the response status for files without read permission to 403, and for
50+ non-regular files from 404 to 403 for consistency.
51+
52+
53+ *Related issues and pull requests on GitHub: *
54+ :issue: `8182 `.
55+
56+
57+
58+ - Fixed ``AsyncResolver `` to match ``ThreadedResolver `` behavior
5959 -- by :user: `bdraco `.
6060
6161 On system with IPv6 support, the :py:class: `~aiohttp.resolver.AsyncResolver ` would not fallback
@@ -71,7 +71,7 @@ Bug fixes
7171
7272
7373
74- - Fix ``ws_connect `` not respecting `receive_timeout`` on WS(S) connection.
74+ - Fixed ``ws_connect `` not respecting `receive_timeout`` on WS(S) connection.
7575 -- by :user: `arcivanov `.
7676
7777
@@ -99,7 +99,7 @@ Bug fixes
9999Features
100100--------
101101
102- - Add a Request.wait_for_disconnection() method, as means of allowing request handlers to be notified of premature client disconnections.
102+ - Added a Request.wait_for_disconnection() method, as means of allowing request handlers to be notified of premature client disconnections.
103103
104104
105105 *Related issues and pull requests on GitHub: *
@@ -134,7 +134,7 @@ Features
134134
135135
136136
137- - Implement filter_cookies() with domain-matching and path-matching on the keys, instead of testing every single cookie.
137+ - Implemented filter_cookies() with domain-matching and path-matching on the keys, instead of testing every single cookie.
138138 This may break existing cookies that have been saved with `CookieJar.save() `. Cookies can be migrated with this script::
139139
140140 import pickle
@@ -151,7 +151,7 @@ Features
151151
152152
153153 *Related issues and pull requests on GitHub: *
154- :issue: `7583 `.
154+ :issue: `7583 `, :issue: ` 8535 ` .
155155
156156
157157
@@ -163,7 +163,7 @@ Features
163163
164164
165165
166- - Implement happy eyeballs
166+ - Implemented happy eyeballs
167167
168168
169169 *Related issues and pull requests on GitHub: *
@@ -180,18 +180,41 @@ Features
180180
181181
182182
183+ Removals and backward incompatible breaking changes
184+ ---------------------------------------------------
185+
186+ - The shutdown logic in 3.9 waited on all tasks, which caused issues with some libraries.
187+ In 3.10 we've changed this logic to only wait on request handlers. This means that it's
188+ important for developers to correctly handle the lifecycle of background tasks using a
189+ library such as ``aiojobs ``. If an application is using ``handler_cancellation=True `` then
190+ it is also a good idea to ensure that any :func: `asyncio.shield ` calls are replaced with
191+ :func: `aiojobs.aiohttp.shield `.
192+
193+ Please read the updated documentation on these points: \
194+ https://docs.aiohttp.org/en/stable/web_advanced.html#graceful-shutdown \
195+ https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation
196+
197+ -- by :user: `Dreamsorcerer `
198+
199+
200+ *Related issues and pull requests on GitHub: *
201+ :issue: `8495 `.
202+
203+
204+
205+
183206Improved documentation
184207----------------------
185208
186- - Add documentation for ``aiohttp.web.FileResponse ``.
209+ - Added documentation for ``aiohttp.web.FileResponse ``.
187210
188211
189212 *Related issues and pull requests on GitHub: *
190213 :issue: `3958 `.
191214
192215
193216
194- - Improve the docs for the `ssl ` params.
217+ - Improved the docs for the `ssl ` params.
195218
196219
197220 *Related issues and pull requests on GitHub: *
@@ -212,42 +235,9 @@ Contributor-facing changes
212235
213236
214237
215- Removals and backward incompatible breaking changes
216- ---------------------------------------------------
217-
218- - The shutdown logic in 3.9 waited on all tasks, which caused issues with some libraries.
219- In 3.10 we've changed this logic to only wait on request handlers. This means that it's
220- important for developers to correctly handle the lifecycle of background tasks using a
221- library such as ``aiojobs ``. If an application is using ``handler_cancellation=True `` then
222- it is also a good idea to ensure that any :func: `asyncio.shield ` calls are replaced with
223- :func: `aiojobs.aiohttp.shield `.
224-
225- Please read the updated documentation on these points:
226- https://docs.aiohttp.org/en/stable/web_advanced.html#graceful-shutdown
227- https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation
228-
229- -- by :user: `Dreamsorcerer `
230-
231-
232- *Related issues and pull requests on GitHub: *
233- :issue: `8495 `.
234-
235-
236-
237-
238238Miscellaneous internal changes
239239------------------------------
240240
241- - Improve performance of filtering cookies -- by :user: `bdraco `.
242-
243- This change is a followup to the improvements in :issue: `7583 `
244-
245-
246- *Related issues and pull requests on GitHub: *
247- :issue: `8535 `.
248-
249-
250-
251241- Improved URL handler resolution time by indexing resources in the UrlDispatcher.
252242 For applications with a large number of handlers, this should increase performance significantly.
253243 -- by :user: `bdraco `
@@ -258,7 +248,7 @@ Miscellaneous internal changes
258248
259249
260250
261- - Add `nacl_middleware <https://github.com/CosmicDNA/nacl_middleware >`_ to the list of middlewares in the third party section of the documentation.
251+ - Added `nacl_middleware <https://github.com/CosmicDNA/nacl_middleware >`_ to the list of middlewares in the third party section of the documentation.
262252
263253
264254 *Related issues and pull requests on GitHub: *
@@ -290,15 +280,15 @@ Miscellaneous internal changes
290280
291281
292282
293- - Avoid creating a future on every websocket receive -- by :user: `bdraco `.
283+ - Avoided creating a future on every websocket receive -- by :user: `bdraco `.
294284
295285
296286 *Related issues and pull requests on GitHub: *
297287 :issue: `8498 `.
298288
299289
300290
301- - Use identity checks for all ``WSMsgType `` type compares -- by :user: `bdraco `.
291+ - Updated identity checks for all ``WSMsgType `` type compares -- by :user: `bdraco `.
302292
303293
304294 *Related issues and pull requests on GitHub: *
@@ -314,7 +304,7 @@ Miscellaneous internal changes
314304
315305
316306
317- - Restore :py:class: `~aiohttp.resolver.AsyncResolver ` to be the default resolver. -- by :user: `bdraco `.
307+ - Restored :py:class: `~aiohttp.resolver.AsyncResolver ` to be the default resolver. -- by :user: `bdraco `.
318308
319309 :py:class: `~aiohttp.resolver.AsyncResolver ` was disabled by default because
320310 of IPv6 compatibility issues. These issues have been resolved and
0 commit comments