============================================= 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: : 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) : 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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: 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 "", 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop ------------------------------ Captured log call ------------------------------- ERROR sqlalchemy.pool.impl.AsyncAdaptedQueuePool:base.py:378 Exception terminating connection > 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 = .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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /areas/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /projects/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /tasks/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /notes/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /links/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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) : 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 .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /contacts/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /search/] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /lists/] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /files/] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /meetings/] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /decisions/] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /weblinks/folders/create] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /appointments/new] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future attached to a different loop FAILED tests/test_smoke_dynamic.py::test_get_no_params_returns_200[GET /time/running] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /areas/{area_id}/edit] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /projects/{project_id}/edit] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /tasks/{task_id}/edit] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /notes/{note_id}/edit] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /contacts/{contact_id}] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /lists/{list_id}] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/download] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /files/{file_id}/serve] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /meetings/{meeting_id}/edit] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /decisions/{decision_id}/edit] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .status_code FAILED tests/test_smoke_dynamic.py::test_get_with_fake_id_returns_404[404 /appointments/{appointment_id}] - RuntimeError: Task .call_next..coro() running at /usr/local/lib/python3.12/site-packages/starlette/middleware/base.py:149> cb=[TaskGroup._spawn..task_done() at /usr/local/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:805]> got Future 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 = .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 ============