Source: python-aiojobs
Version: 1.1.0-2
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20240115 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> pytest tests
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.7, pytest-7.4.4, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: cov-4.1.0, asyncio-0.20.3, aiohttp-1.0.5
> asyncio: mode=Mode.AUTO
> collected 47 items
> 
> tests/test_aiohttp.py F.FFException ignored in: <coroutine object 
> Scheduler._wait_failed at 0x7f26d3a204a0>
> Traceback (most recent call last):
>   File "/<<PKGBUILDDIR>>/aiojobs/_scheduler.py", line 156, in _wait_failed
>     task = await self._failed_tasks.get()
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/queues.py", line 160, in get
>     getter.cancel()  # Just in case getter is not done yet.
>     ^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
>     self._check_closed()
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in 
> _check_closed
>     raise RuntimeError('Event loop is closed')
> RuntimeError: Event loop is closed
> Exception ignored in: <coroutine object Scheduler._wait_failed at 
> 0x7f26d396c3c0>
> Traceback (most recent call last):
>   File "/<<PKGBUILDDIR>>/aiojobs/_scheduler.py", line 156, in _wait_failed
>     task = await self._failed_tasks.get()
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/queues.py", line 160, in get
>     getter.cancel()  # Just in case getter is not done yet.
>     ^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
>     self._check_closed()
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in 
> _check_closed
>     raise RuntimeError('Event loop is closed')
> RuntimeError: Event loop is closed
> Exception ignored in: <coroutine object Scheduler._wait_failed at 
> 0x7f26d396d380>
> Traceback (most recent call last):
>   File "/<<PKGBUILDDIR>>/aiojobs/_scheduler.py", line 156, in _wait_failed
>     task = await self._failed_tasks.get()
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/queues.py", line 160, in get
>     getter.cancel()  # Just in case getter is not done yet.
>     ^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
>     self._check_closed()
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in 
> _check_closed
>     raise RuntimeError('Event loop is closed')
> RuntimeError: Event loop is closed
> FF.                                            [ 14%]
> tests/test_job.py ................                                       [ 
> 48%]
> tests/test_scheduler.py ........................                         
> [100%]/usr/lib/python3.11/tokenize.py:529: RuntimeWarning: coroutine 
> 'Scheduler._wait_failed' was never awaited
>   pseudomatch = _compile(PseudoToken).match(line, pos)
> RuntimeWarning: Enable tracemalloc to get the object allocation traceback
> 
> 
> =================================== FAILURES 
> ===================================
> _________________________________ test_plugin 
> __________________________________
> 
> aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f26d38779c0>
> 
>     async def test_plugin(aiohttp_client: _Client) -> None:
>         job = None
>     
>         async def coro() -> None:
>             await asyncio.sleep(10)
>     
>         async def handler(request: web.Request) -> web.Response:
>             nonlocal job
>     
>             job = await spawn(request, coro())
>             assert not job.closed
>             return web.Response()
>     
>         app = web.Application()
>         app.router.add_get("/", handler)
>         aiojobs_setup(app)
>     
> >       client = await aiohttp_client(app)
> 
> tests/test_aiohttp.py:40: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/pytest_aiohttp/plugin.py:165: in go
>     await client.start_server()
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:287: in start_server
>     await self._server.start_server(loop=self._loop)
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:121: in start_server
>     await self.runner.setup()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:295: in setup
>     self._server = await self._make_server()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:400: in _make_server
>     await self._app.startup()
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:456: in startup
>     await self.on_startup.send(self)
> /usr/lib/python3/dist-packages/aiosignal/__init__.py:36: in send
>     await receiver(*args, **kwargs)  # type: ignore
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:578: in _on_startup
>     await it.__anext__()
> aiojobs/aiohttp.py:65: in cleanup_context
>     app["AIOJOBS_SCHEDULER"] = scheduler = Scheduler(**kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Application 0x7f26d379e210>, key = 'AIOJOBS_SCHEDULER'
> value = <Scheduler jobs=0>
> 
>     def __setitem__(self, key: Union[str, AppKey[_T]], value: Any) -> None:
>         self._check_frozen()
>         if not isinstance(key, AppKey):
> >           warnings.warn(
>                 "It is recommended to use web.AppKey instances for keys.\n"
>                 + "https://docs.aiohttp.org/en/stable/web_advanced.html";
>                 + "#application-s-config",
>                 category=NotAppKeyWarning,
>                 stacklevel=2,
>             )
> E           aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use 
> web.AppKey instances for keys.
> E           
> https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config
> 
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:215: NotAppKeyWarning
> _________________________________ test_atomic 
> __________________________________
> 
> aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f26d39ec680>
> 
>     async def test_atomic(aiohttp_client: _Client) -> None:
>         @atomic
>         async def handler(request: web.Request) -> web.Response:
>             await asyncio.sleep(0)
>             return web.Response()
>     
>         app = web.Application()
>         app.router.add_get("/", handler)
>         aiojobs_setup(app)
>     
> >       client = await aiohttp_client(app)
> 
> tests/test_aiohttp.py:74: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/pytest_aiohttp/plugin.py:165: in go
>     await client.start_server()
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:287: in start_server
>     await self._server.start_server(loop=self._loop)
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:121: in start_server
>     await self.runner.setup()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:295: in setup
>     self._server = await self._make_server()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:400: in _make_server
>     await self._app.startup()
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:456: in startup
>     await self.on_startup.send(self)
> /usr/lib/python3/dist-packages/aiosignal/__init__.py:36: in send
>     await receiver(*args, **kwargs)  # type: ignore
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:578: in _on_startup
>     await it.__anext__()
> aiojobs/aiohttp.py:65: in cleanup_context
>     app["AIOJOBS_SCHEDULER"] = scheduler = Scheduler(**kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Application 0x7f26d3a08b90>, key = 'AIOJOBS_SCHEDULER'
> value = <Scheduler jobs=0>
> 
>     def __setitem__(self, key: Union[str, AppKey[_T]], value: Any) -> None:
>         self._check_frozen()
>         if not isinstance(key, AppKey):
> >           warnings.warn(
>                 "It is recommended to use web.AppKey instances for keys.\n"
>                 + "https://docs.aiohttp.org/en/stable/web_advanced.html";
>                 + "#application-s-config",
>                 category=NotAppKeyWarning,
>                 stacklevel=2,
>             )
> E           aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use 
> web.AppKey instances for keys.
> E           
> https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config
> 
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:215: NotAppKeyWarning
> ____________________________ test_atomic_from_view 
> _____________________________
> 
> aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f26d39eefc0>
> 
>     async def test_atomic_from_view(aiohttp_client: _Client) -> None:
>         app = web.Application()
>     
>         class MyView(web.View):
>             @atomic
>             async def get(self) -> web.Response:
>                 return web.Response(text=self.request.method)
>     
>         app.router.add_route("*", "/", MyView)
>         aiojobs_setup(app)
>     
> >       client = await aiohttp_client(app)
> 
> tests/test_aiohttp.py:96: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/pytest_aiohttp/plugin.py:165: in go
>     await client.start_server()
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:287: in start_server
>     await self._server.start_server(loop=self._loop)
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:121: in start_server
>     await self.runner.setup()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:295: in setup
>     self._server = await self._make_server()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:400: in _make_server
>     await self._app.startup()
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:456: in startup
>     await self.on_startup.send(self)
> /usr/lib/python3/dist-packages/aiosignal/__init__.py:36: in send
>     await receiver(*args, **kwargs)  # type: ignore
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:578: in _on_startup
>     await it.__anext__()
> aiojobs/aiohttp.py:65: in cleanup_context
>     app["AIOJOBS_SCHEDULER"] = scheduler = Scheduler(**kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Application 0x7f26d385b7d0>, key = 'AIOJOBS_SCHEDULER'
> value = <Scheduler jobs=0>
> 
>     def __setitem__(self, key: Union[str, AppKey[_T]], value: Any) -> None:
>         self._check_frozen()
>         if not isinstance(key, AppKey):
> >           warnings.warn(
>                 "It is recommended to use web.AppKey instances for keys.\n"
>                 + "https://docs.aiohttp.org/en/stable/web_advanced.html";
>                 + "#application-s-config",
>                 category=NotAppKeyWarning,
>                 stacklevel=2,
>             )
> E           aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use 
> web.AppKey instances for keys.
> E           
> https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config
> 
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:215: NotAppKeyWarning
> ___________________________ test_nested_application 
> ____________________________
> 
> aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f26d39ef4c0>
> 
>     async def test_nested_application(aiohttp_client: _Client) -> None:
>         app = web.Application()
>         aiojobs_setup(app)
>     
>         app2 = web.Application()
>     
>         class MyView(web.View):
>             async def get(self) -> web.Response:
>                 assert get_scheduler_from_request(self.request) == 
> get_scheduler_from_app(
>                     app
>                 )
>                 return web.Response()
>     
>         app2.router.add_route("*", "/", MyView)
>         app.add_subapp("/sub/", app2)
>     
> >       client = await aiohttp_client(app)
> 
> tests/test_aiohttp.py:124: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/pytest_aiohttp/plugin.py:165: in go
>     await client.start_server()
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:287: in start_server
>     await self._server.start_server(loop=self._loop)
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:121: in start_server
>     await self.runner.setup()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:295: in setup
>     self._server = await self._make_server()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:400: in _make_server
>     await self._app.startup()
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:456: in startup
>     await self.on_startup.send(self)
> /usr/lib/python3/dist-packages/aiosignal/__init__.py:36: in send
>     await receiver(*args, **kwargs)  # type: ignore
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:578: in _on_startup
>     await it.__anext__()
> aiojobs/aiohttp.py:65: in cleanup_context
>     app["AIOJOBS_SCHEDULER"] = scheduler = Scheduler(**kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Application 0x7f26d37d2a50>, key = 'AIOJOBS_SCHEDULER'
> value = <Scheduler jobs=0>
> 
>     def __setitem__(self, key: Union[str, AppKey[_T]], value: Any) -> None:
>         self._check_frozen()
>         if not isinstance(key, AppKey):
> >           warnings.warn(
>                 "It is recommended to use web.AppKey instances for keys.\n"
>                 + "https://docs.aiohttp.org/en/stable/web_advanced.html";
>                 + "#application-s-config",
>                 category=NotAppKeyWarning,
>                 stacklevel=2,
>             )
> E           aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use 
> web.AppKey instances for keys.
> E           
> https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config
> 
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:215: NotAppKeyWarning
> __________________ test_nested_application_separate_scheduler 
> __________________
> 
> aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f26d39eec00>
> 
>     async def test_nested_application_separate_scheduler(aiohttp_client: 
> _Client) -> None:
>         app = web.Application()
>         aiojobs_setup(app)
>     
>         app2 = web.Application()
>         aiojobs_setup(app2)
>     
>         class MyView(web.View):
>             async def get(self) -> web.Response:
>                 assert get_scheduler_from_request(self.request) != 
> get_scheduler_from_app(
>                     app
>                 )
>                 assert get_scheduler_from_request(self.request) == 
> get_scheduler_from_app(
>                     app2
>                 )
>                 return web.Response()
>     
>         app2.router.add_route("*", "/", MyView)
>         app.add_subapp("/sub/", app2)
>     
> >       client = await aiohttp_client(app)
> 
> tests/test_aiohttp.py:149: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/pytest_aiohttp/plugin.py:165: in go
>     await client.start_server()
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:287: in start_server
>     await self._server.start_server(loop=self._loop)
> /usr/lib/python3/dist-packages/aiohttp/test_utils.py:121: in start_server
>     await self.runner.setup()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:295: in setup
>     self._server = await self._make_server()
> /usr/lib/python3/dist-packages/aiohttp/web_runner.py:400: in _make_server
>     await self._app.startup()
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:456: in startup
>     await self.on_startup.send(self)
> /usr/lib/python3/dist-packages/aiosignal/__init__.py:36: in send
>     await receiver(*args, **kwargs)  # type: ignore
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:578: in _on_startup
>     await it.__anext__()
> aiojobs/aiohttp.py:65: in cleanup_context
>     app["AIOJOBS_SCHEDULER"] = scheduler = Scheduler(**kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = <Application 0x7f26d394c4d0>, key = 'AIOJOBS_SCHEDULER'
> value = <Scheduler jobs=0>
> 
>     def __setitem__(self, key: Union[str, AppKey[_T]], value: Any) -> None:
>         self._check_frozen()
>         if not isinstance(key, AppKey):
> >           warnings.warn(
>                 "It is recommended to use web.AppKey instances for keys.\n"
>                 + "https://docs.aiohttp.org/en/stable/web_advanced.html";
>                 + "#application-s-config",
>                 category=NotAppKeyWarning,
>                 stacklevel=2,
>             )
> E           aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use 
> web.AppKey instances for keys.
> E           
> https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config
> 
> /usr/lib/python3/dist-packages/aiohttp/web_app.py:215: NotAppKeyWarning
> 
> ---------- coverage: platform linux, python 3.11.7-final-0 -----------
> Name                      Stmts   Miss  Cover
> ---------------------------------------------
> aiojobs/__init__.py          11      4    64%
> aiojobs/_job.py             113      3    97%
> aiojobs/_scheduler.py       106      1    99%
> aiojobs/aiohttp.py           34     10    71%
> tests/__init__.py             0      0   100%
> tests/conftest.py            19      0   100%
> tests/test_aiohttp.py       105     35    67%
> tests/test_job.py           193     17    91%
> tests/test_scheduler.py     292      9    97%
> ---------------------------------------------
> TOTAL                       873     79    91%
> 
> =========================== short test summary info 
> ============================
> FAILED tests/test_aiohttp.py::test_plugin - 
> aiohttp.web_exceptions.NotAppKeyW...
> FAILED tests/test_aiohttp.py::test_atomic - 
> aiohttp.web_exceptions.NotAppKeyW...
> FAILED tests/test_aiohttp.py::test_atomic_from_view - 
> aiohttp.web_exceptions....
> FAILED tests/test_aiohttp.py::test_nested_application - 
> aiohttp.web_exception...
> FAILED tests/test_aiohttp.py::test_nested_application_separate_scheduler - 
> ai...
> ========================= 5 failed, 42 passed in 2.36s 
> =========================
> Unclosed client session
> client_session: <aiohttp.client.ClientSession object at 0x7f26d37d0090>
> Task was destroyed but it is pending!
> task: <Task pending name='Task-24' coro=<Scheduler._wait_failed() running at 
> /<<PKGBUILDDIR>>/aiojobs/_scheduler.py:156> wait_for=<Future pending 
> cb=[Task.task_wakeup()]>>
> Exception ignored in: <coroutine object Scheduler._wait_failed at 
> 0x7f26d396eb20>
> Traceback (most recent call last):
>   File "/<<PKGBUILDDIR>>/aiojobs/_scheduler.py", line 156, in _wait_failed
>     task = await self._failed_tasks.get()
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/queues.py", line 160, in get
>     getter.cancel()  # Just in case getter is not done yet.
>     ^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
>     self._check_closed()
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in 
> _check_closed
>     raise RuntimeError('Event loop is closed')
> RuntimeError: Event loop is closed
> Unclosed client session
> client_session: <aiohttp.client.ClientSession object at 0x7f26d394d310>
> Task was destroyed but it is pending!
> task: <Task pending name='Task-28' coro=<Scheduler._wait_failed() running at 
> /<<PKGBUILDDIR>>/aiojobs/_scheduler.py:156> wait_for=<Future pending 
> cb=[Task.task_wakeup()]>>
> Exception ignored in: <coroutine object Scheduler._wait_failed at 
> 0x7f26d3a203c0>
> Traceback (most recent call last):
>   File "/<<PKGBUILDDIR>>/aiojobs/_scheduler.py", line 156, in _wait_failed
>     task = await self._failed_tasks.get()
>            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/queues.py", line 160, in get
>     getter.cancel()  # Just in case getter is not done yet.
>     ^^^^^^^^^^^^^^^
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 761, in call_soon
>     self._check_closed()
>   File "/usr/lib/python3.11/asyncio/base_events.py", line 519, in 
> _check_closed
>     raise RuntimeError('Event loop is closed')
> RuntimeError: Event loop is closed
> make[1]: *** [debian/rules:7: override_dh_auto_test] Error 1


The full build log is available from:
http://qa-logs.debian.net/2024/01/15/python-aiojobs_1.1.0-2_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20240115;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240115&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

Reply via email to