Skip to content

CI tests failing with BaseExceptionGroup: Exceptions from Trio nursery (1 sub-exception) #33

@szczys

Description

@szczys

This appears to be related to the release of Trio 0.25.0 over the weekend.

<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite name="pytest" errors="0" failures="1" skipped="0" tests="1" time="52.598" timestamp="2024-03-18T15:22:29.448370" hostname="302fa76ca15f"><testcase classname="modules.lib.golioth-firmware-sdk.examples.zephyr.lightdb_stream.pytest.test_sample" name="test_lightdb_stream" time="52.296"><failure message="BaseExceptionGroup: Exceptions from Trio nursery (1 sub-exception)">+ Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.11/dist-packages/_pytest/runner.py", line 341, in from_call
  |     result: Optional[TResult] = func()
  |                                 ^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/_pytest/runner.py", line 262, in &lt;lambda&gt;
  |     lambda: ihook(item=item, **kwds), when=when, reraise=reraise
  |             ^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_hooks.py", line 493, in __call__
  |     return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_manager.py", line 115, in _hookexec
  |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_callers.py", line 152, in _multicall
  |     return outcome.get_result()
  |            ^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_result.py", line 114, in get_result
  |     raise exc.with_traceback(exc.__traceback__)
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_callers.py", line 77, in _multicall
  |     res = hook_impl.function(*args)
  |           ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/_pytest/runner.py", line 169, in pytest_runtest_call
  |     item.runtest()
  |   File "/usr/local/lib/python3.11/dist-packages/_pytest/python.py", line 1792, in runtest
  |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_hooks.py", line 493, in __call__
  |     return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_manager.py", line 115, in _hookexec
  |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_callers.py", line 113, in _multicall
  |     raise exception.with_traceback(exception.__traceback__)
  |   File "/usr/local/lib/python3.11/dist-packages/pluggy/_callers.py", line 77, in _multicall
  |     res = hook_impl.function(*args)
  |           ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/anyio/pytest_plugin.py", line 124, in pytest_pyfunc_call
  |     runner.run_test(pyfuncitem.obj, testargs)
  |   File "/usr/local/lib/python3.11/dist-packages/anyio/_backends/_trio.py", line 839, in run_test
  |     self._call_in_runner_task(test_func, **kwargs)
  |   File "/usr/local/lib/python3.11/dist-packages/anyio/_backends/_trio.py", line 809, in _call_in_runner_task
  |     return outcome_holder[0].unwrap()
  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.11/dist-packages/outcome/_impl.py", line 213, in unwrap
  |     raise captured_error
  |   File "/usr/local/lib/python3.11/dist-packages/anyio/_backends/_trio.py", line 779, in _run_tests_and_fixtures
  |     retval = await coro
  |              ^^^^^^^^^^
  |   File "/__w/golioth-firmware-sdk/golioth-firmware-sdk/modules/lib/golioth-firmware-sdk/examples/zephyr/lightdb_stream/pytest/test_sample.py", line 32, in test_lightdb_stream
  |     async with contextlib.aclosing(device.stream.iter()) as stream_iter:
  |   File "/usr/lib/python3.11/contextlib.py", line 374, in __aexit__
  |     await self.thing.aclose()
  |   File "/usr/local/lib/python3.11/dist-packages/golioth/golioth.py", line 577, in iter
  |     async with self.monitor(params) as monitor:
  |   File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__
  |     await self.gen.athrow(typ, value, traceback)
  |   File "/usr/local/lib/python3.11/dist-packages/golioth/golioth.py", line 573, in monitor
  |     async with self.websocket(params) as ws:
  |   File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__
  |     await self.gen.athrow(typ, value, traceback)
  |   File "/usr/local/lib/python3.11/dist-packages/golioth/golioth.py", line 567, in websocket
  |     async with open_websocket_url(f'{self.device.project.client.base_url.replace("http", "ws")}/ws/projects/{self.device.project.id}/devices/{self.device.id}/stream',
  |   File "/usr/lib/python3.11/contextlib.py", line 222, in __aexit__
  |     await self.gen.athrow(typ, value, traceback)
  |   File "/usr/local/lib/python3.11/dist-packages/trio_websocket/_impl.py", line 117, in open_websocket
  |     async with trio.open_nursery() as new_nursery:
  |   File "/usr/local/lib/python3.11/dist-packages/trio/_core/_run.py", line 954, in __aexit__
  |     raise combined_error_from_nursery
  | BaseExceptionGroup: Exceptions from Trio nursery (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.11/dist-packages/trio_websocket/_impl.py", line 130, in open_websocket
    |     yield connection
    |   File "/usr/local/lib/python3.11/dist-packages/golioth/golioth.py", line 569, in websocket
    |     yield ws
    |   File "/usr/local/lib/python3.11/dist-packages/golioth/golioth.py", line 574, in monitor
    |     yield LightDBMonitor(ws)
    |   File "/usr/local/lib/python3.11/dist-packages/golioth/golioth.py", line 579, in iter
    |     yield await monitor.get()
    | GeneratorExit
    +------------------------------------</failure></testcase></testsuite></testsuites>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions