Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-aiohttp for openSUSE:Factory checked in at 2021-09-11 22:24:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-aiohttp (Old) and /work/SRC/openSUSE:Factory/.python-aiohttp.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aiohttp" Sat Sep 11 22:24:15 2021 rev:24 rq:917994 version:3.7.4 Changes: -------- --- /work/SRC/openSUSE:Factory/python-aiohttp/python-aiohttp.changes 2021-06-12 20:05:27.708658260 +0200 +++ /work/SRC/openSUSE:Factory/.python-aiohttp.new.1899/python-aiohttp.changes 2021-09-11 22:24:24.571379453 +0200 @@ -1,0 +2,19 @@ +Fri Sep 10 14:22:31 UTC 2021 - Matej Cepl <mc...@suse.com> + +- Restore python39-failures.patch, which is actually still needed. + +------------------------------------------------------------------- +Thu Sep 9 20:05:44 UTC 2021 - Matej Cepl <mc...@suse.com> + +- Remove python39-failures.patch and replace it with actual fix + of the issue in remove_deprecated_loop_argument.patch. +- Add backport_fix_for_setting_cookies.patch for backport of + fixes from 3.8 branch. + +------------------------------------------------------------------- +Wed Sep 8 21:10:23 UTC 2021 - Matej Cepl <mc...@suse.com> + +- Add python39-failures.patch to fix test problems with Python 3.9.7+ + (gh#aio-libs/aiohttp#5991). + +------------------------------------------------------------------- New: ---- backport_fix_for_setting_cookies.patch python39-failures.patch remove_deprecated_loop_argument.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-aiohttp.spec ++++++ --- /var/tmp/diff_new_pack.6vyUJK/_old 2021-09-11 22:24:25.151380025 +0200 +++ /var/tmp/diff_new_pack.6vyUJK/_new 2021-09-11 22:24:25.155380029 +0200 @@ -29,6 +29,15 @@ # PATCH-FIX-UPSTREAM stdlib-typing_extensions.patch gh#aio-libs/aiohttp#5374 mc...@suse.com # Fix typing_extensions imports. Patch1: stdlib-typing_extensions.patch +# PATCH-FIX-UPSTREAM python39-failures.patch gh#aio-libs/aiohttp#5991 mc...@suse.com +# Bridge over Python 3.9.6 v 3.9.7 incompatibilities +Patch2: python39-failures.patch +# PATCH-FIX-UPSTREAM remove_deprecated_loop_argument.patch gh#aio-libs/aiohttp#5991 mc...@suse.com +# remove deprecated loop argument +Patch3: remove_deprecated_loop_argument.patch +# PATCH-FIX-UPSTREAM backport_fix_for_setting_cookies.patch gh#aio-libs/aiohttp#5233 mc...@suse.com +# backport of fixes from 3.8 branch +Patch4: backport_fix_for_setting_cookies.patch BuildRequires: %{python_module Cython} BuildRequires: %{python_module async_timeout >= 3.0} BuildRequires: %{python_module attrs >= 17.3.0} ++++++ backport_fix_for_setting_cookies.patch ++++++ >From d0453ed56820e32802be743bf7a7b7027f9c9589 Mon Sep 17 00:00:00 2001 From: Sam Bull <aa6...@sambull.org> Date: Sat, 14 Nov 2020 15:24:43 +0000 Subject: [PATCH 1/7] Backport fix for setting cookies --- CHANGES/5233.bugfix | 1 + aiohttp/web_protocol.py | 21 ++++++++++----------- tests/test_web_exceptions.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 11 deletions(-) --- /dev/null +++ b/CHANGES/5233.bugfix @@ -0,0 +1 @@ +Fix cookies disappearing from HTTPExceptions. --- a/aiohttp/web_protocol.py +++ b/aiohttp/web_protocol.py @@ -423,9 +423,7 @@ class RequestHandler(BaseProtocol): finally: self._current_request = None except HTTPException as exc: - resp = Response( - status=exc.status, reason=exc.reason, text=exc.text, headers=exc.headers - ) + resp = exc reset = await self.finish_response(request, resp, start_time) except asyncio.CancelledError: raise @@ -437,6 +435,15 @@ class RequestHandler(BaseProtocol): resp = self.handle_error(request, 500, exc) reset = await self.finish_response(request, resp, start_time) else: + # Deprecation warning (See #2415) + if getattr(resp, "__http_exception__", False): + warnings.warn( + "returning HTTPException object is deprecated " + "(#2415) and will be removed, " + "please raise the exception instead", + DeprecationWarning, + ) + reset = await self.finish_response(request, resp, start_time) return resp, reset @@ -486,14 +493,6 @@ class RequestHandler(BaseProtocol): except (asyncio.CancelledError, ConnectionError): self.log_debug("Ignored premature client disconnection") break - # Deprecation warning (See #2415) - if getattr(resp, "__http_exception__", False): - warnings.warn( - "returning HTTPException object is deprecated " - "(#2415) and will be removed, " - "please raise the exception instead", - DeprecationWarning, - ) # Drop the processed task from asyncio.Task.all_tasks() early del task --- a/tests/test_web_exceptions.py +++ b/tests/test_web_exceptions.py @@ -203,3 +203,31 @@ def test_HTTPException_retains_cause() - tb = "".join(format_exception(ei.type, ei.value, ei.tb)) assert "CustomException" in tb assert "direct cause" in tb + + +async def test_HTTPException_retains_cookie(aiohttp_client): + @web.middleware + async def middleware(request, handler): + try: + return await handler(request) + except web.HTTPException as exc: + exc.set_cookie("foo", request["foo"]) + raise exc + + async def save(request): + request["foo"] = "works" + raise web.HTTPFound("/show") + + async def show(request): + return web.Response(text=request.cookies["foo"]) + + app = web.Application(middlewares=[middleware]) + app.router.add_route("GET", "/save", save) + app.router.add_route("GET", "/show", show) + client = await aiohttp_client(app) + + resp = await client.get("/save") + assert resp.status == 200 + assert str(resp.url)[-5:] == "/show" + text = await resp.text() + assert text == "works" ++++++ python39-failures.patch ++++++ --- tests/test_web_middleware.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) --- a/tests/test_web_middleware.py +++ b/tests/test_web_middleware.py @@ -1,4 +1,5 @@ import re +import sys from typing import Any import pytest @@ -6,6 +7,7 @@ from yarl import URL from aiohttp import web +py39 = sys.version_info[:3] >= (3, 9, 7) async def test_middleware_modifies_response(loop, aiohttp_client) -> None: async def handler(request): @@ -410,7 +412,10 @@ async def test_old_style_middleware(loop txt = await resp.text() assert "OK[old style middleware]" == txt - assert len(warning_checker) == 1 + if py39: + assert len(warning_checker) == 2 + else: + assert len(warning_checker) == 1 msg = str(warning_checker.list[0].message) assert re.match( "^old-style middleware " @@ -464,7 +469,10 @@ async def test_mixed_middleware(loop, ai txt = await resp.text() assert "OK[new style 2][old style 2][new style 1][old style 1]" == txt - assert len(w) == 2 + if py39: + assert len(w) == 3 + else: + assert len(w) == 2 tmpl = ( "^old-style middleware " '"<function test_mixed_middleware.<locals>.' @@ -503,7 +511,10 @@ async def test_old_style_middleware_clas txt = await resp.text() assert "OK[old style middleware]" == txt - assert len(warning_checker) == 1 + if py39: + assert len(warning_checker) == 2 + else: + assert len(warning_checker) == 1 msg = str(warning_checker.list[0].message) assert re.match( "^old-style middleware " @@ -537,7 +548,10 @@ async def test_new_style_middleware_clas txt = await resp.text() assert "OK[new style middleware]" == txt - assert len(warning_checker) == 0 + if py39: + assert len(warning_checker) == 1 + else: + assert len(warning_checker) == 0 async def test_new_style_middleware_method(loop, aiohttp_client) -> None: @@ -563,4 +577,7 @@ async def test_new_style_middleware_meth txt = await resp.text() assert "OK[new style middleware]" == txt - assert len(warning_checker) == 0 + if py39: + assert len(warning_checker) == 1 + else: + assert len(warning_checker) == 0 ++++++ remove_deprecated_loop_argument.patch ++++++ >From dd3a89130b5769218550159ebbab9e28d8b974a3 Mon Sep 17 00:00:00 2001 From: Hanaasagi <ambiguous...@gmail.com> Date: Tue, 3 Aug 2021 11:53:45 +0000 Subject: [PATCH] fix: remove deprecated loop argument for asnycio.sleep/gather calls --- CHANGES/5905.bugfix | 1 + aiohttp/web.py | 4 +--- tests/test_locks.py | 6 +++--- 3 files changed, 5 insertions(+), 6 deletions(-) create mode 100644 CHANGES/5905.bugfix --- /dev/null +++ b/CHANGES/5905.bugfix @@ -0,0 +1 @@ +remove deprecated loop argument for asnycio.sleep/gather calls --- a/aiohttp/web.py +++ b/aiohttp/web.py @@ -440,9 +440,7 @@ def _cancel_tasks( for task in to_cancel: task.cancel() - loop.run_until_complete( - asyncio.gather(*to_cancel, loop=loop, return_exceptions=True) - ) + loop.run_until_complete(asyncio.gather(*to_cancel, return_exceptions=True)) for task in to_cancel: if task.cancelled(): --- a/tests/test_locks.py +++ b/tests/test_locks.py @@ -18,7 +18,7 @@ class TestEventResultOrError: return 1 t = loop.create_task(c()) - await asyncio.sleep(0, loop=loop) + await asyncio.sleep(0) e = Exception() ev.set(exc=e) assert (await t) == e @@ -31,7 +31,7 @@ class TestEventResultOrError: return 1 t = loop.create_task(c()) - await asyncio.sleep(0, loop=loop) + await asyncio.sleep(0) ev.set() assert (await t) == 1 @@ -43,7 +43,7 @@ class TestEventResultOrError: t1 = loop.create_task(c()) t2 = loop.create_task(c()) - await asyncio.sleep(0, loop=loop) + await asyncio.sleep(0) ev.cancel() ev.set()