Skip to content

Eiger sim does not work in 3.12+ #124

@GDYendell

Description

@GDYendell
  • Edit .python-version to 3.12
  • uv sync
❯ pytest tests/eiger/test_eiger_system.py::test_eiger_system
========================================================================================================================================================================================================= test session starts ==========================================================================================================================================================================================================
platform linux -- Python 3.12.12, pytest-9.0.2, pluggy-1.6.0 -- /cache/venv-for/scratch/development/tickit-devices/bin/python
cachedir: .pytest_cache
rootdir: /workspaces/tickit-devices
configfile: pyproject.toml
plugins: pydocstyle-2.4.0, asyncio-1.3.0, black-0.6.0, cov-7.0.0, flake8-1.3.0, mock-3.15.1, mypy-1.0.1, anyio-4.12.1
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 1 item                                                                                                                                                                                                                                                                                                                                                                                                                       

tests/eiger/test_eiger_system.py::test_eiger_system[examples/configs/eiger/eiger.yaml] FAILED                                                                                                                                                                                                                                                                                                                                    [100%]

=============================================================================================================================================================================================================== FAILURES ===============================================================================================================================================================================================================
_________________________________________________________________________________________________________________________________________________________________________________________ test_eiger_system[examples/configs/eiger/eiger.yaml] _________________________________________________________________________________________________________________________________________________________________________________________
Traceback (most recent call last):
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 539, in start
    message, payload = await protocol.read()  # type: ignore[union-attr]
                       ^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/streams.py", line 703, in read
    await self._waiter
asyncio.exceptions.CancelledError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    result: TResult | None = func()
                             ^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    lambda: runtest_hook(item=item, **kwds),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    raise exception
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    yield
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    return (yield)
            ^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    return (yield)
            ^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    item.runtest()
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    super().runtest()
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    raise exception
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    teardown.throw(exception)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    return result.get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    raise exc.with_traceback(tb)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    res = yield
          ^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    result = testfunction(**testargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    runner.run(coro, context=context)
  File "/root/.local/share/uv/python/cpython-3.12.12-linux-x86_64-gnu/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.local/share/uv/python/cpython-3.12.12-linux-x86_64-gnu/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/workspaces/tickit-devices/tests/eiger/test_eiger_system.py", line 202, in test_eiger_system
    async with session.put(
               ^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/client.py", line 1510, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/client.py", line 779, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/client.py", line 757, in _connect_and_send_request
    await resp.start(conn)
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 534, in start
    with self._timer:
         ^^^^^^^^^^^
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/helpers.py", line 713, in __exit__
    raise asyncio.TimeoutError from exc_val
TimeoutError
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Captured log call -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WARNING  tickit_devices.eiger.eiger_settings:eiger_settings.py:322 Flatfield not recalculated.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Captured log teardown ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ERROR    asyncio:base_events.py:1833 Task exception was never retrieved
future: <Task finished name='Task-3' coro=<MasterScheduler.run_forever() done, defined at /cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/tickit/core/management/schedulers/master.py:63> exception=AssertionError()>
Traceback (most recent call last):
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/tickit/core/management/schedulers/master.py", line 75, in run_forever
    await self._do_tick()
  File "/cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/tickit/core/management/schedulers/master.py", line 92, in _do_tick
    assert when is not None
           ^^^^^^^^^^^^^^^^
AssertionError
=========================================================================================================================================================================================================== warnings summary ===========================================================================================================================================================================================================
tests/eiger/test_eiger_system.py::test_eiger_system[examples/configs/eiger/eiger.yaml]
tests/eiger/test_eiger_system.py::test_eiger_system[examples/configs/eiger/eiger.yaml]
  /cache/venv-for/scratch/development/tickit-devices/lib/python3.12/site-packages/aiohttp/web_app.py:569: DeprecationWarning: Request.message is deprecated
    return await handler(request)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================================================================================================================================================================= short test summary info ========================================================================================================================================================================================================
FAILED tests/eiger/test_eiger_system.py::test_eiger_system[examples/configs/eiger/eiger.yaml] - TimeoutError
==================================================================================================================================================================================================== 1 failed, 2 warnings in 2.60s =====================================================================================================================================================================================================

Acceptance Criteria

  • All tests pass on 3.12 (and 3.13)

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