=============================================
  Life OS Dynamic Test Suite
=============================================

>> Smoke tests
============================= test session starts ==============================
platform linux -- Python 3.12.12, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python
cachedir: .pytest_cache
rootdir: /app
configfile: pytest.ini
plugins: asyncio-1.3.0, anyio-4.12.1
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=session, asyncio_default_test_loop_scope=function
collecting ... collected 82 items

tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /] PASSED [  1%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /health] PASSED [  2%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /domains/] PASSED [  3%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /domains/create] FAILED [  4%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /areas/] PASSED [  6%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /areas/create] FAILED [  7%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /projects/] PASSED [  8%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /projects/create] FAILED [  9%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /tasks/] PASSED [ 10%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /tasks/create] FAILED [ 12%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /notes/] PASSED [ 13%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /notes/create] FAILED [ 14%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /links/] PASSED [ 15%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /links/create] FAILED [ 17%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /focus/] FAILED [ 18%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /capture/] FAILED [ 19%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /contacts/] PASSED [ 20%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /contacts/create] FAILED [ 21%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /search/api] PASSED [ 23%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /search/] FAILED [ 24%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /admin/trash/] PASSED [ 25%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /lists/] FAILED [ 26%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /lists/create] PASSED [ 28%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /files/] FAILED [ 29%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /files/upload] PASSED [ 30%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /meetings/] FAILED [ 31%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /meetings/create] PASSED [ 32%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /decisions/] FAILED [ 34%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /decisions/create] PASSED [ 35%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/] FAILED [ 36%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/create] PASSED [ 37%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/folders/create] FAILED [ 39%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /appointments/] PASSED [ 40%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /appointments/new] FAILED [ 41%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /time/] PASSED [ 42%]
tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /time/running] FAILED [ 43%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /domains/{domain_id}/edit] ERROR [ 45%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /areas/{area_id}/edit] ERROR [ 46%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /projects/{project_id}] ERROR [ 47%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /projects/{project_id}/edit] ERROR [ 48%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /tasks/{task_id}] ERROR [ 50%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /tasks/{task_id}/edit] ERROR [ 51%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /notes/{note_id}] ERROR [ 52%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /notes/{note_id}/edit] ERROR [ 53%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /links/{link_id}/edit] ERROR [ 54%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /contacts/{contact_id}] ERROR [ 56%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /contacts/{contact_id}/edit] ERROR [ 57%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /lists/{list_id}] ERROR [ 58%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /lists/{list_id}/edit] ERROR [ 59%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /files/{file_id}/download] ERROR [ 60%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /files/{file_id}/preview] ERROR [ 62%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /files/{file_id}/serve] ERROR [ 63%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /meetings/{meeting_id}] ERROR [ 64%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /meetings/{meeting_id}/edit] ERROR [ 65%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /decisions/{decision_id}] ERROR [ 67%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /decisions/{decision_id}/edit] ERROR [ 68%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /weblinks/{weblink_id}/edit] ERROR [ 69%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /appointments/{appointment_id}] ERROR [ 70%]
tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /appointments/{appointment_id}/edit] ERROR [ 71%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /domains/{domain_id}/edit] FAILED [ 73%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /areas/{area_id}/edit] FAILED [ 74%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /projects/{project_id}] FAILED [ 75%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /projects/{project_id}/edit] FAILED [ 76%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /tasks/{task_id}] FAILED [ 78%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /tasks/{task_id}/edit] FAILED [ 79%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /notes/{note_id}] FAILED [ 80%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /notes/{note_id}/edit] FAILED [ 81%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /links/{link_id}/edit] FAILED [ 82%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /contacts/{contact_id}] FAILED [ 84%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /contacts/{contact_id}/edit] FAILED [ 85%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /lists/{list_id}] FAILED [ 86%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /lists/{list_id}/edit] FAILED [ 87%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/download] FAILED [ 89%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/preview] FAILED [ 90%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/serve] FAILED [ 91%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}] FAILED [ 92%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}/edit] FAILED [ 93%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /decisions/{decision_id}] FAILED [ 95%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /decisions/{decision_id}/edit] FAILED [ 96%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /weblinks/{weblink_id}/edit] FAILED [ 97%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}] FAILED [ 98%]
tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}/edit] FAILED [100%]

