Source: asgi-lifespan
Version: 2.1.0-2
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20240313 ftbfs-trixie

Hi,

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


Relevant part (hopefully):
>  debian/rules binary
> dh binary --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" 
> module
> I: pybuild base:305: python3.12 -m build --skip-dependency-check 
> --no-isolation --wheel --outdir 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_asgi-lifespan  
> * Building wheel...
> No `packages` or `py_modules` configuration, performing automatic discovery.
> `src-layout` detected -- analysing ./src
> discovered packages -- ['asgi_lifespan', 'asgi_lifespan._concurrency']
> discovered py_modules -- []
> running bdist_wheel
> running build
> running build_py
> creating build
> creating build/lib
> creating build/lib/asgi_lifespan
> copying src/asgi_lifespan/__init__.py -> build/lib/asgi_lifespan
> copying src/asgi_lifespan/_types.py -> build/lib/asgi_lifespan
> copying src/asgi_lifespan/_manager.py -> build/lib/asgi_lifespan
> copying src/asgi_lifespan/_compat.py -> build/lib/asgi_lifespan
> copying src/asgi_lifespan/_exceptions.py -> build/lib/asgi_lifespan
> creating build/lib/asgi_lifespan/_concurrency
> copying src/asgi_lifespan/_concurrency/__init__.py -> 
> build/lib/asgi_lifespan/_concurrency
> copying src/asgi_lifespan/_concurrency/asyncio.py -> 
> build/lib/asgi_lifespan/_concurrency
> copying src/asgi_lifespan/_concurrency/base.py -> 
> build/lib/asgi_lifespan/_concurrency
> copying src/asgi_lifespan/_concurrency/trio.py -> 
> build/lib/asgi_lifespan/_concurrency
> running egg_info
> creating src/asgi_lifespan.egg-info
> writing src/asgi_lifespan.egg-info/PKG-INFO
> writing dependency_links to src/asgi_lifespan.egg-info/dependency_links.txt
> writing requirements to src/asgi_lifespan.egg-info/requires.txt
> writing top-level names to src/asgi_lifespan.egg-info/top_level.txt
> writing manifest file 'src/asgi_lifespan.egg-info/SOURCES.txt'
> reading manifest file 'src/asgi_lifespan.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> adding license file 'LICENSE'
> writing manifest file 'src/asgi_lifespan.egg-info/SOURCES.txt'
> copying src/asgi_lifespan/py.typed -> build/lib/asgi_lifespan
> installing to build/bdist.linux-x86_64/wheel
> running install
> running install_lib
> creating build/bdist.linux-x86_64
> creating build/bdist.linux-x86_64/wheel
> creating build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/__init__.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/_types.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/py.typed -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/_manager.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/_compat.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> creating build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/__init__.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/asyncio.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/base.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/trio.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_exceptions.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> running install_egg_info
> Copying src/asgi_lifespan.egg-info to 
> build/bdist.linux-x86_64/wheel/asgi_lifespan-2.1.0.egg-info
> running install_scripts
> creating build/bdist.linux-x86_64/wheel/asgi_lifespan-2.1.0.dist-info/WHEEL
> creating 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_asgi-lifespan/.tmp-8wryf6qg/asgi_lifespan-2.1.0-py3-none-any.whl'
>  and adding 'build/bdist.linux-x86_64/wheel' to it
> adding 'asgi_lifespan/__init__.py'
> adding 'asgi_lifespan/_compat.py'
> adding 'asgi_lifespan/_exceptions.py'
> adding 'asgi_lifespan/_manager.py'
> adding 'asgi_lifespan/_types.py'
> adding 'asgi_lifespan/py.typed'
> adding 'asgi_lifespan/_concurrency/__init__.py'
> adding 'asgi_lifespan/_concurrency/asyncio.py'
> adding 'asgi_lifespan/_concurrency/base.py'
> adding 'asgi_lifespan/_concurrency/trio.py'
> adding 'asgi_lifespan-2.1.0.dist-info/LICENSE'
> adding 'asgi_lifespan-2.1.0.dist-info/METADATA'
> adding 'asgi_lifespan-2.1.0.dist-info/WHEEL'
> adding 'asgi_lifespan-2.1.0.dist-info/top_level.txt'
> adding 'asgi_lifespan-2.1.0.dist-info/RECORD'
> removing build/bdist.linux-x86_64/wheel
> Successfully built asgi_lifespan-2.1.0-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with 
> "installer" module
> I: pybuild plugin_pyproject:129: Building wheel for python3.11 with "build" 
> module
> I: pybuild base:305: python3.11 -m build --skip-dependency-check 
> --no-isolation --wheel --outdir 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asgi-lifespan  
> * Building wheel...
> No `packages` or `py_modules` configuration, performing automatic discovery.
> `src-layout` detected -- analysing ./src
> discovered packages -- ['asgi_lifespan', 'asgi_lifespan._concurrency']
> discovered py_modules -- []
> running bdist_wheel
> running build
> running build_py
> running egg_info
> writing src/asgi_lifespan.egg-info/PKG-INFO
> writing dependency_links to src/asgi_lifespan.egg-info/dependency_links.txt
> writing requirements to src/asgi_lifespan.egg-info/requires.txt
> writing top-level names to src/asgi_lifespan.egg-info/top_level.txt
> reading manifest file 'src/asgi_lifespan.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> adding license file 'LICENSE'
> writing manifest file 'src/asgi_lifespan.egg-info/SOURCES.txt'
> installing to build/bdist.linux-x86_64/wheel
> running install
> running install_lib
> creating build/bdist.linux-x86_64/wheel
> creating build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/__init__.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/_types.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/py.typed -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/_manager.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> copying build/lib/asgi_lifespan/_compat.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> creating build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/__init__.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/asyncio.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/base.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_concurrency/trio.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan/_concurrency
> copying build/lib/asgi_lifespan/_exceptions.py -> 
> build/bdist.linux-x86_64/wheel/asgi_lifespan
> running install_egg_info
> Copying src/asgi_lifespan.egg-info to 
> build/bdist.linux-x86_64/wheel/asgi_lifespan-2.1.0.egg-info
> running install_scripts
> creating build/bdist.linux-x86_64/wheel/asgi_lifespan-2.1.0.dist-info/WHEEL
> creating 
> '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asgi-lifespan/.tmp-pepftofp/asgi_lifespan-2.1.0-py3-none-any.whl'
>  and adding 'build/bdist.linux-x86_64/wheel' to it
> adding 'asgi_lifespan/__init__.py'
> adding 'asgi_lifespan/_compat.py'
> adding 'asgi_lifespan/_exceptions.py'
> adding 'asgi_lifespan/_manager.py'
> adding 'asgi_lifespan/_types.py'
> adding 'asgi_lifespan/py.typed'
> adding 'asgi_lifespan/_concurrency/__init__.py'
> adding 'asgi_lifespan/_concurrency/asyncio.py'
> adding 'asgi_lifespan/_concurrency/base.py'
> adding 'asgi_lifespan/_concurrency/trio.py'
> adding 'asgi_lifespan-2.1.0.dist-info/LICENSE'
> adding 'asgi_lifespan-2.1.0.dist-info/METADATA'
> adding 'asgi_lifespan-2.1.0.dist-info/WHEEL'
> adding 'asgi_lifespan-2.1.0.dist-info/top_level.txt'
> adding 'asgi_lifespan-2.1.0.dist-info/RECORD'
> removing build/bdist.linux-x86_64/wheel
> Successfully built asgi_lifespan-2.1.0-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.11 with 
> "installer" module
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_asgi-lifespan/build; python3.12 -m 
> pytest -c /dev/null --asyncio-mode=strict -p no:cacheprovider
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.12.2, pytest-8.0.2, pluggy-1.4.0
> rootdir: /dev
> configfile: null
> plugins: tornasync-0.6.0.post2, anyio-4.2.0, cov-4.1.0, asyncio-0.20.3, 
> trio-0.8.0, twisted-1.14.0
> asyncio: mode=Mode.STRICT
> collected 32 items
> 
> ../../../../../../dev/tests/test_manager.py ..........................x. [ 
> 87%]
> .xFF                                                                     
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ____________________ test_lifespan_state_async_cm[asyncio] 
> _____________________
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
> >           yield
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:69: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:373: in 
> handle_async_request
>     resp = await self._pool.handle_async_request(req)
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:216: in 
> handle_async_request
>     raise exc from None
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:196: in 
> handle_async_request
>     response = await connection.handle_async_request(
> /usr/lib/python3/dist-packages/httpcore/_async/http_proxy.py:207: in 
> handle_async_request
>     return await self._connection.handle_async_request(proxy_request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:99: in 
> handle_async_request
>     raise exc
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:76: in 
> handle_async_request
>     stream = await self._connect(request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:122: in _connect
>     stream = await self._network_backend.connect_tcp(**kwargs)
> /usr/lib/python3/dist-packages/httpcore/_backends/auto.py:30: in connect_tcp
>     return await self._backend.connect_tcp(
> /usr/lib/python3/dist-packages/httpcore/_backends/anyio.py:112: in connect_tcp
>     with map_exceptions(exc_map):
> /usr/lib/python3.12/contextlib.py:158: in __exit__
>     self.gen.throw(value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> map = {<class 'TimeoutError'>: <class 'httpcore.ConnectTimeout'>, <class 
> 'OSError'>: <class 'httpcore.ConnectError'>, <class 
> 'anyio.BrokenResourceError'>: <class 'httpcore.ConnectError'>}
> 
>     @contextlib.contextmanager
>     def map_exceptions(map: ExceptionMapping) -> Iterator[None]:
>         try:
>             yield
>         except Exception as exc:  # noqa: PIE786
>             for from_exc, to_exc in map.items():
>                 if isinstance(exc, from_exc):
> >                   raise to_exc(exc) from exc
> E                   httpcore.ConnectError: All connection attempts failed
> 
> /usr/lib/python3/dist-packages/httpcore/_exceptions.py:14: ConnectError
> 
> The above exception was the direct cause of the following exception:
> 
>     @pytest.mark.usefixtures("concurrency")
>     async def test_lifespan_state_async_cm() -> None:
>         @contextlib.asynccontextmanager
>         async def lifespan(_app: ASGIApp) -> typing.AsyncGenerator:
>             yield {"foo": 1}
>     
>         async def get(request: Request) -> Response:
>             assert request.state.foo == 1
>             request.state.foo = 2
>             return PlainTextResponse(f"Hello {request.state.foo}")
>     
>         app = Starlette(lifespan=lifespan, routes=[Route("/get", get)])
>     
>         async with LifespanManager(app) as manager:
>             async with httpx.AsyncClient(
>                 app=manager.app, base_url="http://example.org";
>             ) as client:
> >               response = await client.get("/get")
> 
> tests/test_manager.py:246: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_client.py:1801: in get
>     return await self.request(
> /usr/lib/python3/dist-packages/httpx/_client.py:1574: in request
>     return await self.send(request, auth=auth, 
> follow_redirects=follow_redirects)
> /usr/lib/python3/dist-packages/httpx/_client.py:1661: in send
>     response = await self._send_handling_auth(
> /usr/lib/python3/dist-packages/httpx/_client.py:1689: in _send_handling_auth
>     response = await self._send_handling_redirects(
> /usr/lib/python3/dist-packages/httpx/_client.py:1726: in 
> _send_handling_redirects
>     response = await self._send_single_request(request)
> /usr/lib/python3/dist-packages/httpx/_client.py:1763: in _send_single_request
>     response = await transport.handle_async_request(request)
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:372: in 
> handle_async_request
>     with map_httpcore_exceptions():
> /usr/lib/python3.12/contextlib.py:158: in __exit__
>     self.gen.throw(value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
>             yield
>         except Exception as exc:
>             mapped_exc = None
>     
>             for from_exc, to_exc in HTTPCORE_EXC_MAP.items():
>                 if not isinstance(exc, from_exc):
>                     continue
>                 # We want to map to the most specific exception we can find.
>                 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to
>                 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`.
>                 if mapped_exc is None or issubclass(to_exc, mapped_exc):
>                     mapped_exc = to_exc
>     
>             if mapped_exc is None:  # pragma: no cover
>                 raise
>     
>             message = str(exc)
> >           raise mapped_exc(message) from exc
> E           httpx.ConnectError: All connection attempts failed
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:86: ConnectError
> ______________________ test_lifespan_state_async_cm[trio] 
> ______________________
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
> >           yield
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:69: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:373: in 
> handle_async_request
>     resp = await self._pool.handle_async_request(req)
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:216: in 
> handle_async_request
>     raise exc from None
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:196: in 
> handle_async_request
>     response = await connection.handle_async_request(
> /usr/lib/python3/dist-packages/httpcore/_async/http_proxy.py:207: in 
> handle_async_request
>     return await self._connection.handle_async_request(proxy_request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:99: in 
> handle_async_request
>     raise exc
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:76: in 
> handle_async_request
>     stream = await self._connect(request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:122: in _connect
>     stream = await self._network_backend.connect_tcp(**kwargs)
> /usr/lib/python3/dist-packages/httpcore/_backends/auto.py:30: in connect_tcp
>     return await self._backend.connect_tcp(
> /usr/lib/python3/dist-packages/httpcore/_backends/trio.py:130: in connect_tcp
>     with map_exceptions(exc_map):
> /usr/lib/python3.12/contextlib.py:158: in __exit__
>     self.gen.throw(value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> map = {<class 'trio.TooSlowError'>: <class 'httpcore.ConnectTimeout'>, <class 
> 'trio.BrokenResourceError'>: <class 'httpcore.ConnectError'>, <class 
> 'OSError'>: <class 'httpcore.ConnectError'>}
> 
>     @contextlib.contextmanager
>     def map_exceptions(map: ExceptionMapping) -> Iterator[None]:
>         try:
>             yield
>         except Exception as exc:  # noqa: PIE786
>             for from_exc, to_exc in map.items():
>                 if isinstance(exc, from_exc):
> >                   raise to_exc(exc) from exc
> E                   httpcore.ConnectError: all attempts to connect to 
> 127.0.0.1:9 failed
> 
> /usr/lib/python3/dist-packages/httpcore/_exceptions.py:14: ConnectError
> 
> The above exception was the direct cause of the following exception:
> 
>     @pytest.mark.usefixtures("concurrency")
>     async def test_lifespan_state_async_cm() -> None:
>         @contextlib.asynccontextmanager
>         async def lifespan(_app: ASGIApp) -> typing.AsyncGenerator:
>             yield {"foo": 1}
>     
>         async def get(request: Request) -> Response:
>             assert request.state.foo == 1
>             request.state.foo = 2
>             return PlainTextResponse(f"Hello {request.state.foo}")
>     
>         app = Starlette(lifespan=lifespan, routes=[Route("/get", get)])
>     
>         async with LifespanManager(app) as manager:
>             async with httpx.AsyncClient(
>                 app=manager.app, base_url="http://example.org";
>             ) as client:
> >               response = await client.get("/get")
> 
> tests/test_manager.py:246: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_client.py:1801: in get
>     return await self.request(
> /usr/lib/python3/dist-packages/httpx/_client.py:1574: in request
>     return await self.send(request, auth=auth, 
> follow_redirects=follow_redirects)
> /usr/lib/python3/dist-packages/httpx/_client.py:1661: in send
>     response = await self._send_handling_auth(
> /usr/lib/python3/dist-packages/httpx/_client.py:1689: in _send_handling_auth
>     response = await self._send_handling_redirects(
> /usr/lib/python3/dist-packages/httpx/_client.py:1726: in 
> _send_handling_redirects
>     response = await self._send_single_request(request)
> /usr/lib/python3/dist-packages/httpx/_client.py:1763: in _send_single_request
>     response = await transport.handle_async_request(request)
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:372: in 
> handle_async_request
>     with map_httpcore_exceptions():
> /usr/lib/python3.12/contextlib.py:158: in __exit__
>     self.gen.throw(value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
>             yield
>         except Exception as exc:
>             mapped_exc = None
>     
>             for from_exc, to_exc in HTTPCORE_EXC_MAP.items():
>                 if not isinstance(exc, from_exc):
>                     continue
>                 # We want to map to the most specific exception we can find.
>                 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to
>                 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`.
>                 if mapped_exc is None or issubclass(to_exc, mapped_exc):
>                     mapped_exc = to_exc
>     
>             if mapped_exc is None:  # pragma: no cover
>                 raise
>     
>             message = str(exc)
> >           raise mapped_exc(message) from exc
> E           httpx.ConnectError: all attempts to connect to 127.0.0.1:9 failed
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:86: ConnectError
> =============================== warnings summary 
> ===============================
> tests/test_manager.py: 12 warnings
>   /usr/lib/python3/dist-packages/starlette/routing.py:616: 
> DeprecationWarning: The on_startup and on_shutdown parameters are deprecated, 
> and they will be removed on version 1.0. Use the lifespan parameter instead. 
> See more about it on https://www.starlette.io/lifespan/.
>     warnings.warn(
> 
> tests/test_manager.py::test_lifespan_state_async_cm[asyncio]
> tests/test_manager.py::test_lifespan_state_async_cm[trio]
>   /usr/lib/python3/dist-packages/httpx/_client.py:1426: DeprecationWarning: 
> The 'app' shortcut is now deprecated. Use the explicit style 
> 'transport=ASGITransport(app=...)' instead.
>     warnings.warn(message, DeprecationWarning)
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info 
> ============================
> FAILED 
> ../../../../../../dev/tests/test_manager.py::test_lifespan_state_async_cm[asyncio]
> FAILED 
> ../../../../../../dev/tests/test_manager.py::test_lifespan_state_async_cm[trio]
> ============= 2 failed, 28 passed, 2 xfailed, 14 warnings in 0.95s 
> =============
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_asgi-lifespan/build; python3.12 -m 
> pytest -c /dev/null --asyncio-mode=strict -p no:cacheprovider
> I: pybuild base:305: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asgi-lifespan/build; python3.11 -m 
> pytest -c /dev/null --asyncio-mode=strict -p no:cacheprovider
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.8, pytest-8.0.2, pluggy-1.4.0
> rootdir: /dev
> configfile: null
> plugins: tornasync-0.6.0.post2, anyio-4.2.0, cov-4.1.0, asyncio-0.20.3, 
> trio-0.8.0, twisted-1.14.0
> asyncio: mode=Mode.STRICT
> collected 32 items
> 
> ../../../../../../dev/tests/test_manager.py ..........................x. [ 
> 87%]
> .xFF                                                                     
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ____________________ test_lifespan_state_async_cm[asyncio] 
> _____________________
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
> >           yield
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:69: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:373: in 
> handle_async_request
>     resp = await self._pool.handle_async_request(req)
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:216: in 
> handle_async_request
>     raise exc from None
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:196: in 
> handle_async_request
>     response = await connection.handle_async_request(
> /usr/lib/python3/dist-packages/httpcore/_async/http_proxy.py:207: in 
> handle_async_request
>     return await self._connection.handle_async_request(proxy_request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:99: in 
> handle_async_request
>     raise exc
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:76: in 
> handle_async_request
>     stream = await self._connect(request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:122: in _connect
>     stream = await self._network_backend.connect_tcp(**kwargs)
> /usr/lib/python3/dist-packages/httpcore/_backends/auto.py:30: in connect_tcp
>     return await self._backend.connect_tcp(
> /usr/lib/python3/dist-packages/httpcore/_backends/anyio.py:112: in connect_tcp
>     with map_exceptions(exc_map):
> /usr/lib/python3.11/contextlib.py:158: in __exit__
>     self.gen.throw(typ, value, traceback)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> map = {<class 'TimeoutError'>: <class 'httpcore.ConnectTimeout'>, <class 
> 'OSError'>: <class 'httpcore.ConnectError'>, <class 
> 'anyio.BrokenResourceError'>: <class 'httpcore.ConnectError'>}
> 
>     @contextlib.contextmanager
>     def map_exceptions(map: ExceptionMapping) -> Iterator[None]:
>         try:
>             yield
>         except Exception as exc:  # noqa: PIE786
>             for from_exc, to_exc in map.items():
>                 if isinstance(exc, from_exc):
> >                   raise to_exc(exc) from exc
> E                   httpcore.ConnectError: All connection attempts failed
> 
> /usr/lib/python3/dist-packages/httpcore/_exceptions.py:14: ConnectError
> 
> The above exception was the direct cause of the following exception:
> 
>     @pytest.mark.usefixtures("concurrency")
>     async def test_lifespan_state_async_cm() -> None:
>         @contextlib.asynccontextmanager
>         async def lifespan(_app: ASGIApp) -> typing.AsyncGenerator:
>             yield {"foo": 1}
>     
>         async def get(request: Request) -> Response:
>             assert request.state.foo == 1
>             request.state.foo = 2
>             return PlainTextResponse(f"Hello {request.state.foo}")
>     
>         app = Starlette(lifespan=lifespan, routes=[Route("/get", get)])
>     
>         async with LifespanManager(app) as manager:
>             async with httpx.AsyncClient(
>                 app=manager.app, base_url="http://example.org";
>             ) as client:
> >               response = await client.get("/get")
> 
> tests/test_manager.py:246: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_client.py:1801: in get
>     return await self.request(
> /usr/lib/python3/dist-packages/httpx/_client.py:1574: in request
>     return await self.send(request, auth=auth, 
> follow_redirects=follow_redirects)
> /usr/lib/python3/dist-packages/httpx/_client.py:1661: in send
>     response = await self._send_handling_auth(
> /usr/lib/python3/dist-packages/httpx/_client.py:1689: in _send_handling_auth
>     response = await self._send_handling_redirects(
> /usr/lib/python3/dist-packages/httpx/_client.py:1726: in 
> _send_handling_redirects
>     response = await self._send_single_request(request)
> /usr/lib/python3/dist-packages/httpx/_client.py:1763: in _send_single_request
>     response = await transport.handle_async_request(request)
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:372: in 
> handle_async_request
>     with map_httpcore_exceptions():
> /usr/lib/python3.11/contextlib.py:158: in __exit__
>     self.gen.throw(typ, value, traceback)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
>             yield
>         except Exception as exc:
>             mapped_exc = None
>     
>             for from_exc, to_exc in HTTPCORE_EXC_MAP.items():
>                 if not isinstance(exc, from_exc):
>                     continue
>                 # We want to map to the most specific exception we can find.
>                 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to
>                 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`.
>                 if mapped_exc is None or issubclass(to_exc, mapped_exc):
>                     mapped_exc = to_exc
>     
>             if mapped_exc is None:  # pragma: no cover
>                 raise
>     
>             message = str(exc)
> >           raise mapped_exc(message) from exc
> E           httpx.ConnectError: All connection attempts failed
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:86: ConnectError
> ______________________ test_lifespan_state_async_cm[trio] 
> ______________________
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
> >           yield
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:69: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:373: in 
> handle_async_request
>     resp = await self._pool.handle_async_request(req)
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:216: in 
> handle_async_request
>     raise exc from None
> /usr/lib/python3/dist-packages/httpcore/_async/connection_pool.py:196: in 
> handle_async_request
>     response = await connection.handle_async_request(
> /usr/lib/python3/dist-packages/httpcore/_async/http_proxy.py:207: in 
> handle_async_request
>     return await self._connection.handle_async_request(proxy_request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:99: in 
> handle_async_request
>     raise exc
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:76: in 
> handle_async_request
>     stream = await self._connect(request)
> /usr/lib/python3/dist-packages/httpcore/_async/connection.py:122: in _connect
>     stream = await self._network_backend.connect_tcp(**kwargs)
> /usr/lib/python3/dist-packages/httpcore/_backends/auto.py:30: in connect_tcp
>     return await self._backend.connect_tcp(
> /usr/lib/python3/dist-packages/httpcore/_backends/trio.py:130: in connect_tcp
>     with map_exceptions(exc_map):
> /usr/lib/python3.11/contextlib.py:158: in __exit__
>     self.gen.throw(typ, value, traceback)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> map = {<class 'trio.TooSlowError'>: <class 'httpcore.ConnectTimeout'>, <class 
> 'trio.BrokenResourceError'>: <class 'httpcore.ConnectError'>, <class 
> 'OSError'>: <class 'httpcore.ConnectError'>}
> 
>     @contextlib.contextmanager
>     def map_exceptions(map: ExceptionMapping) -> Iterator[None]:
>         try:
>             yield
>         except Exception as exc:  # noqa: PIE786
>             for from_exc, to_exc in map.items():
>                 if isinstance(exc, from_exc):
> >                   raise to_exc(exc) from exc
> E                   httpcore.ConnectError: all attempts to connect to 
> 127.0.0.1:9 failed
> 
> /usr/lib/python3/dist-packages/httpcore/_exceptions.py:14: ConnectError
> 
> The above exception was the direct cause of the following exception:
> 
>     @pytest.mark.usefixtures("concurrency")
>     async def test_lifespan_state_async_cm() -> None:
>         @contextlib.asynccontextmanager
>         async def lifespan(_app: ASGIApp) -> typing.AsyncGenerator:
>             yield {"foo": 1}
>     
>         async def get(request: Request) -> Response:
>             assert request.state.foo == 1
>             request.state.foo = 2
>             return PlainTextResponse(f"Hello {request.state.foo}")
>     
>         app = Starlette(lifespan=lifespan, routes=[Route("/get", get)])
>     
>         async with LifespanManager(app) as manager:
>             async with httpx.AsyncClient(
>                 app=manager.app, base_url="http://example.org";
>             ) as client:
> >               response = await client.get("/get")
> 
> tests/test_manager.py:246: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> /usr/lib/python3/dist-packages/httpx/_client.py:1801: in get
>     return await self.request(
> /usr/lib/python3/dist-packages/httpx/_client.py:1574: in request
>     return await self.send(request, auth=auth, 
> follow_redirects=follow_redirects)
> /usr/lib/python3/dist-packages/httpx/_client.py:1661: in send
>     response = await self._send_handling_auth(
> /usr/lib/python3/dist-packages/httpx/_client.py:1689: in _send_handling_auth
>     response = await self._send_handling_redirects(
> /usr/lib/python3/dist-packages/httpx/_client.py:1726: in 
> _send_handling_redirects
>     response = await self._send_single_request(request)
> /usr/lib/python3/dist-packages/httpx/_client.py:1763: in _send_single_request
>     response = await transport.handle_async_request(request)
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:372: in 
> handle_async_request
>     with map_httpcore_exceptions():
> /usr/lib/python3.11/contextlib.py:158: in __exit__
>     self.gen.throw(typ, value, traceback)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
>     @contextlib.contextmanager
>     def map_httpcore_exceptions() -> typing.Iterator[None]:
>         try:
>             yield
>         except Exception as exc:
>             mapped_exc = None
>     
>             for from_exc, to_exc in HTTPCORE_EXC_MAP.items():
>                 if not isinstance(exc, from_exc):
>                     continue
>                 # We want to map to the most specific exception we can find.
>                 # Eg if `exc` is an `httpcore.ReadTimeout`, we want to map to
>                 # `httpx.ReadTimeout`, not just `httpx.TimeoutException`.
>                 if mapped_exc is None or issubclass(to_exc, mapped_exc):
>                     mapped_exc = to_exc
>     
>             if mapped_exc is None:  # pragma: no cover
>                 raise
>     
>             message = str(exc)
> >           raise mapped_exc(message) from exc
> E           httpx.ConnectError: all attempts to connect to 127.0.0.1:9 failed
> 
> /usr/lib/python3/dist-packages/httpx/_transports/default.py:86: ConnectError
> =============================== warnings summary 
> ===============================
> tests/test_manager.py: 12 warnings
>   /usr/lib/python3/dist-packages/starlette/routing.py:616: 
> DeprecationWarning: The on_startup and on_shutdown parameters are deprecated, 
> and they will be removed on version 1.0. Use the lifespan parameter instead. 
> See more about it on https://www.starlette.io/lifespan/.
>     warnings.warn(
> 
> tests/test_manager.py::test_lifespan_state_async_cm[asyncio]
> tests/test_manager.py::test_lifespan_state_async_cm[trio]
>   /usr/lib/python3/dist-packages/httpx/_client.py:1426: DeprecationWarning: 
> The 'app' shortcut is now deprecated. Use the explicit style 
> 'transport=ASGITransport(app=...)' instead.
>     warnings.warn(message, DeprecationWarning)
> 
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info 
> ============================
> FAILED 
> ../../../../../../dev/tests/test_manager.py::test_lifespan_state_async_cm[asyncio]
> FAILED 
> ../../../../../../dev/tests/test_manager.py::test_lifespan_state_async_cm[trio]
> ============= 2 failed, 28 passed, 2 xfailed, 14 warnings in 0.97s 
> =============
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_asgi-lifespan/build; python3.11 -m 
> pytest -c /dev/null --asyncio-mode=strict -p no:cacheprovider
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 
> 3.11" returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2024/03/13/asgi-lifespan_2.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-20240313;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20240313&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