Files
Imago/pytest_out.txt
bruno 2f2a5e9b4a
CI / Lint & Format (push) Failing after 28s
CI / Tests (push) Has been skipped
CI / Security Scan (push) Failing after 8s
CI / Docker Build (push) Has been skipped
Add admin panel, WebSocket support, and API versioning
Introduce an admin portal (React + Nginx), WebSocket routing, and
API versioning middleware with `/api/v1/` prefix deprecation.
Add master API key authentication, new Prometheus metrics for AI
token consumption and active WebSockets, and extend S3 config
with a public endpoint URL. Update test paths and fixtures to
align with the new routing structure.
2026-06-22 11:25:22 -04:00

287 lines
47 KiB
Plaintext

============================= test session starts =============================
platform win32 -- Python 3.14.3, pytest-8.3.3, pluggy-1.6.0 -- C:\Users\bruno\scoop\apps\python\current\python.exe
cachedir: .pytest_cache
rootdir: C:\dev\git\python\imago
configfile: pytest.ini
plugins: anyio-4.12.0, asyncio-0.24.0, cov-5.0.0, mock-3.15.1, respx-0.22.0
asyncio: mode=Mode.AUTO, default_loop_scope=None
collecting ... collected 8 items
tests/test_websocket.py::TestWSPipelineNoToken::test_no_token_rejected PASSED [ 12%]
tests/test_websocket.py::TestWSPipelineAuth::test_invalid_token_rejected PASSED [ 25%]
tests/test_websocket.py::TestWSPipelineAuth::test_valid_token_accepted PASSED [ 37%]
tests/test_websocket.py::TestWSPipelineAuth::test_wrong_owner_rejected PASSED [ 50%]
tests/test_websocket.py::TestWSPipelineSynthetic::test_done_image_sends_synthetic PASSED [ 62%]
tests/test_websocket.py::TestWSPipelineSynthetic::test_error_image_sends_synthetic PASSED [ 75%]
tests/test_websocket.py::TestWSAdminMonitor::test_admin_no_token_rejected FAILED [ 87%]
tests/test_websocket.py::TestWSAdminMonitor::test_admin_non_admin_rejected PASSED [100%]
================================== FAILURES ===================================
_______________ TestWSAdminMonitor.test_admin_no_token_rejected _______________
tests\test_websocket.py:143: in test_admin_no_token_rejected
with pytest.raises(Exception):
E Failed: DID NOT RAISE <class 'Exception'>
---------------------------- Captured stdout setup ----------------------------
2026-02-25T02:38:15.285340Z [debug ] Using proactor: IocpProactor [asyncio]
2026-02-25T02:38:15.286531Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.286857Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.287360Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E540>, 'PRAGMA main.table_info("images")', ()) [aiosqlite]
2026-02-25T02:38:15.287769Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E540>, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite]
2026-02-25T02:38:15.288230Z [debug ] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E540>) [aiosqlite]
2026-02-25T02:38:15.288450Z [debug ] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E540>) completed [aiosqlite]
2026-02-25T02:38:15.288777Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E540>) [aiosqlite]
2026-02-25T02:38:15.289040Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E540>) completed [aiosqlite]
2026-02-25T02:38:15.289539Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.289723Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.290052Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E440>, 'PRAGMA temp.table_info("images")', ()) [aiosqlite]
2026-02-25T02:38:15.290410Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E440>, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite]
2026-02-25T02:38:15.290742Z [debug ] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E440>) [aiosqlite]
2026-02-25T02:38:15.290914Z [debug ] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E440>) completed [aiosqlite]
2026-02-25T02:38:15.291251Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E440>) [aiosqlite]
2026-02-25T02:38:15.291472Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E440>) completed [aiosqlite]
2026-02-25T02:38:15.291877Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.292054Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.292386Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DBC0>, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite]
2026-02-25T02:38:15.292671Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DBC0>, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite]
2026-02-25T02:38:15.293078Z [debug ] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72DBC0>) [aiosqlite]
2026-02-25T02:38:15.293254Z [debug ] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72DBC0>) completed [aiosqlite]
2026-02-25T02:38:15.293569Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DBC0>) [aiosqlite]
2026-02-25T02:38:15.293750Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DBC0>) completed [aiosqlite]
2026-02-25T02:38:15.294209Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.294386Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.294725Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798940>, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite]
2026-02-25T02:38:15.294917Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798940>, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite]
2026-02-25T02:38:15.295321Z [debug ] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B798940>) [aiosqlite]
2026-02-25T02:38:15.295856Z [debug ] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B798940>) completed [aiosqlite]
2026-02-25T02:38:15.300241Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798940>) [aiosqlite]
2026-02-25T02:38:15.302520Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798940>) completed [aiosqlite]
2026-02-25T02:38:15.309713Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.310650Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.312266Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798B40>, '\nCREATE TABLE api_clients (\n\tid VARCHAR(36) NOT NULL, \n\tname VARCHAR(256) NOT NULL, \n\tapi_key_hash VARCHAR(64) NOT NULL, \n\tscopes JSON NOT NULL, \n\t"plan" VARCHAR(8) NOT NULL, \n\tis_active BOOLEAN NOT NULL, \n\tstorage_used_bytes BIGINT NOT NULL, \n\tquota_storage_mb INTEGER NOT NULL, \n\tquota_images INTEGER NOT NULL, \n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tPRIMARY KEY (id)\n)\n\n', ()) [aiosqlite]
2026-02-25T02:38:15.313252Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798B40>, '\nCREATE TABLE api_clients (\n\tid VARCHAR(36) NOT NULL, \n\tname VARCHAR(256) NOT NULL, \n\tapi_key_hash VARCHAR(64) NOT NULL, \n\tscopes JSON NOT NULL, \n\t"plan" VARCHAR(8) NOT NULL, \n\tis_active BOOLEAN NOT NULL, \n\tstorage_used_bytes BIGINT NOT NULL, \n\tquota_storage_mb INTEGER NOT NULL, \n\tquota_images INTEGER NOT NULL, \n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tPRIMARY KEY (id)\n)\n\n', ()) completed [aiosqlite]
2026-02-25T02:38:15.314205Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798B40>) [aiosqlite]
2026-02-25T02:38:15.314618Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798B40>) completed [aiosqlite]
2026-02-25T02:38:15.315781Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.316185Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.316876Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798BC0>, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) [aiosqlite]
2026-02-25T02:38:15.317375Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798BC0>, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed [aiosqlite]
2026-02-25T02:38:15.317900Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798BC0>) [aiosqlite]
2026-02-25T02:38:15.318223Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798BC0>) completed [aiosqlite]
2026-02-25T02:38:15.318861Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.319120Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.319601Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799140>, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) [aiosqlite]
2026-02-25T02:38:15.319996Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799140>, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed [aiosqlite]
2026-02-25T02:38:15.320515Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799140>) [aiosqlite]
2026-02-25T02:38:15.320794Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799140>) completed [aiosqlite]
2026-02-25T02:38:15.321887Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.322145Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.322488Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DB40>, '\nCREATE TABLE images (\n\tid INTEGER NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tclient_id VARCHAR(36) NOT NULL, \n\toriginal_name VARCHAR(512) NOT NULL, \n\tfilename VARCHAR(512) NOT NULL, \n\tfile_path VARCHAR(1024) NOT NULL, \n\tthumbnail_path VARCHAR(1024), \n\tmime_type VARCHAR(128), \n\tfile_size BIGINT, \n\twidth INTEGER, \n\theight INTEGER, \n\tuploaded_at DATETIME, \n\tprocessing_status VARCHAR(10) NOT NULL, \n\tprocessing_error TEXT, \n\tprocessing_started_at DATETIME, \n\tprocessing_done_at DATETIME, \n\texif_raw JSON, \n\texif_make VARCHAR(256), \n\texif_model VARCHAR(256), \n\texif_lens VARCHAR(256), \n\texif_taken_at DATETIME, \n\texif_gps_lat FLOAT, \n\texif_gps_lon FLOAT, \n\texif_altitude FLOAT, \n\texif_iso INTEGER, \n\texif_aperture VARCHAR(32), \n\texif_shutter VARCHAR(32), \n\texif_focal VARCHAR(32), \n\texif_flash BOOLEAN, \n\texif_orientation INTEGER, \n\texif_software VARCHAR(256), \n\tocr_text TEXT, \n\tocr_language VARCHAR(64), \n\tocr_confidence FLOAT, \n\tocr_has_text BOOLEAN, \n\tai_description TEXT, \n\tai_tags JSON, \n\tai_confidence FLOAT, \n\tai_model_used VARCHAR(128), \n\tai_processed_at DATETIME, \n\tai_prompt_tokens INTEGER, \n\tai_output_tokens INTEGER, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(client_id) REFERENCES api_clients (id)\n)\n\n', ()) [aiosqlite]
2026-02-25T02:38:15.323002Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DB40>, '\nCREATE TABLE images (\n\tid INTEGER NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tclient_id VARCHAR(36) NOT NULL, \n\toriginal_name VARCHAR(512) NOT NULL, \n\tfilename VARCHAR(512) NOT NULL, \n\tfile_path VARCHAR(1024) NOT NULL, \n\tthumbnail_path VARCHAR(1024), \n\tmime_type VARCHAR(128), \n\tfile_size BIGINT, \n\twidth INTEGER, \n\theight INTEGER, \n\tuploaded_at DATETIME, \n\tprocessing_status VARCHAR(10) NOT NULL, \n\tprocessing_error TEXT, \n\tprocessing_started_at DATETIME, \n\tprocessing_done_at DATETIME, \n\texif_raw JSON, \n\texif_make VARCHAR(256), \n\texif_model VARCHAR(256), \n\texif_lens VARCHAR(256), \n\texif_taken_at DATETIME, \n\texif_gps_lat FLOAT, \n\texif_gps_lon FLOAT, \n\texif_altitude FLOAT, \n\texif_iso INTEGER, \n\texif_aperture VARCHAR(32), \n\texif_shutter VARCHAR(32), \n\texif_focal VARCHAR(32), \n\texif_flash BOOLEAN, \n\texif_orientation INTEGER, \n\texif_software VARCHAR(256), \n\tocr_text TEXT, \n\tocr_language VARCHAR(64), \n\tocr_confidence FLOAT, \n\tocr_has_text BOOLEAN, \n\tai_description TEXT, \n\tai_tags JSON, \n\tai_confidence FLOAT, \n\tai_model_used VARCHAR(128), \n\tai_processed_at DATETIME, \n\tai_prompt_tokens INTEGER, \n\tai_output_tokens INTEGER, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(client_id) REFERENCES api_clients (id)\n)\n\n', ()) completed [aiosqlite]
2026-02-25T02:38:15.323554Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DB40>) [aiosqlite]
2026-02-25T02:38:15.323774Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DB40>) completed [aiosqlite]
2026-02-25T02:38:15.324326Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.324573Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.324879Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799240>, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) [aiosqlite]
2026-02-25T02:38:15.325187Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799240>, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed [aiosqlite]
2026-02-25T02:38:15.325498Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799240>) [aiosqlite]
2026-02-25T02:38:15.325694Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799240>) completed [aiosqlite]
2026-02-25T02:38:15.326112Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.326299Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.326574Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798EC0>, 'CREATE INDEX ix_images_id ON images (id)', ()) [aiosqlite]
2026-02-25T02:38:15.326817Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798EC0>, 'CREATE INDEX ix_images_id ON images (id)', ()) completed [aiosqlite]
2026-02-25T02:38:15.327095Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798EC0>) [aiosqlite]
2026-02-25T02:38:15.327255Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798EC0>) completed [aiosqlite]
2026-02-25T02:38:15.327602Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.327779Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.328061Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799640>, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) [aiosqlite]
2026-02-25T02:38:15.328288Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799640>, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed [aiosqlite]
2026-02-25T02:38:15.328654Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799640>) [aiosqlite]
2026-02-25T02:38:15.328922Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799640>) completed [aiosqlite]
2026-02-25T02:38:15.329457Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.329652Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.329976Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B7995C0>, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) [aiosqlite]
2026-02-25T02:38:15.330254Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B7995C0>, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed [aiosqlite]
2026-02-25T02:38:15.330595Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B7995C0>) [aiosqlite]
2026-02-25T02:38:15.330767Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B7995C0>) completed [aiosqlite]
2026-02-25T02:38:15.331132Z [debug ] executing functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.331302Z [debug ] operation functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.331734Z [debug ] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.331931Z [debug ] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
----------------------------- Captured log setup ------------------------------
DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E540>, 'PRAGMA main.table_info("images")', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E540>, 'PRAGMA main.table_info("images")', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E540>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E540>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E540>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E540>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E440>, 'PRAGMA temp.table_info("images")', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72E440>, 'PRAGMA temp.table_info("images")', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E440>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72E440>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E440>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72E440>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DBC0>, 'PRAGMA main.table_info("api_clients")', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DBC0>, 'PRAGMA main.table_info("api_clients")', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72DBC0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B72DBC0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DBC0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DBC0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798940>, 'PRAGMA temp.table_info("api_clients")', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798940>, 'PRAGMA temp.table_info("api_clients")', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B798940>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B798940>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798940>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798940>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798B40>, '\nCREATE TABLE api_clients (\n\tid VARCHAR(36) NOT NULL, \n\tname VARCHAR(256) NOT NULL, \n\tapi_key_hash VARCHAR(64) NOT NULL, \n\tscopes JSON NOT NULL, \n\t"plan" VARCHAR(8) NOT NULL, \n\tis_active BOOLEAN NOT NULL, \n\tstorage_used_bytes BIGINT NOT NULL, \n\tquota_storage_mb INTEGER NOT NULL, \n\tquota_images INTEGER NOT NULL, \n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tPRIMARY KEY (id)\n)\n\n', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798B40>, '\nCREATE TABLE api_clients (\n\tid VARCHAR(36) NOT NULL, \n\tname VARCHAR(256) NOT NULL, \n\tapi_key_hash VARCHAR(64) NOT NULL, \n\tscopes JSON NOT NULL, \n\t"plan" VARCHAR(8) NOT NULL, \n\tis_active BOOLEAN NOT NULL, \n\tstorage_used_bytes BIGINT NOT NULL, \n\tquota_storage_mb INTEGER NOT NULL, \n\tquota_images INTEGER NOT NULL, \n\tcreated_at DATETIME, \n\tupdated_at DATETIME, \n\tPRIMARY KEY (id)\n)\n\n', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798B40>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798B40>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798BC0>, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798BC0>, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798BC0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798BC0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799140>, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799140>, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799140>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799140>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DB40>, '\nCREATE TABLE images (\n\tid INTEGER NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tclient_id VARCHAR(36) NOT NULL, \n\toriginal_name VARCHAR(512) NOT NULL, \n\tfilename VARCHAR(512) NOT NULL, \n\tfile_path VARCHAR(1024) NOT NULL, \n\tthumbnail_path VARCHAR(1024), \n\tmime_type VARCHAR(128), \n\tfile_size BIGINT, \n\twidth INTEGER, \n\theight INTEGER, \n\tuploaded_at DATETIME, \n\tprocessing_status VARCHAR(10) NOT NULL, \n\tprocessing_error TEXT, \n\tprocessing_started_at DATETIME, \n\tprocessing_done_at DATETIME, \n\texif_raw JSON, \n\texif_make VARCHAR(256), \n\texif_model VARCHAR(256), \n\texif_lens VARCHAR(256), \n\texif_taken_at DATETIME, \n\texif_gps_lat FLOAT, \n\texif_gps_lon FLOAT, \n\texif_altitude FLOAT, \n\texif_iso INTEGER, \n\texif_aperture VARCHAR(32), \n\texif_shutter VARCHAR(32), \n\texif_focal VARCHAR(32), \n\texif_flash BOOLEAN, \n\texif_orientation INTEGER, \n\texif_software VARCHAR(256), \n\tocr_text TEXT, \n\tocr_language VARCHAR(64), \n\tocr_confidence FLOAT, \n\tocr_has_text BOOLEAN, \n\tai_description TEXT, \n\tai_tags JSON, \n\tai_confidence FLOAT, \n\tai_model_used VARCHAR(128), \n\tai_processed_at DATETIME, \n\tai_prompt_tokens INTEGER, \n\tai_output_tokens INTEGER, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(client_id) REFERENCES api_clients (id)\n)\n\n', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B72DB40>, '\nCREATE TABLE images (\n\tid INTEGER NOT NULL, \n\tuuid VARCHAR(36) NOT NULL, \n\tclient_id VARCHAR(36) NOT NULL, \n\toriginal_name VARCHAR(512) NOT NULL, \n\tfilename VARCHAR(512) NOT NULL, \n\tfile_path VARCHAR(1024) NOT NULL, \n\tthumbnail_path VARCHAR(1024), \n\tmime_type VARCHAR(128), \n\tfile_size BIGINT, \n\twidth INTEGER, \n\theight INTEGER, \n\tuploaded_at DATETIME, \n\tprocessing_status VARCHAR(10) NOT NULL, \n\tprocessing_error TEXT, \n\tprocessing_started_at DATETIME, \n\tprocessing_done_at DATETIME, \n\texif_raw JSON, \n\texif_make VARCHAR(256), \n\texif_model VARCHAR(256), \n\texif_lens VARCHAR(256), \n\texif_taken_at DATETIME, \n\texif_gps_lat FLOAT, \n\texif_gps_lon FLOAT, \n\texif_altitude FLOAT, \n\texif_iso INTEGER, \n\texif_aperture VARCHAR(32), \n\texif_shutter VARCHAR(32), \n\texif_focal VARCHAR(32), \n\texif_flash BOOLEAN, \n\texif_orientation INTEGER, \n\texif_software VARCHAR(256), \n\tocr_text TEXT, \n\tocr_language VARCHAR(64), \n\tocr_confidence FLOAT, \n\tocr_has_text BOOLEAN, \n\tai_description TEXT, \n\tai_tags JSON, \n\tai_confidence FLOAT, \n\tai_model_used VARCHAR(128), \n\tai_processed_at DATETIME, \n\tai_prompt_tokens INTEGER, \n\tai_output_tokens INTEGER, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(client_id) REFERENCES api_clients (id)\n)\n\n', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DB40>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B72DB40>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799240>, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799240>, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799240>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799240>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798EC0>, 'CREATE INDEX ix_images_id ON images (id)', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B798EC0>, 'CREATE INDEX ix_images_id ON images (id)', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798EC0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B798EC0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799640>, 'CREATE INDEX ix_images_client_id ON images (client_id)', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B799640>, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799640>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B799640>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B7995C0>, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B7995C0>, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B7995C0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B7995C0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>) completed
---------------------------- Captured stdout call -----------------------------
2026-02-25T02:38:15.333814Z [debug ] Using proactor: IocpProactor [asyncio]
2026-02-25T02:38:15.336157Z [error ] ws.admin_error [app.routers.websocket] error='coroutine' object has no attribute 'unsubscribe'
------------------------------ Captured log call ------------------------------
DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor
ERROR app.routers.websocket:websocket.py:249 ws.admin_error
-------------------------- Captured stdout teardown ---------------------------
2026-02-25T02:38:15.832958Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.833285Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.833662Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829040>, 'PRAGMA main.table_info("images")', ()) [aiosqlite]
2026-02-25T02:38:15.833873Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829040>, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite]
2026-02-25T02:38:15.834268Z [debug ] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B829040>) [aiosqlite]
2026-02-25T02:38:15.834614Z [debug ] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B829040>) completed [aiosqlite]
2026-02-25T02:38:15.834880Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829040>) [aiosqlite]
2026-02-25T02:38:15.835027Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829040>) completed [aiosqlite]
2026-02-25T02:38:15.835384Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.835535Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.835760Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B8290C0>, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite]
2026-02-25T02:38:15.835952Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B8290C0>, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite]
2026-02-25T02:38:15.836184Z [debug ] executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B8290C0>) [aiosqlite]
2026-02-25T02:38:15.836337Z [debug ] operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B8290C0>) completed [aiosqlite]
2026-02-25T02:38:15.836573Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B8290C0>) [aiosqlite]
2026-02-25T02:38:15.836754Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B8290C0>) completed [aiosqlite]
2026-02-25T02:38:15.837182Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.837415Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.837836Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B828FC0>, '\nDROP TABLE images', ()) [aiosqlite]
2026-02-25T02:38:15.838467Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B828FC0>, '\nDROP TABLE images', ()) completed [aiosqlite]
2026-02-25T02:38:15.838780Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B828FC0>) [aiosqlite]
2026-02-25T02:38:15.838939Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B828FC0>) completed [aiosqlite]
2026-02-25T02:38:15.839392Z [debug ] executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.839675Z [debug ] operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.840128Z [debug ] executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829240>, '\nDROP TABLE api_clients', ()) [aiosqlite]
2026-02-25T02:38:15.840395Z [debug ] operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829240>, '\nDROP TABLE api_clients', ()) completed [aiosqlite]
2026-02-25T02:38:15.840657Z [debug ] executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829240>) [aiosqlite]
2026-02-25T02:38:15.840802Z [debug ] operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829240>) completed [aiosqlite]
2026-02-25T02:38:15.841316Z [debug ] executing functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.841604Z [debug ] operation functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.842071Z [debug ] executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>) [aiosqlite]
2026-02-25T02:38:15.842234Z [debug ] operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>) completed [aiosqlite]
2026-02-25T02:38:15.842808Z [debug ] Using proactor: IocpProactor [asyncio]
---------------------------- Captured log teardown ----------------------------
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829040>, 'PRAGMA main.table_info("images")', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829040>, 'PRAGMA main.table_info("images")', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B829040>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B829040>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829040>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829040>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B8290C0>, 'PRAGMA main.table_info("api_clients")', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B8290C0>, 'PRAGMA main.table_info("api_clients")', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B8290C0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method fetchall of sqlite3.Cursor object at 0x000001520B8290C0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B8290C0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B8290C0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B828FC0>, '\nDROP TABLE images', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B828FC0>, '\nDROP TABLE images', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B828FC0>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B828FC0>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method cursor of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829240>, '\nDROP TABLE api_clients', ())
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method execute of sqlite3.Cursor object at 0x000001520B829240>, '\nDROP TABLE api_clients', ()) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829240>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method close of sqlite3.Cursor object at 0x000001520B829240>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method commit of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG aiosqlite:core.py:114 executing functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>)
DEBUG aiosqlite:core.py:116 operation functools.partial(<built-in method rollback of sqlite3.Connection object at 0x000001520B6D9120>) completed
DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor
============================== warnings summary ===============================
tests/test_websocket.py::TestWSAdminMonitor::test_admin_no_token_rejected
C:\dev\git\python\imago\app\routers\websocket.py:210: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
if not client.has_scope("admin"):
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.
tests/test_websocket.py::TestWSAdminMonitor::test_admin_no_token_rejected
C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\fastapi\routing.py:383: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
await dependant.call(**solved_result.values)
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_websocket.py::TestWSAdminMonitor::test_admin_no_token_rejected
=================== 1 failed, 7 passed, 2 warnings in 1.13s ===================