==================================== ERRORS ====================================
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /domains/{domain_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:730: in pytest_fixture_setup
    return (yield)
            ^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /areas/{area_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /projects/{project_id}] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /projects/{project_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
__ ERROR at setup of test_get_with_valid_id_returns_200[GET /tasks/{task_id}] __
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /tasks/{task_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
__ ERROR at setup of test_get_with_valid_id_returns_200[GET /notes/{note_id}] __
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /notes/{note_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /links/{link_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /contacts/{contact_id}] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /contacts/{contact_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
__ ERROR at setup of test_get_with_valid_id_returns_200[GET /lists/{list_id}] __
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /lists/{list_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /files/{file_id}/download] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /files/{file_id}/preview] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /files/{file_id}/serve] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /meetings/{meeting_id}] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /meetings/{meeting_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /decisions/{decision_id}] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /decisions/{decision_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /weblinks/{weblink_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /appointments/{appointment_id}] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
_ ERROR at setup of test_get_with_valid_id_returns_200[GET /appointments/{appointment_id}/edit] _
tests/conftest.py:146: in all_seeds
    cur.execute("""
E   psycopg2.errors.UndefinedColumn: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py:458: in setup
    return super().setup()
           ^^^^^^^^^^^^^^^
tests/conftest.py:169: in all_seeds
    raise RuntimeError(f"Seed data insertion failed: {e}") from e
E   RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
E   LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
E                                                             ^
=================================== FAILURES ===================================
_____________ test_get_no_params_returns_200[GET /domains/create] ______________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/domains.py", line 30, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/domains.py", line 30, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/domains.py:30: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018ca22b7a0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______________ test_get_no_params_returns_200[GET /areas/create] _______________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/areas.py", line 58, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/areas.py", line 58, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/areas.py:58: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c32e54f0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_____________ test_get_no_params_returns_200[GET /projects/create] _____________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/projects.py", line 78, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/projects.py", line 78, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/projects.py:78: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c32e5d60>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______________ test_get_no_params_returns_200[GET /tasks/create] _______________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/tasks.py", line 119, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/tasks.py", line 119, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/tasks.py:119: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018ca22be30>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______________ test_get_no_params_returns_200[GET /notes/create] _______________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/notes.py", line 66, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/notes.py", line 66, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/notes.py:66: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c32e6990>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______________ test_get_no_params_returns_200[GET /links/create] _______________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/links.py", line 49, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/links.py", line 49, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/links.py:49: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c302df40>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________________ test_get_no_params_returns_200[GET /focus/] __________________
asyncpg/protocol/prepared_stmt.pyx:175: in asyncpg.protocol.protocol.PreparedStatementState._encode_bind_msg
    ???
asyncpg/protocol/codecs/base.pyx:227: in asyncpg.protocol.protocol.Codec.encode
    ???
asyncpg/protocol/codecs/base.pyx:129: in asyncpg.protocol.protocol.Codec.encode_scalar
    ???
asyncpg/pgproto/./codecs/datetime.pyx:97: in asyncpg.pgproto.pgproto.date_encode
    ???
E   AttributeError: 'str' object has no attribute 'toordinal'

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:534: in _prepare_and_execute
    self._rows = deque(await prepared_stmt.fetch(*parameters))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/asyncpg/prepared_stmt.py:176: in fetch
    data = await self.__bind_execute(args, 0, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/asyncpg/prepared_stmt.py:267: in __bind_execute
    data, status, _ = await self.__do_execute(
/usr/local/lib/python3.12/site-packages/asyncpg/prepared_stmt.py:256: in __do_execute
    return await executor(protocol)
           ^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:185: in bind_execute
    ???
asyncpg/protocol/prepared_stmt.pyx:204: in asyncpg.protocol.protocol.PreparedStatementState._encode_bind_msg
    ???
E   asyncpg.exceptions.DataError: invalid input for query argument $1: '2026-03-01' ('str' object has no attribute 'toordinal')

The above exception was the direct cause of the following exception:
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context
    self.dialect.do_execute(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:941: in do_execute
    cursor.execute(statement, parameters)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:568: in execute
    self._adapt_connection.await_(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:546: in _prepare_and_execute
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:497: in _handle_exception
    self._adapt_connection._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:780: in _handle_exception
    raise translated_error from error
E   sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.Error: <class 'asyncpg.exceptions.DataError'>: invalid input for query argument $1: '2026-03-01' ('str' object has no attribute 'toordinal')

The above exception was the direct cause of the following exception:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/focus.py:24: in focus_view
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2256: in _execute_internal
    result = conn.execute(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1418: in execute
    return meth(
/usr/local/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:515: in _execute_on_connection
    return connection._execute_clauseelement(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1640: in _execute_clauseelement
    ret = self._execute_context(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1846: in _execute_context
    return self._exec_single_context(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1986: in _exec_single_context
    self._handle_dbapi_exception(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1967: in _exec_single_context
    self.dialect.do_execute(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:941: in do_execute
    cursor.execute(statement, parameters)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:568: in execute
    self._adapt_connection.await_(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:546: in _prepare_and_execute
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:497: in _handle_exception
    self._adapt_connection._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:780: in _handle_exception
    raise translated_error from error
E   sqlalchemy.exc.DBAPIError: (sqlalchemy.dialects.postgresql.asyncpg.Error) <class 'asyncpg.exceptions.DataError'>: invalid input for query argument $1: '2026-03-01' ('str' object has no attribute 'toordinal')
E   [SQL: 
E           SELECT df.*, t.title, t.priority, t.status as task_status,
E                  t.project_id, t.due_date, t.estimated_minutes,
E                  p.name as project_name,
E                  d.name as domain_name, d.color as domain_color
E           FROM daily_focus df
E           JOIN tasks t ON df.task_id = t.id
E           LEFT JOIN projects p ON t.project_id = p.id
E           LEFT JOIN domains d ON t.domain_id = d.id
E           WHERE df.focus_date = $1 AND df.is_deleted = false
E           ORDER BY df.sort_order, df.created_at
E       ]
E   [parameters: ('2026-03-01',)]
E   (Background on this error at: https://sqlalche.me/e/20/dbapi)
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:28,608 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:28,608 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:28,608 INFO sqlalchemy.engine.Engine [cached since 2.994s ago] ()
2026-03-01 14:01:28,615 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:28,615 INFO sqlalchemy.engine.Engine [cached since 2.994s ago] ()
2026-03-01 14:01:28,617 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:28,617 INFO sqlalchemy.engine.Engine [cached since 2.994s ago] ()
2026-03-01 14:01:28,621 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:28,621 INFO sqlalchemy.engine.Engine [cached since 2.995s ago] ()
2026-03-01 14:01:28,624 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:28,625 INFO sqlalchemy.engine.Engine [cached since 2.995s ago] ()
2026-03-01 14:01:28,628 INFO sqlalchemy.engine.Engine 
        SELECT df.*, t.title, t.priority, t.status as task_status,
               t.project_id, t.due_date, t.estimated_minutes,
               p.name as project_name,
               d.name as domain_name, d.color as domain_color
        FROM daily_focus df
        JOIN tasks t ON df.task_id = t.id
        LEFT JOIN projects p ON t.project_id = p.id
        LEFT JOIN domains d ON t.domain_id = d.id
        WHERE df.focus_date = $1 AND df.is_deleted = false
        ORDER BY df.sort_order, df.created_at
    
2026-03-01 14:01:28,628 INFO sqlalchemy.engine.Engine [generated in 0.00011s] ('2026-03-01',)
2026-03-01 14:01:28,631 INFO sqlalchemy.engine.Engine ROLLBACK
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 2.994s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 2.994s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 2.994s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 2.995s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 2.995s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT df.*, t.title, t.priority, t.status as task_status,
               t.project_id, t.due_date, t.estimated_minutes,
               p.name as project_name,
               d.name as domain_name, d.color as domain_color
        FROM daily_focus df
        JOIN tasks t ON df.task_id = t.id
        LEFT JOIN projects p ON t.project_id = p.id
        LEFT JOIN domains d ON t.domain_id = d.id
        WHERE df.focus_date = $1 AND df.is_deleted = false
        ORDER BY df.sort_order, df.created_at
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00011s] ('2026-03-01',)
INFO     sqlalchemy.engine.Engine:base.py:2704 ROLLBACK
________________ test_get_no_params_returns_200[GET /capture/] _________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/capture.py", line 20, in list_capture
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/capture.py", line 20, in list_capture
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/capture.py:20: in list_capture
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c8a985f0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_____________ test_get_no_params_returns_200[GET /contacts/create] _____________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/contacts.py", line 34, in create_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/contacts.py", line 34, in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/contacts.py:34: in create_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c32e7f20>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________________ test_get_no_params_returns_200[GET /search/] _________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/search.py", line 220, in search_page
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/search.py", line 220, in search_page
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/search.py:220: in search_page
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c99368a0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________________ test_get_no_params_returns_200[GET /lists/] __________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/lists.py", line 26, in list_lists
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/lists.py", line 26, in list_lists
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/lists.py:26: in list_lists
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c9935220>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________________ test_get_no_params_returns_200[GET /files/] __________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/files.py", line 40, in list_files
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/files.py", line 40, in list_files
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/files.py:40: in list_files
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c38126c0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
________________ test_get_no_params_returns_200[GET /meetings/] ________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/meetings.py", line 25, in list_meetings
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/meetings.py", line 25, in list_meetings
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/meetings.py:25: in list_meetings
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2f90320>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_______________ test_get_no_params_returns_200[GET /decisions/] ________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/decisions.py", line 25, in list_decisions
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/decisions.py", line 25, in list_decisions
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/decisions.py:25: in list_decisions
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c32e6a80>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
________________ test_get_no_params_returns_200[GET /weblinks/] ________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/weblinks.py", line 24, in list_weblinks
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/weblinks.py", line 24, in list_weblinks
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/weblinks.py:24: in list_weblinks
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c8a98320>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________ test_get_no_params_returns_200[GET /weblinks/folders/create] _________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/weblinks.py", line 200, in create_folder_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/weblinks.py", line 200, in create_folder_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/weblinks.py:200: in create_folder_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2f916d0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
____________ test_get_no_params_returns_200[GET /appointments/new] _____________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/appointments.py", line 84, in new_appointment
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/appointments.py", line 84, in new_appointment
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/appointments.py:84: in new_appointment
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2ff8f50>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______________ test_get_no_params_returns_200[GET /time/running] _______________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    |     r = await client.get(url, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/time_tracking.py", line 157, in running_timer_api
    |     running = await get_running_timer(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/time_tracking.py", line 20, in get_running_timer
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 35, in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/time_tracking.py", line 157, in running_timer_api
    running = await get_running_timer(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/time_tracking.py", line 20, in get_running_timer
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:35: in test_get_no_params_returns_200
    r = await client.get(url, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/time_tracking.py:157: in running_timer_api
    running = await get_running_timer(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/time_tracking.py:20: in get_running_timer
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2ffb4d0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_______ test_get_with_fake_id_returns_404[404 /domains/{domain_id}/edit] _______
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /domains/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:35,136 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:35,136 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,136 INFO sqlalchemy.engine.Engine [cached since 9.523s ago] ()
2026-03-01 14:01:35,143 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,143 INFO sqlalchemy.engine.Engine [cached since 9.523s ago] ()
2026-03-01 14:01:35,146 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:35,146 INFO sqlalchemy.engine.Engine [cached since 9.523s ago] ()
2026-03-01 14:01:35,150 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:35,150 INFO sqlalchemy.engine.Engine [cached since 9.523s ago] ()
2026-03-01 14:01:35,153 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:35,153 INFO sqlalchemy.engine.Engine [cached since 9.523s ago] ()
2026-03-01 14:01:35,155 INFO sqlalchemy.engine.Engine SELECT * FROM domains WHERE id = $1
2026-03-01 14:01:35,155 INFO sqlalchemy.engine.Engine [generated in 0.00009s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:35,157 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:35,159 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:35,159 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,159 INFO sqlalchemy.engine.Engine [cached since 9.546s ago] ()
2026-03-01 14:01:35,160 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,160 INFO sqlalchemy.engine.Engine [cached since 9.539s ago] ()
2026-03-01 14:01:35,160 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:35,160 INFO sqlalchemy.engine.Engine [cached since 9.538s ago] ()
2026-03-01 14:01:35,161 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:35,161 INFO sqlalchemy.engine.Engine [cached since 9.534s ago] ()
2026-03-01 14:01:35,161 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:35,161 INFO sqlalchemy.engine.Engine [cached since 9.532s ago] ()
2026-03-01 14:01:35,162 INFO sqlalchemy.engine.Engine 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:35,162 INFO sqlalchemy.engine.Engine [cached since 9.455s ago] (50, 0)
2026-03-01 14:01:35,163 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.523s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.523s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.523s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.523s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.523s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM domains WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00009s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.546s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.539s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.538s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.534s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.532s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.455s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
_________ test_get_with_fake_id_returns_404[404 /areas/{area_id}/edit] _________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/areas.py", line 88, in edit_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/areas.py", line 88, in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/areas.py:88: in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c38109b0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
________ test_get_with_fake_id_returns_404[404 /projects/{project_id}] _________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /projects/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:35,572 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:35,572 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,572 INFO sqlalchemy.engine.Engine [cached since 9.959s ago] ()
2026-03-01 14:01:35,582 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,582 INFO sqlalchemy.engine.Engine [cached since 9.961s ago] ()
2026-03-01 14:01:35,585 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:35,585 INFO sqlalchemy.engine.Engine [cached since 9.962s ago] ()
2026-03-01 14:01:35,591 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:35,591 INFO sqlalchemy.engine.Engine [cached since 9.964s ago] ()
2026-03-01 14:01:35,594 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:35,594 INFO sqlalchemy.engine.Engine [cached since 9.965s ago] ()
2026-03-01 14:01:35,598 INFO sqlalchemy.engine.Engine SELECT * FROM projects WHERE id = $1
2026-03-01 14:01:35,598 INFO sqlalchemy.engine.Engine [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:35,600 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:35,603 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:35,603 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,603 INFO sqlalchemy.engine.Engine [cached since 9.99s ago] ()
2026-03-01 14:01:35,604 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:35,604 INFO sqlalchemy.engine.Engine [cached since 9.983s ago] ()
2026-03-01 14:01:35,604 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:35,604 INFO sqlalchemy.engine.Engine [cached since 9.981s ago] ()
2026-03-01 14:01:35,605 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:35,605 INFO sqlalchemy.engine.Engine [cached since 9.978s ago] ()
2026-03-01 14:01:35,605 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:35,605 INFO sqlalchemy.engine.Engine [cached since 9.976s ago] ()
2026-03-01 14:01:35,606 INFO sqlalchemy.engine.Engine 
        SELECT p.*,
            d.name as domain_name, d.color as domain_color,
            a.name as area_name,
            (SELECT count(*) FROM tasks t WHERE t.project_id = p.id AND t.is_deleted = false) as task_count,
            (SELECT count(*) FROM tasks t WHERE t.project_id = p.id AND t.is_deleted = false AND t.status = 'done') as done_count
        FROM projects p
        JOIN domains d ON p.domain_id = d.id
        LEFT JOIN areas a ON p.area_id = a.id
        WHERE p.is_deleted = false
        ORDER BY d.sort_order, d.name, a.sort_order, a.name, p.sort_order, p.name
    
2026-03-01 14:01:35,606 INFO sqlalchemy.engine.Engine [cached since 8.946s ago] ()
2026-03-01 14:01:35,617 INFO sqlalchemy.engine.Engine 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:35,617 INFO sqlalchemy.engine.Engine [cached since 9.91s ago] (50, 0)
2026-03-01 14:01:35,618 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.959s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.961s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.962s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.964s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.965s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM projects WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.99s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.983s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.981s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.978s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.976s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT p.*,
            d.name as domain_name, d.color as domain_color,
            a.name as area_name,
            (SELECT count(*) FROM tasks t WHERE t.project_id = p.id AND t.is_deleted = false) as task_count,
            (SELECT count(*) FROM tasks t WHERE t.project_id = p.id AND t.is_deleted = false AND t.status = 'done') as done_count
        FROM projects p
        JOIN domains d ON p.domain_id = d.id
        LEFT JOIN areas a ON p.area_id = a.id
        WHERE p.is_deleted = false
        ORDER BY d.sort_order, d.name, a.sort_order, a.name, p.sort_order, p.name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 8.946s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.91s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
______ test_get_with_fake_id_returns_404[404 /projects/{project_id}/edit] ______
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/projects.py", line 196, in edit_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/projects.py", line 196, in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/projects.py:196: in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c3ae0050>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
___________ test_get_with_fake_id_returns_404[404 /tasks/{task_id}] ____________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /tasks/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:36,040 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:36,040 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,040 INFO sqlalchemy.engine.Engine [cached since 10.43s ago] ()
2026-03-01 14:01:36,046 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,046 INFO sqlalchemy.engine.Engine [cached since 10.43s ago] ()
2026-03-01 14:01:36,049 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:36,049 INFO sqlalchemy.engine.Engine [cached since 10.43s ago] ()
2026-03-01 14:01:36,052 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:36,052 INFO sqlalchemy.engine.Engine [cached since 10.43s ago] ()
2026-03-01 14:01:36,055 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:36,055 INFO sqlalchemy.engine.Engine [cached since 10.43s ago] ()
2026-03-01 14:01:36,058 INFO sqlalchemy.engine.Engine SELECT * FROM tasks WHERE id = $1
2026-03-01 14:01:36,058 INFO sqlalchemy.engine.Engine [generated in 0.00014s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:36,063 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:36,065 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:36,066 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,066 INFO sqlalchemy.engine.Engine [cached since 10.45s ago] ()
2026-03-01 14:01:36,066 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,066 INFO sqlalchemy.engine.Engine [cached since 10.45s ago] ()
2026-03-01 14:01:36,067 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:36,067 INFO sqlalchemy.engine.Engine [cached since 10.44s ago] ()
2026-03-01 14:01:36,067 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:36,067 INFO sqlalchemy.engine.Engine [cached since 10.44s ago] ()
2026-03-01 14:01:36,067 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:36,067 INFO sqlalchemy.engine.Engine [cached since 10.44s ago] ()
2026-03-01 14:01:36,068 INFO sqlalchemy.engine.Engine 
        SELECT t.*,
            d.name as domain_name, d.color as domain_color,
            p.name as project_name
        FROM tasks t
        LEFT JOIN domains d ON t.domain_id = d.id
        LEFT JOIN projects p ON t.project_id = p.id
        WHERE t.is_deleted = false
        ORDER BY
            CASE WHEN t.status = 'done' THEN 1 WHEN t.status = 'cancelled' THEN 2 ELSE 0 END,
            t.sort_order, t.created_at
    
2026-03-01 14:01:36,068 INFO sqlalchemy.engine.Engine [cached since 8.826s ago] ()
2026-03-01 14:01:36,075 INFO sqlalchemy.engine.Engine 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:36,075 INFO sqlalchemy.engine.Engine [cached since 10.37s ago] (50, 0)
2026-03-01 14:01:36,076 INFO sqlalchemy.engine.Engine 
            SELECT * FROM projects
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:36,076 INFO sqlalchemy.engine.Engine [cached since 8.829s ago] (50, 0)
2026-03-01 14:01:36,077 INFO sqlalchemy.engine.Engine SELECT value, label FROM context_types WHERE is_deleted = false ORDER BY sort_order
2026-03-01 14:01:36,077 INFO sqlalchemy.engine.Engine [cached since 8.829s ago] ()
2026-03-01 14:01:36,079 INFO sqlalchemy.engine.Engine SELECT task_id FROM time_entries WHERE end_at IS NULL AND is_deleted = false LIMIT 1
2026-03-01 14:01:36,079 INFO sqlalchemy.engine.Engine [cached since 8.83s ago] ()
2026-03-01 14:01:36,081 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.43s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.43s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.43s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.43s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.43s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM tasks WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00014s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.45s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.45s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.44s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.44s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.44s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT t.*,
            d.name as domain_name, d.color as domain_color,
            p.name as project_name
        FROM tasks t
        LEFT JOIN domains d ON t.domain_id = d.id
        LEFT JOIN projects p ON t.project_id = p.id
        WHERE t.is_deleted = false
        ORDER BY
            CASE WHEN t.status = 'done' THEN 1 WHEN t.status = 'cancelled' THEN 2 ELSE 0 END,
            t.sort_order, t.created_at
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 8.826s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 10.37s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM projects
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 8.829s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT value, label FROM context_types WHERE is_deleted = false ORDER BY sort_order
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 8.829s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT task_id FROM time_entries WHERE end_at IS NULL AND is_deleted = false LIMIT 1
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 8.83s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
_________ test_get_with_fake_id_returns_404[404 /tasks/{task_id}/edit] _________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/tasks.py", line 236, in edit_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/tasks.py", line 236, in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/tasks.py:236: in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c3ae3e30>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
___________ test_get_with_fake_id_returns_404[404 /notes/{note_id}] ____________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /notes/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:36,699 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:36,699 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,699 INFO sqlalchemy.engine.Engine [cached since 11.09s ago] ()
2026-03-01 14:01:36,706 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,707 INFO sqlalchemy.engine.Engine [cached since 11.09s ago] ()
2026-03-01 14:01:36,709 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:36,709 INFO sqlalchemy.engine.Engine [cached since 11.09s ago] ()
2026-03-01 14:01:36,713 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:36,714 INFO sqlalchemy.engine.Engine [cached since 11.09s ago] ()
2026-03-01 14:01:36,716 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:36,717 INFO sqlalchemy.engine.Engine [cached since 11.09s ago] ()
2026-03-01 14:01:36,719 INFO sqlalchemy.engine.Engine SELECT * FROM notes WHERE id = $1
2026-03-01 14:01:36,719 INFO sqlalchemy.engine.Engine [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:36,722 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:36,725 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:36,725 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,725 INFO sqlalchemy.engine.Engine [cached since 11.11s ago] ()
2026-03-01 14:01:36,726 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:36,726 INFO sqlalchemy.engine.Engine [cached since 11.11s ago] ()
2026-03-01 14:01:36,726 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:36,727 INFO sqlalchemy.engine.Engine [cached since 11.1s ago] ()
2026-03-01 14:01:36,727 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:36,727 INFO sqlalchemy.engine.Engine [cached since 11.1s ago] ()
2026-03-01 14:01:36,727 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:36,727 INFO sqlalchemy.engine.Engine [cached since 11.1s ago] ()
2026-03-01 14:01:36,728 INFO sqlalchemy.engine.Engine 
        SELECT n.*, d.name as domain_name, d.color as domain_color,
               p.name as project_name
        FROM notes n
        LEFT JOIN domains d ON n.domain_id = d.id
        LEFT JOIN projects p ON n.project_id = p.id
        WHERE n.is_deleted = false
        ORDER BY n.updated_at DESC
    
2026-03-01 14:01:36,728 INFO sqlalchemy.engine.Engine [cached since 9.044s ago] ()
2026-03-01 14:01:36,735 INFO sqlalchemy.engine.Engine 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:36,735 INFO sqlalchemy.engine.Engine [cached since 11.03s ago] (50, 0)
2026-03-01 14:01:36,736 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.09s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.09s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.09s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.09s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.09s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM notes WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.1s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.1s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.1s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT n.*, d.name as domain_name, d.color as domain_color,
               p.name as project_name
        FROM notes n
        LEFT JOIN domains d ON n.domain_id = d.id
        LEFT JOIN projects p ON n.project_id = p.id
        WHERE n.is_deleted = false
        ORDER BY n.updated_at DESC
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.044s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.03s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
_________ test_get_with_fake_id_returns_404[404 /notes/{note_id}/edit] _________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/notes.py", line 135, in edit_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/notes.py", line 135, in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/notes.py:135: in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c3810320>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________ test_get_with_fake_id_returns_404[404 /links/{link_id}/edit] _________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /links/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:37,238 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:37,238 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,239 INFO sqlalchemy.engine.Engine [cached since 11.63s ago] ()
2026-03-01 14:01:37,246 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,246 INFO sqlalchemy.engine.Engine [cached since 11.63s ago] ()
2026-03-01 14:01:37,249 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:37,249 INFO sqlalchemy.engine.Engine [cached since 11.63s ago] ()
2026-03-01 14:01:37,253 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:37,253 INFO sqlalchemy.engine.Engine [cached since 11.63s ago] ()
2026-03-01 14:01:37,256 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:37,256 INFO sqlalchemy.engine.Engine [cached since 11.63s ago] ()
2026-03-01 14:01:37,259 INFO sqlalchemy.engine.Engine SELECT * FROM links WHERE id = $1
2026-03-01 14:01:37,259 INFO sqlalchemy.engine.Engine [generated in 0.00021s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:37,263 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:37,268 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:37,268 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,268 INFO sqlalchemy.engine.Engine [cached since 11.65s ago] ()
2026-03-01 14:01:37,269 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,269 INFO sqlalchemy.engine.Engine [cached since 11.65s ago] ()
2026-03-01 14:01:37,270 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:37,270 INFO sqlalchemy.engine.Engine [cached since 11.65s ago] ()
2026-03-01 14:01:37,271 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:37,271 INFO sqlalchemy.engine.Engine [cached since 11.64s ago] ()
2026-03-01 14:01:37,272 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:37,272 INFO sqlalchemy.engine.Engine [cached since 11.64s ago] ()
2026-03-01 14:01:37,273 INFO sqlalchemy.engine.Engine 
        SELECT l.*, d.name as domain_name, d.color as domain_color, p.name as project_name
        FROM links l
        LEFT JOIN domains d ON l.domain_id = d.id
        LEFT JOIN projects p ON l.project_id = p.id
        WHERE l.is_deleted = false ORDER BY l.sort_order, l.created_at
    
2026-03-01 14:01:37,273 INFO sqlalchemy.engine.Engine [cached since 9.14s ago] ()
2026-03-01 14:01:37,279 INFO sqlalchemy.engine.Engine 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:37,279 INFO sqlalchemy.engine.Engine [cached since 11.57s ago] (50, 0)
2026-03-01 14:01:37,281 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.63s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.63s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.63s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.63s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.63s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM links WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00021s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.64s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.64s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT l.*, d.name as domain_name, d.color as domain_color, p.name as project_name
        FROM links l
        LEFT JOIN domains d ON l.domain_id = d.id
        LEFT JOIN projects p ON l.project_id = p.id
        WHERE l.is_deleted = false ORDER BY l.sort_order, l.created_at
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 9.14s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.57s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
________ test_get_with_fake_id_returns_404[404 /contacts/{contact_id}] _________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/contacts.py", line 70, in contact_detail
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/contacts.py", line 70, in contact_detail
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/contacts.py:70: in contact_detail
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2f93c50>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______ test_get_with_fake_id_returns_404[404 /contacts/{contact_id}/edit] ______
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /contacts/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:37,760 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:37,760 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,760 INFO sqlalchemy.engine.Engine [cached since 12.15s ago] ()
2026-03-01 14:01:37,768 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,768 INFO sqlalchemy.engine.Engine [cached since 12.15s ago] ()
2026-03-01 14:01:37,771 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:37,771 INFO sqlalchemy.engine.Engine [cached since 12.15s ago] ()
2026-03-01 14:01:37,775 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:37,775 INFO sqlalchemy.engine.Engine [cached since 12.15s ago] ()
2026-03-01 14:01:37,778 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:37,778 INFO sqlalchemy.engine.Engine [cached since 12.15s ago] ()
2026-03-01 14:01:37,781 INFO sqlalchemy.engine.Engine SELECT * FROM contacts WHERE id = $1
2026-03-01 14:01:37,782 INFO sqlalchemy.engine.Engine [generated in 0.00022s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:37,786 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:37,791 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:37,791 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,791 INFO sqlalchemy.engine.Engine [cached since 12.18s ago] ()
2026-03-01 14:01:37,792 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:37,792 INFO sqlalchemy.engine.Engine [cached since 12.17s ago] ()
2026-03-01 14:01:37,793 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:37,793 INFO sqlalchemy.engine.Engine [cached since 12.17s ago] ()
2026-03-01 14:01:37,794 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:37,794 INFO sqlalchemy.engine.Engine [cached since 12.17s ago] ()
2026-03-01 14:01:37,795 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:37,795 INFO sqlalchemy.engine.Engine [cached since 12.17s ago] ()
2026-03-01 14:01:37,797 INFO sqlalchemy.engine.Engine 
        SELECT * FROM contacts WHERE is_deleted = false
        ORDER BY sort_order, first_name, last_name
    
2026-03-01 14:01:37,798 INFO sqlalchemy.engine.Engine [cached since 8.273s ago] ()
2026-03-01 14:01:37,800 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.15s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.15s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.15s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.15s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.15s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM contacts WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00022s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.18s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.17s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.17s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.17s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.17s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT * FROM contacts WHERE is_deleted = false
        ORDER BY sort_order, first_name, last_name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 8.273s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
___________ test_get_with_fake_id_returns_404[404 /lists/{list_id}] ____________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/lists.py", line 125, in list_detail
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/lists.py", line 125, in list_detail
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/lists.py:125: in list_detail
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c80d7110>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_________ test_get_with_fake_id_returns_404[404 /lists/{list_id}/edit] _________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /lists/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:38,267 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:38,267 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,267 INFO sqlalchemy.engine.Engine [cached since 12.65s ago] ()
2026-03-01 14:01:38,273 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,273 INFO sqlalchemy.engine.Engine [cached since 12.65s ago] ()
2026-03-01 14:01:38,276 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:38,276 INFO sqlalchemy.engine.Engine [cached since 12.65s ago] ()
2026-03-01 14:01:38,279 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:38,279 INFO sqlalchemy.engine.Engine [cached since 12.65s ago] ()
2026-03-01 14:01:38,282 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:38,283 INFO sqlalchemy.engine.Engine [cached since 12.65s ago] ()
2026-03-01 14:01:38,285 INFO sqlalchemy.engine.Engine SELECT * FROM lists WHERE id = $1
2026-03-01 14:01:38,286 INFO sqlalchemy.engine.Engine [generated in 0.00010s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:38,288 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:38,291 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:38,291 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,291 INFO sqlalchemy.engine.Engine [cached since 12.68s ago] ()
2026-03-01 14:01:38,292 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,292 INFO sqlalchemy.engine.Engine [cached since 12.67s ago] ()
2026-03-01 14:01:38,292 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:38,292 INFO sqlalchemy.engine.Engine [cached since 12.67s ago] ()
2026-03-01 14:01:38,293 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:38,293 INFO sqlalchemy.engine.Engine [cached since 12.67s ago] ()
2026-03-01 14:01:38,293 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:38,293 INFO sqlalchemy.engine.Engine [cached since 12.66s ago] ()
2026-03-01 14:01:38,294 INFO sqlalchemy.engine.Engine 
        SELECT l.*,
            d.name as domain_name, d.color as domain_color,
            p.name as project_name,
            (SELECT count(*) FROM list_items li WHERE li.list_id = l.id AND li.is_deleted = false) as item_count,
            (SELECT count(*) FROM list_items li WHERE li.list_id = l.id AND li.is_deleted = false AND li.completed = true) as completed_count
        FROM lists l
        LEFT JOIN domains d ON l.domain_id = d.id
        LEFT JOIN projects p ON l.project_id = p.id
        WHERE l.is_deleted = false
        ORDER BY l.sort_order, l.created_at DESC
    
2026-03-01 14:01:38,294 INFO sqlalchemy.engine.Engine [generated in 0.00007s] ()
2026-03-01 14:01:38,297 INFO sqlalchemy.engine.Engine 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:38,297 INFO sqlalchemy.engine.Engine [cached since 12.59s ago] (50, 0)
2026-03-01 14:01:38,298 INFO sqlalchemy.engine.Engine 
            SELECT * FROM projects
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
2026-03-01 14:01:38,298 INFO sqlalchemy.engine.Engine [cached since 11.05s ago] (50, 0)
2026-03-01 14:01:38,304 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.65s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM lists WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00010s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.68s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.67s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.67s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.67s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.66s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT l.*,
            d.name as domain_name, d.color as domain_color,
            p.name as project_name,
            (SELECT count(*) FROM list_items li WHERE li.list_id = l.id AND li.is_deleted = false) as item_count,
            (SELECT count(*) FROM list_items li WHERE li.list_id = l.id AND li.is_deleted = false AND li.completed = true) as completed_count
        FROM lists l
        LEFT JOIN domains d ON l.domain_id = d.id
        LEFT JOIN projects p ON l.project_id = p.id
        WHERE l.is_deleted = false
        ORDER BY l.sort_order, l.created_at DESC
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00007s] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM domains
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 12.59s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM projects
            WHERE is_deleted = false
            ORDER BY sort_order ASC
            LIMIT $1 OFFSET $2
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 11.05s ago] (50, 0)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
_______ test_get_with_fake_id_returns_404[404 /files/{file_id}/download] _______
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/files.py", line 145, in download_file
    |     item = await repo.get(file_id)
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/base_repository.py", line 91, in get
    |     result = await self.db.execute(query, {"id": str(id)})
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/files.py", line 145, in download_file
    item = await repo.get(file_id)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/base_repository.py", line 91, in get
    result = await self.db.execute(query, {"id": str(id)})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/files.py:145: in download_file
    item = await repo.get(file_id)
           ^^^^^^^^^^^^^^^^^^^^^^^
core/base_repository.py:91: in get
    result = await self.db.execute(query, {"id": str(id)})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2b394f0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_______ test_get_with_fake_id_returns_404[404 /files/{file_id}/preview] ________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /files/00000000-0000-0000-0000-000000000000/preview returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:38,727 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:38,727 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,727 INFO sqlalchemy.engine.Engine [cached since 13.11s ago] ()
2026-03-01 14:01:38,734 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,734 INFO sqlalchemy.engine.Engine [cached since 13.11s ago] ()
2026-03-01 14:01:38,736 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:38,736 INFO sqlalchemy.engine.Engine [cached since 13.11s ago] ()
2026-03-01 14:01:38,740 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:38,740 INFO sqlalchemy.engine.Engine [cached since 13.11s ago] ()
2026-03-01 14:01:38,742 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:38,743 INFO sqlalchemy.engine.Engine [cached since 13.11s ago] ()
2026-03-01 14:01:38,745 INFO sqlalchemy.engine.Engine SELECT * FROM files WHERE id = $1
2026-03-01 14:01:38,745 INFO sqlalchemy.engine.Engine [generated in 0.00010s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:38,747 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:38,750 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:38,751 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,751 INFO sqlalchemy.engine.Engine [cached since 13.14s ago] ()
2026-03-01 14:01:38,751 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:38,751 INFO sqlalchemy.engine.Engine [cached since 13.13s ago] ()
2026-03-01 14:01:38,752 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:38,752 INFO sqlalchemy.engine.Engine [cached since 13.13s ago] ()
2026-03-01 14:01:38,752 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:38,752 INFO sqlalchemy.engine.Engine [cached since 13.13s ago] ()
2026-03-01 14:01:38,753 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:38,753 INFO sqlalchemy.engine.Engine [cached since 13.12s ago] ()
2026-03-01 14:01:38,753 INFO sqlalchemy.engine.Engine 
            SELECT f.* FROM files f
            WHERE f.is_deleted = false
            ORDER BY f.created_at DESC
            LIMIT 100
        
2026-03-01 14:01:38,753 INFO sqlalchemy.engine.Engine [generated in 0.00007s] ()
2026-03-01 14:01:38,759 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.11s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM files WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00010s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.14s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.13s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.13s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.13s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.12s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT f.* FROM files f
            WHERE f.is_deleted = false
            ORDER BY f.created_at DESC
            LIMIT 100
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00007s] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
________ test_get_with_fake_id_returns_404[404 /files/{file_id}/serve] _________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/files.py", line 178, in serve_file
    |     item = await repo.get(file_id)
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/base_repository.py", line 91, in get
    |     result = await self.db.execute(query, {"id": str(id)})
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/files.py", line 178, in serve_file
    item = await repo.get(file_id)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/base_repository.py", line 91, in get
    result = await self.db.execute(query, {"id": str(id)})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/files.py:178: in serve_file
    item = await repo.get(file_id)
           ^^^^^^^^^^^^^^^^^^^^^^^
core/base_repository.py:91: in get
    result = await self.db.execute(query, {"id": str(id)})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c3a6cc80>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
________ test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}] _________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /meetings/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:39,332 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:39,332 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,332 INFO sqlalchemy.engine.Engine [cached since 13.72s ago] ()
2026-03-01 14:01:39,339 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,339 INFO sqlalchemy.engine.Engine [cached since 13.72s ago] ()
2026-03-01 14:01:39,342 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:39,342 INFO sqlalchemy.engine.Engine [cached since 13.72s ago] ()
2026-03-01 14:01:39,345 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:39,345 INFO sqlalchemy.engine.Engine [cached since 13.72s ago] ()
2026-03-01 14:01:39,349 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:39,349 INFO sqlalchemy.engine.Engine [cached since 13.72s ago] ()
2026-03-01 14:01:39,351 INFO sqlalchemy.engine.Engine SELECT * FROM meetings WHERE id = $1
2026-03-01 14:01:39,351 INFO sqlalchemy.engine.Engine [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:39,355 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:39,358 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:39,358 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,358 INFO sqlalchemy.engine.Engine [cached since 13.74s ago] ()
2026-03-01 14:01:39,358 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,359 INFO sqlalchemy.engine.Engine [cached since 13.74s ago] ()
2026-03-01 14:01:39,359 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:39,359 INFO sqlalchemy.engine.Engine [cached since 13.74s ago] ()
2026-03-01 14:01:39,359 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:39,360 INFO sqlalchemy.engine.Engine [cached since 13.73s ago] ()
2026-03-01 14:01:39,360 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:39,360 INFO sqlalchemy.engine.Engine [cached since 13.73s ago] ()
2026-03-01 14:01:39,360 INFO sqlalchemy.engine.Engine 
        SELECT m.*,
            (SELECT count(*) FROM meeting_tasks mt
             JOIN tasks t ON mt.task_id = t.id
             WHERE mt.meeting_id = m.id AND t.is_deleted = false) as action_count
        FROM meetings m
        WHERE m.is_deleted = false
        ORDER BY m.meeting_date DESC, m.start_at DESC NULLS LAST
    
2026-03-01 14:01:39,360 INFO sqlalchemy.engine.Engine [generated in 0.00008s] ()
2026-03-01 14:01:39,375 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM meetings WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.74s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.74s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.74s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.73s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 13.73s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT m.*,
            (SELECT count(*) FROM meeting_tasks mt
             JOIN tasks t ON mt.task_id = t.id
             WHERE mt.meeting_id = m.id AND t.is_deleted = false) as action_count
        FROM meetings m
        WHERE m.is_deleted = false
        ORDER BY m.meeting_date DESC, m.start_at DESC NULLS LAST
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00008s] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
______ test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}/edit] ______
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/meetings.py", line 172, in edit_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/meetings.py", line 172, in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/meetings.py:172: in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c2ffba70>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
_______ test_get_with_fake_id_returns_404[404 /decisions/{decision_id}] ________
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /decisions/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:39,816 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:39,816 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,816 INFO sqlalchemy.engine.Engine [cached since 14.2s ago] ()
2026-03-01 14:01:39,823 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,823 INFO sqlalchemy.engine.Engine [cached since 14.2s ago] ()
2026-03-01 14:01:39,826 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:39,826 INFO sqlalchemy.engine.Engine [cached since 14.2s ago] ()
2026-03-01 14:01:39,829 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:39,830 INFO sqlalchemy.engine.Engine [cached since 14.2s ago] ()
2026-03-01 14:01:39,832 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:39,832 INFO sqlalchemy.engine.Engine [cached since 14.2s ago] ()
2026-03-01 14:01:39,835 INFO sqlalchemy.engine.Engine SELECT * FROM decisions WHERE id = $1
2026-03-01 14:01:39,835 INFO sqlalchemy.engine.Engine [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:39,837 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:39,841 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:39,841 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,841 INFO sqlalchemy.engine.Engine [cached since 14.23s ago] ()
2026-03-01 14:01:39,842 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:39,842 INFO sqlalchemy.engine.Engine [cached since 14.22s ago] ()
2026-03-01 14:01:39,843 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:39,843 INFO sqlalchemy.engine.Engine [cached since 14.22s ago] ()
2026-03-01 14:01:39,843 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:39,843 INFO sqlalchemy.engine.Engine [cached since 14.22s ago] ()
2026-03-01 14:01:39,843 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:39,843 INFO sqlalchemy.engine.Engine [cached since 14.21s ago] ()
2026-03-01 14:01:39,844 INFO sqlalchemy.engine.Engine 
        SELECT d.*, m.title as meeting_title
        FROM decisions d
        LEFT JOIN meetings m ON d.meeting_id = m.id
        WHERE d.is_deleted = false
        ORDER BY d.created_at DESC
    
2026-03-01 14:01:39,844 INFO sqlalchemy.engine.Engine [generated in 0.00010s] ()
2026-03-01 14:01:39,855 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM decisions WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.23s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.21s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT d.*, m.title as meeting_title
        FROM decisions d
        LEFT JOIN meetings m ON d.meeting_id = m.id
        WHERE d.is_deleted = false
        ORDER BY d.created_at DESC
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00010s] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
_____ test_get_with_fake_id_returns_404[404 /decisions/{decision_id}/edit] _____
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/decisions.py", line 150, in edit_form
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/decisions.py", line 150, in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/decisions.py:150: in edit_form
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c302e030>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
______ test_get_with_fake_id_returns_404[404 /weblinks/{weblink_id}/edit] ______
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /weblinks/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:40,324 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:40,324 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,324 INFO sqlalchemy.engine.Engine [cached since 14.71s ago] ()
2026-03-01 14:01:40,331 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,331 INFO sqlalchemy.engine.Engine [cached since 14.71s ago] ()
2026-03-01 14:01:40,333 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:40,333 INFO sqlalchemy.engine.Engine [cached since 14.71s ago] ()
2026-03-01 14:01:40,337 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:40,337 INFO sqlalchemy.engine.Engine [cached since 14.71s ago] ()
2026-03-01 14:01:40,340 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:40,340 INFO sqlalchemy.engine.Engine [cached since 14.71s ago] ()
2026-03-01 14:01:40,343 INFO sqlalchemy.engine.Engine SELECT * FROM weblinks WHERE id = $1
2026-03-01 14:01:40,343 INFO sqlalchemy.engine.Engine [generated in 0.00013s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:40,345 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:40,348 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:40,348 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,348 INFO sqlalchemy.engine.Engine [cached since 14.74s ago] ()
2026-03-01 14:01:40,349 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,349 INFO sqlalchemy.engine.Engine [cached since 14.73s ago] ()
2026-03-01 14:01:40,349 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:40,350 INFO sqlalchemy.engine.Engine [cached since 14.73s ago] ()
2026-03-01 14:01:40,350 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:40,350 INFO sqlalchemy.engine.Engine [cached since 14.72s ago] ()
2026-03-01 14:01:40,350 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:40,350 INFO sqlalchemy.engine.Engine [cached since 14.72s ago] ()
2026-03-01 14:01:40,351 INFO sqlalchemy.engine.Engine 
        SELECT wf.*, (SELECT count(*) FROM folder_weblinks fw WHERE fw.folder_id = wf.id) as link_count
        FROM weblink_folders wf
        WHERE wf.is_deleted = false
        ORDER BY wf.sort_order, wf.name
    
2026-03-01 14:01:40,351 INFO sqlalchemy.engine.Engine [generated in 0.00008s] ()
2026-03-01 14:01:40,354 INFO sqlalchemy.engine.Engine 
            SELECT w.* FROM weblinks w
            WHERE w.is_deleted = false
            ORDER BY w.sort_order, w.label
        
2026-03-01 14:01:40,354 INFO sqlalchemy.engine.Engine [generated in 0.00008s] ()
2026-03-01 14:01:40,361 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.71s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.71s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.71s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.71s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.71s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM weblinks WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00013s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.74s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.73s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.73s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 14.72s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT wf.*, (SELECT count(*) FROM folder_weblinks fw WHERE fw.folder_id = wf.id) as link_count
        FROM weblink_folders wf
        WHERE wf.is_deleted = false
        ORDER BY wf.sort_order, wf.name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00008s] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT w.* FROM weblinks w
            WHERE w.is_deleted = false
            ORDER BY w.sort_order, w.label
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00008s] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
____ test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}] _____
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 186, in __call__
  |     async with anyio.create_task_group() as task_group:
  |                ^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 783, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 353, in from_call
    |     result: TResult | None = func()
    |                              ^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 245, in <lambda>
    |     lambda: runtest_hook(item=item, **kwds),
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
    |     yield
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/capture.py", line 900, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/skipping.py", line 268, in pytest_runtest_call
    |     return (yield)
    |             ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/runner.py", line 179, in pytest_runtest_call
    |     item.runtest()
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 469, in runtest
    |     super().runtest()
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 1720, in runtest
    |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_hooks.py", line 512, in __call__
    |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
    |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 167, in _multicall
    |     raise exception
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
    |     teardown.throw(exception)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
    |     return result.get_result()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_result.py", line 103, in get_result
    |     raise exc.with_traceback(tb)
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
    |     res = yield
    |           ^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pluggy/_callers.py", line 121, in _multicall
    |     res = hook_impl.function(*args)
    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/_pytest/python.py", line 166, in pytest_pyfunc_call
    |     result = testfunction(**testargs)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/pytest_asyncio/plugin.py", line 716, in inner
    |     runner.run(coro, context=context)
    |   File "/usr/local/lib/python3.12/asyncio/runners.py", line 118, in run
    |     return self._loop.run_until_complete(task)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
    |     return future.result()
    |            ^^^^^^^^^^^^^^^
    |   File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    |     r = await client.get(path, follow_redirects=True)
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    |     return await self.request(
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    |     return await self.send(request, auth=auth, follow_redirects=follow_redirects)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    |     response = await self._send_handling_auth(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    |     response = await self._send_handling_redirects(
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    |     response = await self._send_single_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    |     response = await transport.handle_async_request(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    |     with collapse_excgroups():
    |          ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    |     self.gen.throw(value)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/main.py", line 79, in add_request_context
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/routers/appointments.py", line 170, in appointment_detail
    |     sidebar = await get_sidebar_data(db)
    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/core/sidebar.py", line 14, in get_sidebar_data
    |     result = await db.execute(text("""
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    |     result = await greenlet_spawn(
    |              ^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    |     result = context.throw(*sys.exc_info())
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    |     return self._execute_internal(
    |            ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    |     conn = self._connection_for_bind(bind)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    |     return trans._connection_for_bind(engine, execution_options)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "<string>", line 2, in _connection_for_bind
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    |     ret_value = fn(self, *arg, **kw)
    |                 ^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    |     conn = bind.connect()
    |            ^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    |     return self._connection_cls(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    |     self._dbapi_connection = engine.raw_connection()
    |                              ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    |     return self.pool.connect()
    |            ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    |     return _ConnectionFairy._checkout(self)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    |     with util.safe_reraise():
    |          ^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    |     raise exc_value.with_traceback(exc_tb)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    |     result = pool._dialect._do_ping_w_event(
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    |     return self.do_ping(dbapi_connection)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    |     dbapi_connection.ping()
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    |     self._handle_exception(error)
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    |     raise error
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    |     _ = self.await_(self._async_ping())
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    |     return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    |     value = await result
    |             ^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    |     await tr.start()
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    |     await self._connection.execute(query)
    |   File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    |     result = await self._protocol.query(query, timeout)
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "asyncpg/protocol/protocol.pyx", line 375, in query
    | RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/app/tests/test_smoke_dynamic.py", line 74, in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1768, in get
    return await self.request(
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1540, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1629, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1657, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1694, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_client.py", line 1730, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py", line 170, in handle_async_request
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/applications.py", line 113, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 185, in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/usr/local/lib/python3.12/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 187, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/main.py", line 79, in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 163, in call_next
    raise app_exc
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py", line 149, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/routers/appointments.py", line 170, in appointment_detail
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/core/sidebar.py", line 14, in get_sidebar_data
    result = await db.execute(text("""
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py", line 461, in execute
    result = await greenlet_spawn(
             ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 201, in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2362, in execute
    return self._execute_internal(
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2237, in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 2106, in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 2, in _connection_for_bind
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1189, in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3278, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 146, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 3302, in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 449, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1362, in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
    raise exc_value.with_traceback(exc_tb)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 1300, in _checkout
    result = pool._dialect._do_ping_w_event(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 716, in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1150, in do_ping
    dbapi_connection.ping()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 801, in ping
    self._handle_exception(error)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 782, in _handle_exception
    raise error
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 799, in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 808, in _async_ping
    await tr.start()
  File "/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py", line 146, in start
    await self._connection.execute(query)
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop

During handling of the above exception, another exception occurred:
tests/test_smoke_dynamic.py:74: in test_get_with_fake_id_returns_404
    r = await client.get(path, follow_redirects=True)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1768: in get
    return await self.request(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1540: in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1629: in send
    response = await self._send_handling_auth(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1657: in _send_handling_auth
    response = await self._send_handling_redirects(
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1694: in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_client.py:1730: in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/httpx/_transports/asgi.py:170: in handle_async_request
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
    await super().__call__(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:187: in __call__
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/errors.py:165: in __call__
    await self.app(scope, receive, _send)
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:185: in __call__
    with collapse_excgroups():
         ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/contextlib.py:158: in __exit__
    self.gen.throw(value)
/usr/local/lib/python3.12/site-packages/starlette/_utils.py:82: in collapse_excgroups
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:187: in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
main.py:79: in add_request_context
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:163: in call_next
    raise app_exc
/usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149: in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
/usr/local/lib/python3.12/site-packages/starlette/middleware/exceptions.py:62: in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
    await self.middleware_stack(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:735: in app
    await route.handle(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:288: in handle
    await self.app(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:76: in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:53: in wrapped_app
    raise exc
/usr/local/lib/python3.12/site-packages/starlette/_exception_handler.py:42: in wrapped_app
    await app(scope, receive, sender)
/usr/local/lib/python3.12/site-packages/starlette/routing.py:73: in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:301: in app
    raw_response = await run_endpoint_function(
/usr/local/lib/python3.12/site-packages/fastapi/routing.py:212: in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
routers/appointments.py:170: in appointment_detail
    sidebar = await get_sidebar_data(db)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
core/sidebar.py:14: in get_sidebar_data
    result = await db.execute(text("""
/usr/local/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/session.py:461: in execute
    result = await greenlet_spawn(
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
    result = context.throw(*sys.exc_info())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2362: in execute
    return self._execute_internal(
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2237: in _execute_internal
    conn = self._connection_for_bind(bind)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:2106: in _connection_for_bind
    return trans._connection_for_bind(engine, execution_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:2: in _connection_for_bind
    ???
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py:139: in _go
    ret_value = fn(self, *arg, **kw)
                ^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/orm/session.py:1189: in _connection_for_bind
    conn = bind.connect()
           ^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3278: in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:146: in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/base.py:3302: in raw_connection
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:449: in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1362: in _checkout
    with util.safe_reraise():
         ^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py:146: in __exit__
    raise exc_value.with_traceback(exc_tb)
/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py:1300: in _checkout
    result = pool._dialect._do_ping_w_event(
/usr/local/lib/python3.12/site-packages/sqlalchemy/engine/default.py:716: in _do_ping_w_event
    return self.do_ping(dbapi_connection)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:1150: in do_ping
    dbapi_connection.ping()
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:801: in ping
    self._handle_exception(error)
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:782: in _handle_exception
    raise error
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:799: in ping
    _ = self.await_(self._async_ping())
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:808: in _async_ping
    await tr.start()
/usr/local/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
    await self._connection.execute(query)
/usr/local/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
asyncpg/protocol/protocol.pyx:375: in query
    ???
E   RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
------------------------------ Captured log call -------------------------------
ERROR    sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection <AdaptedConnection <asyncpg.connection.Connection object at 0x7018c3a6e8a0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/pool/base.py", line 374, in _close_connection
    self._dialect.do_terminate(connection)
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 1117, in do_terminate
    dbapi_connection.terminate()
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py", line 895, in terminate
    self.await_(self._connection.close(timeout=2))
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 132, in await_only
    return current.parent.switch(awaitable)  # type: ignore[no-any-return,attr-defined] # noqa: E501
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py", line 196, in greenlet_spawn
    value = await result
            ^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1504, in close
    await self._protocol.close(timeout)
  File "asyncpg/protocol/protocol.pyx", line 627, in close
  File "asyncpg/protocol/protocol.pyx", line 660, in asyncpg.protocol.protocol.BaseProtocol._request_cancel
  File "/usr/local/lib/python3.12/site-packages/asyncpg/connection.py", line 1673, in _cancel_current_command
    self._cancellations.add(self._loop.create_task(self._cancel(waiter)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 455, in create_task
    self._check_closed()
  File "/usr/local/lib/python3.12/asyncio/base_events.py", line 545, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
__ test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}/edit] __
tests/test_smoke_dynamic.py:75: in test_get_with_fake_id_returns_404
    assert r.status_code in (404, 302, 303), \
E   AssertionError: GET /appointments/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
E   assert 200 in (404, 302, 303)
E    +  where 200 = <Response [200 OK]>.status_code
----------------------------- Captured stdout call -----------------------------
2026-03-01 14:01:40,818 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:40,818 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,818 INFO sqlalchemy.engine.Engine [cached since 15.2s ago] ()
2026-03-01 14:01:40,825 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,825 INFO sqlalchemy.engine.Engine [cached since 15.2s ago] ()
2026-03-01 14:01:40,827 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:40,827 INFO sqlalchemy.engine.Engine [cached since 15.2s ago] ()
2026-03-01 14:01:40,831 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:40,831 INFO sqlalchemy.engine.Engine [cached since 15.2s ago] ()
2026-03-01 14:01:40,834 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:40,834 INFO sqlalchemy.engine.Engine [cached since 15.2s ago] ()
2026-03-01 14:01:40,836 INFO sqlalchemy.engine.Engine SELECT * FROM appointments WHERE id = $1
2026-03-01 14:01:40,836 INFO sqlalchemy.engine.Engine [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
2026-03-01 14:01:40,839 INFO sqlalchemy.engine.Engine COMMIT
2026-03-01 14:01:40,842 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2026-03-01 14:01:40,842 INFO sqlalchemy.engine.Engine 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,842 INFO sqlalchemy.engine.Engine [cached since 15.23s ago] ()
2026-03-01 14:01:40,843 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
2026-03-01 14:01:40,843 INFO sqlalchemy.engine.Engine [cached since 15.22s ago] ()
2026-03-01 14:01:40,843 INFO sqlalchemy.engine.Engine 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
2026-03-01 14:01:40,843 INFO sqlalchemy.engine.Engine [cached since 15.22s ago] ()
2026-03-01 14:01:40,844 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
2026-03-01 14:01:40,844 INFO sqlalchemy.engine.Engine [cached since 15.22s ago] ()
2026-03-01 14:01:40,844 INFO sqlalchemy.engine.Engine 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
2026-03-01 14:01:40,844 INFO sqlalchemy.engine.Engine [cached since 15.22s ago] ()
2026-03-01 14:01:40,845 INFO sqlalchemy.engine.Engine 
            SELECT * FROM appointments
            WHERE is_deleted = false AND start_at >= CURRENT_DATE
            ORDER BY start_at ASC
            LIMIT 100
        
2026-03-01 14:01:40,845 INFO sqlalchemy.engine.Engine [cached since 7.18s ago] ()
2026-03-01 14:01:40,848 INFO sqlalchemy.engine.Engine COMMIT
------------------------------ Captured log call -------------------------------
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.2s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 SELECT * FROM appointments WHERE id = $1
INFO     sqlalchemy.engine.Engine:base.py:1846 [generated in 0.00011s] ('00000000-0000-0000-0000-000000000000',)
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
INFO     sqlalchemy.engine.Engine:base.py:2701 BEGIN (implicit)
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, name, color FROM domains
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.23s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, name FROM areas
        WHERE is_deleted = false ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT id, domain_id, area_id, name, status FROM projects
        WHERE is_deleted = false AND status != 'archived'
        ORDER BY sort_order, name
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM capture WHERE is_deleted = false AND processed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
        SELECT count(*) FROM daily_focus
        WHERE is_deleted = false AND focus_date = CURRENT_DATE AND completed = false
    
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 15.22s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:1846 
            SELECT * FROM appointments
            WHERE is_deleted = false AND start_at >= CURRENT_DATE
            ORDER BY start_at ASC
            LIMIT 100
        
INFO     sqlalchemy.engine.Engine:base.py:1846 [cached since 7.18s ago] ()
INFO     sqlalchemy.engine.Engine:base.py:2707 COMMIT
=============================== warnings summary ===============================
tests/test_smoke_dynamic.py: 28 warnings
  /usr/local/lib/python3.12/site-packages/starlette/templating.py:161: DeprecationWarning: The `name` is not the first parameter anymore. The first parameter should be the `Request` instance.
  Replace `TemplateResponse(name, {"request": request})` by `TemplateResponse(request, name)`.
    warnings.warn(

tests/test_smoke_dynamic.py: 29 warnings
  /usr/local/lib/python3.12/site-packages/_pytest/stash.py:108: RuntimeWarning: coroutine 'Connection._cancel' was never awaited
    del self._storage[key]
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /domains/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /areas/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /projects/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /tasks/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /notes/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /links/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /focus/] - sqlalchemy.exc.DBAPIError: (sqlalchemy.dialects.postgresql.asyncpg.Error) <class 'asyncpg.exceptions.DataError'>: invalid input for query argument $1: '2026-03-01' ('str' object has no attribute 'toordinal')
[SQL: 
        SELECT df.*, t.title, t.priority, t.status as task_status,
               t.project_id, t.due_date, t.estimated_minutes,
               p.name as project_name,
               d.name as domain_name, d.color as domain_color
        FROM daily_focus df
        JOIN tasks t ON df.task_id = t.id
        LEFT JOIN projects p ON t.project_id = p.id
        LEFT JOIN domains d ON t.domain_id = d.id
        WHERE df.focus_date = $1 AND df.is_deleted = false
        ORDER BY df.sort_order, df.created_at
    ]
[parameters: ('2026-03-01',)]
(Background on this error at: https://sqlalche.me/e/20/dbapi)
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /capture/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /contacts/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /search/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /lists/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /files/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /meetings/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /decisions/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/folders/create] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /appointments/new] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /time/running] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /domains/{domain_id}/edit] - AssertionError: GET /domains/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /areas/{area_id}/edit] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /projects/{project_id}] - AssertionError: GET /projects/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /projects/{project_id}/edit] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /tasks/{task_id}] - AssertionError: GET /tasks/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /tasks/{task_id}/edit] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /notes/{note_id}] - AssertionError: GET /notes/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /notes/{note_id}/edit] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /links/{link_id}/edit] - AssertionError: GET /links/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /contacts/{contact_id}] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /contacts/{contact_id}/edit] - AssertionError: GET /contacts/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /lists/{list_id}] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /lists/{list_id}/edit] - AssertionError: GET /lists/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/download] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/preview] - AssertionError: GET /files/00000000-0000-0000-0000-000000000000/preview returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/serve] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}] - AssertionError: GET /meetings/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}/edit] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /decisions/{decision_id}] - AssertionError: GET /decisions/00000000-0000-0000-0000-000000000000 returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /decisions/{decision_id}/edit] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /weblinks/{weblink_id}/edit] - AssertionError: GET /weblinks/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}] - RuntimeError: Task <Task pending name='starlette.middleware.base.BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro' coro=<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn.<locals>.task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}/edit] - AssertionError: GET /appointments/00000000-0000-0000-0000-000000000000/edit returned 200, expected 404 or redirect
assert 200 in (404, 302, 303)
 +  where 200 = <Response [200 OK]>.status_code
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /domains/{domain_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /areas/{area_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /projects/{project_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /projects/{project_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /tasks/{task_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /tasks/{task_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /notes/{note_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /notes/{note_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /links/{link_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /contacts/{contact_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /contacts/{contact_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /lists/{list_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /lists/{list_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /files/{file_id}/download] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /files/{file_id}/preview] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /files/{file_id}/serve] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /meetings/{meeting_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /meetings/{meeting_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /decisions/{decision_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /decisions/{decision_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /weblinks/{weblink_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /appointments/{appointment_id}] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
ERROR tests/test_smoke_dynamic.py::test_get_with_valid_id_returns_200[GET /appointments/{appointment_id}/edit] - RuntimeError: Seed data insertion failed: column "folder_id" of relation "weblinks" does not exist
LINE 2:             INSERT INTO weblinks (id, label, url, folder_id,...
                                                          ^
============ 41 failed, 18 passed, 57 warnings, 23 errors in 15.30s ============
