============================= 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::TestWSPipelineInvalidToken::test_invalid_token_rejected PASSED [ 25%] tests/test_websocket.py::TestWSPipelineAuth::test_valid_token_accepted PASSED [ 37%] tests/test_websocket.py::TestWSPipelineAuth::test_valid_token_accepted ERROR [ 37%] tests/test_websocket.py::TestWSPipelineAuth::test_wrong_owner_rejected PASSED [ 50%] tests/test_websocket.py::TestWSPipelineSyntheticDone::test_done_image_sends_synthetic PASSED [ 62%] tests/test_websocket.py::TestWSPipelineSyntheticDone::test_done_image_sends_synthetic ERROR [ 62%] tests/test_websocket.py::TestWSPipelineSyntheticError::test_error_image_sends_synthetic PASSED [ 75%] tests/test_websocket.py::TestWSPipelineSyntheticError::test_error_image_sends_synthetic ERROR [ 75%] tests/test_websocket.py::TestWSAdminMonitor::test_admin_no_token_rejected PASSED [ 87%] tests/test_websocket.py::TestWSAdminMonitor::test_admin_non_admin_rejected PASSED [100%] =================================== ERRORS ==================================== ______ ERROR at teardown of TestWSPipelineAuth.test_valid_token_accepted ______ C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:263: in rollback self.await_(self._connection.rollback()) C:\Users\bruno\scoop\apps\python\current\Lib\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 C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py:196: in greenlet_spawn value = await result C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py:169: in rollback await self._execute(self._conn.rollback) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py:83: in _conn raise ValueError("no active connection") E ValueError: no active connection The above exception was the direct cause of the following exception: C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1127: in _rollback_impl self.engine.dialect.do_rollback(self.connection) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py:699: in do_rollback dbapi_connection.rollback() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:265: in rollback self._handle_exception(error) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:294: in _handle_exception raise self.dbapi.sqlite.OperationalError( E sqlite3.OperationalError: no active connection The above exception was the direct cause of the following exception: c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\pytest_asyncio\plugin.py:341: in finalizer event_loop.run_until_complete(async_finalizer()) C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py:719: in run_until_complete return future.result() c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\pytest_asyncio\plugin.py:333: in async_finalizer await gen_obj.__anext__() # type: ignore[union-attr] tests\conftest.py:89: in db_session async with TestSessionLocal() as session: C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\ext\asyncio\session.py:1080: in __aexit__ await asyncio.shield(task) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\ext\asyncio\session.py:1025: in close await greenlet_spawn(self.sync_session.close) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py:203: in greenlet_spawn result = context.switch(value) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:2518: in close self._close_impl(invalidate=False) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:2587: in _close_impl transaction.close(invalidate) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\state_changes.py:139: in _go ret_value = fn(self, *arg, **kw) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:1419: in close transaction.close() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2588: in close self._do_close() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2726: in _do_close self._close_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2712: in _close_impl self._connection_rollback_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2704: in _connection_rollback_impl self.connection._rollback_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1129: in _rollback_impl self._handle_dbapi_exception(e, None, None, None, None) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2355: in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1127: in _rollback_impl self.engine.dialect.do_rollback(self.connection) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py:699: in do_rollback dbapi_connection.rollback() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:265: in rollback self._handle_exception(error) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:294: in _handle_exception raise self.dbapi.sqlite.OperationalError( E sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no active connection E (Background on this error at: https://sqlalche.me/e/20/e3q8) ---------------------------- Captured stdout setup ---------------------------- 2026-02-25T02:28:35.100145Z [debug ] Using proactor: IocpProactor [asyncio] 2026-02-25T02:28:35.101637Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.102012Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.102424Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:35.102665Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:35.102999Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.103179Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.103481Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.103672Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.104049Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.104232Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.104545Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:35.104747Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:35.105056Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.105227Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.105519Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.105687Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.106126Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.106312Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.106677Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:35.106952Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:35.107358Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.107547Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.107808Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.107970Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.108332Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.108579Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.108954Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:35.109152Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:35.109439Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.109603Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.109891Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.110071Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.110813Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.110987Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.111277Z [debug ] executing functools.partial(, '\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:28:35.111634Z [debug ] operation functools.partial(, '\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:28:35.111987Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.112239Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.112794Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.113099Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.113497Z [debug ] executing functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) [aiosqlite] 2026-02-25T02:28:35.113779Z [debug ] operation functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed [aiosqlite] 2026-02-25T02:28:35.114097Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.114284Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.114684Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.114872Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.115239Z [debug ] executing functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) [aiosqlite] 2026-02-25T02:28:35.115630Z [debug ] operation functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed [aiosqlite] 2026-02-25T02:28:35.116017Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.116216Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.117121Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.117391Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.117877Z [debug ] executing functools.partial(, '\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:28:35.118347Z [debug ] operation functools.partial(, '\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:28:35.119006Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.119197Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.119641Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.119821Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.120131Z [debug ] executing functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) [aiosqlite] 2026-02-25T02:28:35.120430Z [debug ] operation functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed [aiosqlite] 2026-02-25T02:28:35.120755Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.120927Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.121395Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.121566Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.121860Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) [aiosqlite] 2026-02-25T02:28:35.122125Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) completed [aiosqlite] 2026-02-25T02:28:35.122439Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.122603Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.123021Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.123186Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.123466Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) [aiosqlite] 2026-02-25T02:28:35.123704Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed [aiosqlite] 2026-02-25T02:28:35.123989Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.124152Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.124553Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.124840Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.125252Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) [aiosqlite] 2026-02-25T02:28:35.125518Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed [aiosqlite] 2026-02-25T02:28:35.125838Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.126006Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.126416Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.126638Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.127004Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.127235Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.130149Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.130392Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.130726Z [debug ] executing functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:35.129914', '2026-02-25 02:28:35.129916')) [aiosqlite] 2026-02-25T02:28:35.131108Z [debug ] operation functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:35.129914', '2026-02-25 02:28:35.129916')) completed [aiosqlite] 2026-02-25T02:28:35.131470Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.131648Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.132262Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.132469Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.132774Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.132938Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.135113Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.135376Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.135719Z [debug ] executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d',)) [aiosqlite] 2026-02-25T02:28:35.136001Z [debug ] operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d',)) completed [aiosqlite] 2026-02-25T02:28:35.136360Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.136542Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.136874Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.137065Z [debug ] operation functools.partial() completed [aiosqlite] ----------------------------- Captured log setup ------------------------------ DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, '\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(, '\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() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, '\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(, '\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() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:35.129914', '2026-02-25 02:28:35.129916')) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:35.129914', '2026-02-25 02:28:35.129916')) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d',)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('ead8707d-34f8-4468-9fe3-4f912ac57e5d',)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed ---------------------------- Captured stdout call ----------------------------- 2026-02-25T02:28:35.141151Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.141577Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.142256Z [debug ] executing functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('be8b8fd9-3517-4e69-8708-c7eef0dfff5b', 'ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'test.jpg', 'test.jpg', '/data/test.jpg', None, None, None, None, None, '2026-02-25 02:28:35.140847', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) [aiosqlite] 2026-02-25T02:28:35.144555Z [debug ] operation functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('be8b8fd9-3517-4e69-8708-c7eef0dfff5b', 'ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'test.jpg', 'test.jpg', '/data/test.jpg', None, None, None, None, None, '2026-02-25 02:28:35.140847', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) completed [aiosqlite] 2026-02-25T02:28:35.148306Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.149931Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.155712Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.157034Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.158594Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.159630Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.165556Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.165918Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.166377Z [debug ] executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) [aiosqlite] 2026-02-25T02:28:35.166872Z [debug ] operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed [aiosqlite] 2026-02-25T02:28:35.167419Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.167717Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.168180Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.168474Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.170354Z [debug ] Using proactor: IocpProactor [asyncio] 2026-02-25T02:28:35.172558Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.172754Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.173047Z [debug ] executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) [aiosqlite] 2026-02-25T02:28:35.173325Z [debug ] operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) completed [aiosqlite] 2026-02-25T02:28:35.173645Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.173820Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.174072Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.174229Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.176203Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.176457Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.176781Z [debug ] executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) [aiosqlite] 2026-02-25T02:28:35.177026Z [debug ] operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed [aiosqlite] 2026-02-25T02:28:35.177378Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.177553Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.177831Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.177990Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.178880Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.180127Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.180323Z [error ] Exception terminating connection > [sqlalchemy.pool.impl.StaticPool] Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection self._dialect.do_terminate(connection) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 705, in do_terminate self.do_close(dbapi_connection) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 708, in do_close dbapi_connection.close() ~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 275, in close self.await_(self._connection.close()) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\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 "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 178, in close await self._execute(self._conn.close) File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 132, in _execute return await future ^^^^^^^^^^^^ asyncio.exceptions.CancelledError: Cancelled via cancel scope 1f56c7c44d0 by cb=[TaskGroup._spawn..task_done() at c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\anyio\_backends\_asyncio.py:805]> 2026-02-25T02:28:35.183434Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.185937Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.186468Z [debug ------------------------------ Captured log call ------------------------------ DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('be8b8fd9-3517-4e69-8708-c7eef0dfff5b', 'ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'test.jpg', 'test.jpg', '/data/test.jpg', None, None, None, None, None, '2026-02-25 02:28:35.140847', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('be8b8fd9-3517-4e69-8708-c7eef0dfff5b', 'ead8707d-34f8-4468-9fe3-4f912ac57e5d', 'test.jpg', 'test.jpg', '/data/test.jpg', None, None, None, None, None, '2026-02-25 02:28:35.140847', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed ERROR sqlalchemy.pool.impl.StaticPool:base.py:378 Exception terminating connection > Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection self._dialect.do_terminate(connection) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 705, in do_terminate self.do_close(dbapi_connection) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 708, in do_close dbapi_connection.close() ~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 275, in close self.await_(self._connection.close()) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\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 "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 178, in close await self._execute(self._conn.close) File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 132, in _execute return await future ^^^^^^^^^^^^ asyncio.exceptions.CancelledError: Cancelled via cancel scope 1f56c7c44d0 by cb=[TaskGroup._spawn..task_done() at c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\anyio\_backends\_asyncio.py:805]> DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed -------------------------- Captured stdout teardown --------------------------- [aiosqlite] 2026-02-25T02:28:35.188385Z [debug ] executing .connector at 0x000001F56C808A90> [aiosqlite] 2026-02-25T02:28:35.188631Z [debug ] operation .connector at 0x000001F56C808A90> completed [aiosqlite] 2026-02-25T02:28:35.188934Z [debug ] executing functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) [aiosqlite] 2026-02-25T02:28:35.189116Z [debug ] operation functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) completed [aiosqlite] 2026-02-25T02:28:35.189418Z [debug ] executing functools.partial(, 'floor', 1, , deterministic=True) [aiosqlite] 2026-02-25T02:28:35.189594Z [debug ] operation functools.partial(, 'floor', 1, , deterministic=True) completed [aiosqlite] 2026-02-25T02:28:35.190023Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.190187Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.190478Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:35.190716Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:35.190999Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.191152Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.191433Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.191617Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.192048Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.192227Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.192550Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:35.192892Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:35.193222Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.193384Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.193704Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.193884Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.194289Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.194462Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.194736Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:35.194953Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:35.195247Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.195423Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.195699Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.195869Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.196251Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.196520Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.196915Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:35.197181Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:35.197487Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.197645Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.197900Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.198057Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.198437Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.198592Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.198951Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:35.199105Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:35.199803Z [debug ] Using proactor: IocpProactor [asyncio] ---------------------------- Captured log teardown ---------------------------- DEBUG aiosqlite:core.py:119 returning exception Event loop is closed DEBUG aiosqlite:core.py:114 executing .connector at 0x000001F56C808A90> DEBUG aiosqlite:core.py:116 operation .connector at 0x000001F56C808A90> completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'floor', 1, , deterministic=True) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'floor', 1, , deterministic=True) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor _ ERROR at teardown of TestWSPipelineSyntheticDone.test_done_image_sends_synthetic _ C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:263: in rollback self.await_(self._connection.rollback()) C:\Users\bruno\scoop\apps\python\current\Lib\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 C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py:196: in greenlet_spawn value = await result C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py:169: in rollback await self._execute(self._conn.rollback) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py:83: in _conn raise ValueError("no active connection") E ValueError: no active connection The above exception was the direct cause of the following exception: C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1127: in _rollback_impl self.engine.dialect.do_rollback(self.connection) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py:699: in do_rollback dbapi_connection.rollback() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:265: in rollback self._handle_exception(error) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:294: in _handle_exception raise self.dbapi.sqlite.OperationalError( E sqlite3.OperationalError: no active connection The above exception was the direct cause of the following exception: c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\pytest_asyncio\plugin.py:341: in finalizer event_loop.run_until_complete(async_finalizer()) C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py:719: in run_until_complete return future.result() c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\pytest_asyncio\plugin.py:333: in async_finalizer await gen_obj.__anext__() # type: ignore[union-attr] tests\conftest.py:89: in db_session async with TestSessionLocal() as session: C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\ext\asyncio\session.py:1080: in __aexit__ await asyncio.shield(task) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\ext\asyncio\session.py:1025: in close await greenlet_spawn(self.sync_session.close) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py:203: in greenlet_spawn result = context.switch(value) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:2518: in close self._close_impl(invalidate=False) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:2587: in _close_impl transaction.close(invalidate) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\state_changes.py:139: in _go ret_value = fn(self, *arg, **kw) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:1419: in close transaction.close() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2588: in close self._do_close() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2726: in _do_close self._close_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2712: in _close_impl self._connection_rollback_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2704: in _connection_rollback_impl self.connection._rollback_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1129: in _rollback_impl self._handle_dbapi_exception(e, None, None, None, None) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2355: in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1127: in _rollback_impl self.engine.dialect.do_rollback(self.connection) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py:699: in do_rollback dbapi_connection.rollback() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:265: in rollback self._handle_exception(error) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:294: in _handle_exception raise self.dbapi.sqlite.OperationalError( E sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no active connection E (Background on this error at: https://sqlalche.me/e/20/e3q8) ---------------------------- Captured stdout setup ---------------------------- 2026-02-25T02:28:36.300619Z [debug ] Using proactor: IocpProactor [asyncio] 2026-02-25T02:28:36.301804Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.302051Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.302339Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.302567Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.302902Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.303079Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.303421Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.303586Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.303936Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.304086Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.304392Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.304582Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.304851Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.305000Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.305223Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.305395Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.305755Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.305930Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.306192Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.306358Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.306625Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.306768Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.307033Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.307305Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.307754Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.307901Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.308160Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.308326Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.308715Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.309006Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.309388Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.309548Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.310229Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.310409Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.310715Z [debug ] executing functools.partial(, '\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:28:36.311066Z [debug ] operation functools.partial(, '\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:28:36.311445Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.311603Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.311980Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.312134Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.312388Z [debug ] executing functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) [aiosqlite] 2026-02-25T02:28:36.312677Z [debug ] operation functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed [aiosqlite] 2026-02-25T02:28:36.312946Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.313105Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.313457Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.313610Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.313862Z [debug ] executing functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) [aiosqlite] 2026-02-25T02:28:36.314079Z [debug ] operation functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed [aiosqlite] 2026-02-25T02:28:36.314328Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.314471Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.315117Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.315284Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.315571Z [debug ] executing functools.partial(, '\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:28:36.315918Z [debug ] operation functools.partial(, '\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:28:36.316217Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.316363Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.316805Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.317095Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.317456Z [debug ] executing functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) [aiosqlite] 2026-02-25T02:28:36.317703Z [debug ] operation functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed [aiosqlite] 2026-02-25T02:28:36.317959Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.318112Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.318435Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.318584Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.318808Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) [aiosqlite] 2026-02-25T02:28:36.319021Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) completed [aiosqlite] 2026-02-25T02:28:36.319293Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.319442Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.319796Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.319963Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.320258Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) [aiosqlite] 2026-02-25T02:28:36.320525Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed [aiosqlite] 2026-02-25T02:28:36.320822Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.320970Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.321263Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.321415Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.321654Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) [aiosqlite] 2026-02-25T02:28:36.321884Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed [aiosqlite] 2026-02-25T02:28:36.322153Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.322294Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.322653Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.322795Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.323135Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.323275Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.324815Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.325001Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.325371Z [debug ] executing functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('399d3394-7ca8-40b1-81ed-f5873ed0284a', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.324691', '2026-02-25 02:28:36.324693')) [aiosqlite] 2026-02-25T02:28:36.325724Z [debug ] operation functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('399d3394-7ca8-40b1-81ed-f5873ed0284a', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.324691', '2026-02-25 02:28:36.324693')) completed [aiosqlite] 2026-02-25T02:28:36.326154Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.326328Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.326932Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.327110Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.327411Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.327592Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.328439Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.328613Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.328911Z [debug ] executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('399d3394-7ca8-40b1-81ed-f5873ed0284a',)) [aiosqlite] 2026-02-25T02:28:36.329160Z [debug ] operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('399d3394-7ca8-40b1-81ed-f5873ed0284a',)) completed [aiosqlite] 2026-02-25T02:28:36.329439Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.329601Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.329834Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.329985Z [debug ] operation functools.partial() completed [aiosqlite] ----------------------------- Captured log setup ------------------------------ DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, '\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(, '\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() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, '\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(, '\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() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('399d3394-7ca8-40b1-81ed-f5873ed0284a', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.324691', '2026-02-25 02:28:36.324693')) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('399d3394-7ca8-40b1-81ed-f5873ed0284a', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.324691', '2026-02-25 02:28:36.324693')) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('399d3394-7ca8-40b1-81ed-f5873ed0284a',)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('399d3394-7ca8-40b1-81ed-f5873ed0284a',)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed ---------------------------- Captured stdout call ----------------------------- 2026-02-25T02:28:36.331412Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.331628Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.331867Z [debug ] executing functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('cae6df23-827a-43a8-b9af-7f576729b095', '399d3394-7ca8-40b1-81ed-f5873ed0284a', 'done.jpg', 'done.jpg', '/data/done.jpg', None, None, None, None, None, '2026-02-25 02:28:36.331302', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) [aiosqlite] 2026-02-25T02:28:36.332161Z [debug ] operation functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('cae6df23-827a-43a8-b9af-7f576729b095', '399d3394-7ca8-40b1-81ed-f5873ed0284a', 'done.jpg', 'done.jpg', '/data/done.jpg', None, None, None, None, None, '2026-02-25 02:28:36.331302', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) completed [aiosqlite] 2026-02-25T02:28:36.332455Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.332774Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.333726Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.334184Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.334717Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.334994Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.335822Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.336115Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.336524Z [debug ] executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) [aiosqlite] 2026-02-25T02:28:36.336844Z [debug ] operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed [aiosqlite] 2026-02-25T02:28:36.337123Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.337288Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.337530Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.337670Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.338716Z [debug ] Using proactor: IocpProactor [asyncio] 2026-02-25T02:28:36.340543Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.340817Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.341197Z [debug ] executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) [aiosqlite] 2026-02-25T02:28:36.341437Z [debug ] operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash 82e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) completed [aiosqlite] 2026-02-25T02:28:36.341813Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.342021Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.342384Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.342548Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.343350Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.343512Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.343810Z [debug ] executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) [aiosqlite] 2026-02-25T02:28:36.344057Z [debug ] operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed [aiosqlite] 2026-02-25T02:28:36.347648Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.349402Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.352863Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.355158Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.359099Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.361939Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.362561Z [error ] Exception terminating connection > [sqlalchemy.pool.impl.StaticPool] Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection self._dialect.do_terminate(connection) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 705, in do_terminate self.do_close(dbapi_connection) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 708, in do_close dbapi_connection.close() ~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 275, in close self.await_(self._connection.close()) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\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 "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 178, in close await self._execute(self._conn.close) File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 132, in _execute return await future ^^^^^^^^^^^^ asyncio.exceptions.CancelledError: Cancelled via cancel scope 1f56c7c56d0 by cb=[TaskGroup._spawn..task_done() at c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\anyio\_backends\_asyncio.py:805]> 2026-02-25T02:28:36.365223Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.367878Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.368337Z [ ------------------------------ Captured log call ------------------------------ DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('cae6df23-827a-43a8-b9af-7f576729b095', '399d3394-7ca8-40b1-81ed-f5873ed0284a', 'done.jpg', 'done.jpg', '/data/done.jpg', None, None, None, None, None, '2026-02-25 02:28:36.331302', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('cae6df23-827a-43a8-b9af-7f576729b095', '399d3394-7ca8-40b1-81ed-f5873ed0284a', 'done.jpg', 'done.jpg', '/data/done.jpg', None, None, None, None, None, '2026-02-25 02:28:36.331302', 'DONE', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed ERROR sqlalchemy.pool.impl.StaticPool:base.py:378 Exception terminating connection > Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection self._dialect.do_terminate(connection) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 705, in do_terminate self.do_close(dbapi_connection) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 708, in do_close dbapi_connection.close() ~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 275, in close self.await_(self._connection.close()) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\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 "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 178, in close await self._execute(self._conn.close) File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 132, in _execute return await future ^^^^^^^^^^^^ asyncio.exceptions.CancelledError: Cancelled via cancel scope 1f56c7c56d0 by cb=[TaskGroup._spawn..task_done() at c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\anyio\_backends\_asyncio.py:805]> DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed -------------------------- Captured stdout teardown --------------------------- aiosqlite] 2026-02-25T02:28:36.370624Z [debug ] executing .connector at 0x000001F56C80B740> [aiosqlite] 2026-02-25T02:28:36.370938Z [debug ] operation .connector at 0x000001F56C80B740> completed [aiosqlite] 2026-02-25T02:28:36.371299Z [debug ] executing functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) [aiosqlite] 2026-02-25T02:28:36.371506Z [debug ] operation functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) completed [aiosqlite] 2026-02-25T02:28:36.371816Z [debug ] executing functools.partial(, 'floor', 1, , deterministic=True) [aiosqlite] 2026-02-25T02:28:36.372009Z [debug ] operation functools.partial(, 'floor', 1, , deterministic=True) completed [aiosqlite] 2026-02-25T02:28:36.372456Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.372628Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.372896Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.373140Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.373419Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.373571Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.373835Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.373986Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.374336Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.374502Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.374754Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.374951Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.375265Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.375471Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.375757Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.375919Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.376309Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.376472Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.376779Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.376958Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.377205Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.377352Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.377613Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.377757Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.378050Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.378210Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.378435Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.378597Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.378856Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.379005Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.379220Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.379362Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.379699Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.379837Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.380151Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.380309Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.380963Z [debug ] Using proactor: IocpProactor [asyncio] ---------------------------- Captured log teardown ---------------------------- DEBUG aiosqlite:core.py:119 returning exception Event loop is closed DEBUG aiosqlite:core.py:114 executing .connector at 0x000001F56C80B740> DEBUG aiosqlite:core.py:116 operation .connector at 0x000001F56C80B740> completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'floor', 1, , deterministic=True) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'floor', 1, , deterministic=True) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor _ ERROR at teardown of TestWSPipelineSyntheticError.test_error_image_sends_synthetic _ C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:263: in rollback self.await_(self._connection.rollback()) C:\Users\bruno\scoop\apps\python\current\Lib\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 C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py:196: in greenlet_spawn value = await result C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py:169: in rollback await self._execute(self._conn.rollback) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py:83: in _conn raise ValueError("no active connection") E ValueError: no active connection The above exception was the direct cause of the following exception: C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1127: in _rollback_impl self.engine.dialect.do_rollback(self.connection) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py:699: in do_rollback dbapi_connection.rollback() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:265: in rollback self._handle_exception(error) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:294: in _handle_exception raise self.dbapi.sqlite.OperationalError( E sqlite3.OperationalError: no active connection The above exception was the direct cause of the following exception: c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\pytest_asyncio\plugin.py:341: in finalizer event_loop.run_until_complete(async_finalizer()) C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py:719: in run_until_complete return future.result() c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\pytest_asyncio\plugin.py:333: in async_finalizer await gen_obj.__anext__() # type: ignore[union-attr] tests\conftest.py:89: in db_session async with TestSessionLocal() as session: C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\ext\asyncio\session.py:1080: in __aexit__ await asyncio.shield(task) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\ext\asyncio\session.py:1025: in close await greenlet_spawn(self.sync_session.close) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py:203: in greenlet_spawn result = context.switch(value) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:2518: in close self._close_impl(invalidate=False) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:2587: in _close_impl transaction.close(invalidate) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\state_changes.py:139: in _go ret_value = fn(self, *arg, **kw) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\orm\session.py:1419: in close transaction.close() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2588: in close self._do_close() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2726: in _do_close self._close_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2712: in _close_impl self._connection_rollback_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2704: in _connection_rollback_impl self.connection._rollback_impl() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1129: in _rollback_impl self._handle_dbapi_exception(e, None, None, None, None) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:2355: in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\base.py:1127: in _rollback_impl self.engine.dialect.do_rollback(self.connection) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py:699: in do_rollback dbapi_connection.rollback() C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:265: in rollback self._handle_exception(error) C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py:294: in _handle_exception raise self.dbapi.sqlite.OperationalError( E sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no active connection E (Background on this error at: https://sqlalche.me/e/20/e3q8) ---------------------------- Captured stdout setup ---------------------------- 2026-02-25T02:28:36.801430Z [debug ] Using proactor: IocpProactor [asyncio] 2026-02-25T02:28:36.802937Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.803217Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.803510Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.803702Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.803950Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.804103Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.804348Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.804498Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.804801Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.804950Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.805187Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.805369Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.805616Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.805766Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.806005Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.806153Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.806531Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.806798Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.807139Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.807344Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.807619Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.807770Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.808048Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.808373Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.808845Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.809037Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.809333Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.809525Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.809802Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.809962Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.810273Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.810448Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.811146Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.811332Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.811613Z [debug ] executing functools.partial(, '\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:28:36.811958Z [debug ] operation functools.partial(, '\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:28:36.812308Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.812565Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.812920Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.813076Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.813328Z [debug ] executing functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) [aiosqlite] 2026-02-25T02:28:36.813555Z [debug ] operation functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed [aiosqlite] 2026-02-25T02:28:36.813882Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.814056Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.814371Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.814520Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.814793Z [debug ] executing functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) [aiosqlite] 2026-02-25T02:28:36.815177Z [debug ] operation functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed [aiosqlite] 2026-02-25T02:28:36.815520Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.815672Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.816326Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.816481Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.816826Z [debug ] executing functools.partial(, '\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:28:36.817222Z [debug ] operation functools.partial(, '\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:28:36.817640Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.817894Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.818396Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.818645Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.818964Z [debug ] executing functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) [aiosqlite] 2026-02-25T02:28:36.819239Z [debug ] operation functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed [aiosqlite] 2026-02-25T02:28:36.819541Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.819710Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.820081Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.820247Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.820512Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) [aiosqlite] 2026-02-25T02:28:36.820743Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) completed [aiosqlite] 2026-02-25T02:28:36.821011Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.821159Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.821463Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.821612Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.821917Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) [aiosqlite] 2026-02-25T02:28:36.822263Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed [aiosqlite] 2026-02-25T02:28:36.822605Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.822761Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.823096Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.823265Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.823504Z [debug ] executing functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) [aiosqlite] 2026-02-25T02:28:36.823738Z [debug ] operation functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed [aiosqlite] 2026-02-25T02:28:36.823980Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.824127Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.824425Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.824572Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.824946Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.825121Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.826826Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.827168Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.827724Z [debug ] executing functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('c20b0d70-9861-44f4-980d-e2bde233da33', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.826605', '2026-02-25 02:28:36.826609')) [aiosqlite] 2026-02-25T02:28:36.828058Z [debug ] operation functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('c20b0d70-9861-44f4-980d-e2bde233da33', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.826605', '2026-02-25 02:28:36.826609')) completed [aiosqlite] 2026-02-25T02:28:36.828408Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.828579Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.829116Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.829324Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.829627Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.829777Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.830568Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.830780Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.831136Z [debug ] executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('c20b0d70-9861-44f4-980d-e2bde233da33',)) [aiosqlite] 2026-02-25T02:28:36.831444Z [debug ] operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('c20b0d70-9861-44f4-980d-e2bde233da33',)) completed [aiosqlite] 2026-02-25T02:28:36.831784Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.831990Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.832250Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.832421Z [debug ] operation functools.partial() completed [aiosqlite] ----------------------------- Captured log setup ------------------------------ DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, '\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(, '\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() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE UNIQUE INDEX ix_api_clients_api_key_hash ON api_clients (api_key_hash)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_api_clients_id ON api_clients (id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, '\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(, '\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() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE UNIQUE INDEX ix_images_uuid ON images (uuid)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_id ON images (id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_client_id ON images (client_id)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'CREATE INDEX ix_images_processing_status ON images (processing_status)', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('c20b0d70-9861-44f4-980d-e2bde233da33', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.826605', '2026-02-25 02:28:36.826609')) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'INSERT INTO api_clients (id, name, api_key_hash, scopes, "plan", is_active, storage_used_bytes, quota_storage_mb, quota_images, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('c20b0d70-9861-44f4-980d-e2bde233da33', 'Test Client A', '982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1', '["images:read", "images:write", "images:delete", "ai:use"]', 'STANDARD', 1, 0, 500, 1000, '2026-02-25 02:28:36.826605', '2026-02-25 02:28:36.826609')) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('c20b0d70-9861-44f4-980d-e2bde233da33',)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.id = ?', ('c20b0d70-9861-44f4-980d-e2bde233da33',)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed ---------------------------- Captured stdout call ----------------------------- [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.834503Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.834949Z [debug ] executing functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('9a7a42eb-31af-4238-ad88-516e258412ba', 'c20b0d70-9861-44f4-980d-e2bde233da33', 'error.jpg', 'error.jpg', '/data/error.jpg', None, None, None, None, None, '2026-02-25 02:28:36.833947', 'ERROR', 'AI timeout', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) [aiosqlite] 2026-02-25T02:28:36.835303Z [debug ] operation functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('9a7a42eb-31af-4238-ad88-516e258412ba', 'c20b0d70-9861-44f4-980d-e2bde233da33', 'error.jpg', 'error.jpg', '/data/error.jpg', None, None, None, None, None, '2026-02-25 02:28:36.833947', 'ERROR', 'AI timeout', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) completed [aiosqlite] 2026-02-25T02:28:36.835673Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.835850Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.836329Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.836502Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.836831Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.836997Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.837854Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.838066Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.838359Z [debug ] executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) [aiosqlite] 2026-02-25T02:28:36.838671Z [debug ] operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed [aiosqlite] 2026-02-25T02:28:36.838989Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.839152Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.839378Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.839525Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.840676Z [debug ] Using proactor: IocpProactor [asyncio] 2026-02-25T02:28:36.842985Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.843243Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.843566Z [debug ] executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) [aiosqlite] 2026-02-25T02:28:36.843861Z [debug ] operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?'('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) completed [aiosqlite] 2026-02-25T02:28:36.844218Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.844409Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.844749Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.845011Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.845827Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.846000Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.846280Z [debug ] executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) [aiosqlite] 2026-02-25T02:28:36.846500Z [debug ] operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed [aiosqlite] 2026-02-25T02:28:36.846775Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.846932Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.847169Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.847319Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.847809Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.848519Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.848746Z [error ] Exception terminating connection > [sqlalchemy.pool.impl.StaticPool] Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection self._dialect.do_terminate(connection) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 705, in do_terminate self.do_close(dbapi_connection) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 708, in do_close dbapi_connection.close() ~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 275, in close self.await_(self._connection.close()) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\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 "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 178, in close await self._execute(self._conn.close) File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 132, in _execute return await future ^^^^^^^^^^^^ asyncio.exceptions.CancelledError: Cancelled via cancel scope 1f56c7c5e50 by cb=[TaskGroup._spawn..task_done() at c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\anyio\_backends\_asyncio.py:805]> 2026-02-25T02:28:36.850026Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.852382Z [debug ] operation functools.partial() completed [aiosqlite] ------------------------------ Captured log call ------------------------------ DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('9a7a42eb-31af-4238-ad88-516e258412ba', 'c20b0d70-9861-44f4-980d-e2bde233da33', 'error.jpg', 'error.jpg', '/data/error.jpg', None, None, None, None, None, '2026-02-25 02:28:36.833947', 'ERROR', 'AI timeout', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'INSERT INTO images (uuid, client_id, original_name, filename, file_path, thumbnail_path, mime_type, file_size, width, height, uploaded_at, processing_status, processing_error, processing_started_at, processing_done_at, exif_make, exif_model, exif_lens, exif_taken_at, exif_gps_lat, exif_gps_lon, exif_altitude, exif_iso, exif_aperture, exif_shutter, exif_focal, exif_flash, exif_orientation, exif_software, ocr_text, ocr_language, ocr_confidence, ocr_has_text, ai_description, ai_confidence, ai_model_used, ai_processed_at, ai_prompt_tokens, ai_output_tokens) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', ('9a7a42eb-31af-4238-ad88-516e258412ba', 'c20b0d70-9861-44f4-980d-e2bde233da33', 'error.jpg', 'error.jpg', '/data/error.jpg', None, None, None, None, None, '2026-02-25 02:28:36.833947', 'ERROR', 'AI timeout', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0, None, None, None, None, None, None)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT api_clients.id, api_clients.name, api_clients.api_key_hash, api_clients.scopes, api_clients."plan", api_clients.is_active, api_clients.storage_used_bytes, api_clients.quota_storage_mb, api_clients.quota_images, api_clients.created_at, api_clients.updated_at \nFROM api_clients \nWHERE api_clients.api_key_hash = ?', ('982e4d62421a0c37943e4a54bc2511f5ca0f29003fd7aa4ae43f7b8e5b29fef1',)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'SELECT images.id, images.uuid, images.client_id, images.original_name, images.filename, images.file_path, images.thumbnail_path, images.mime_type, images.file_size, images.width, images.height, images.uploaded_at, images.processing_status, images.processing_error, images.processing_started_at, images.processing_done_at, images.exif_raw, images.exif_make, images.exif_model, images.exif_lens, images.exif_taken_at, images.exif_gps_lat, images.exif_gps_lon, images.exif_altitude, images.exif_iso, images.exif_aperture, images.exif_shutter, images.exif_focal, images.exif_flash, images.exif_orientation, images.exif_software, images.ocr_text, images.ocr_language, images.ocr_confidence, images.ocr_has_text, images.ai_description, images.ai_tags, images.ai_confidence, images.ai_model_used, images.ai_processed_at, images.ai_prompt_tokens, images.ai_output_tokens \nFROM images \nWHERE images.id = ?', (1,)) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed ERROR sqlalchemy.pool.impl.StaticPool:base.py:378 Exception terminating connection > Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\pool\base.py", line 374, in _close_connection self._dialect.do_terminate(connection) ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 705, in do_terminate self.do_close(dbapi_connection) ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\engine\default.py", line 708, in do_close dbapi_connection.close() ~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\dialects\sqlite\aiosqlite.py", line 275, in close self.await_(self._connection.close()) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\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 "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\sqlalchemy\util\_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 178, in close await self._execute(self._conn.close) File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 132, in _execute return await future ^^^^^^^^^^^^ asyncio.exceptions.CancelledError: Cancelled via cancel scope 1f56c7c5e50 by cb=[TaskGroup._spawn..task_done() at c:\Users\bruno\scoop\apps\python\3.14.3\Lib\site-packages\anyio\_backends\_asyncio.py:805]> DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed -------------------------- Captured stdout teardown --------------------------- returning exception Event loop is closed [aiosqlite] 2026-02-25T02:28:36.854839Z [debug ] executing .connector at 0x000001F56C80B3D0> [aiosqlite] 2026-02-25T02:28:36.855080Z [debug ] operation .connector at 0x000001F56C80B3D0> completed [aiosqlite] 2026-02-25T02:28:36.855367Z [debug ] executing functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) [aiosqlite] 2026-02-25T02:28:36.855544Z [debug ] operation functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) completed [aiosqlite] 2026-02-25T02:28:36.855803Z [debug ] executing functools.partial(, 'floor', 1, , deterministic=True) [aiosqlite] 2026-02-25T02:28:36.855965Z [debug ] operation functools.partial(, 'floor', 1, , deterministic=True) completed [aiosqlite] 2026-02-25T02:28:36.856350Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.856502Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.856743Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.856959Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.857267Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.857430Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.857697Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.857849Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.858166Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.858338Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.858697Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) [aiosqlite] 2026-02-25T02:28:36.858890Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed [aiosqlite] 2026-02-25T02:28:36.859153Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.859309Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.859535Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.859698Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.860047Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.860226Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.860499Z [debug ] executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.860679Z [debug ] operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.860959Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.861129Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.861485Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.861655Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.861991Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.862142Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.862420Z [debug ] executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) [aiosqlite] 2026-02-25T02:28:36.862738Z [debug ] operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed [aiosqlite] 2026-02-25T02:28:36.863172Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.863454Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.863866Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.864122Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.864629Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.864781Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.865144Z [debug ] executing functools.partial() [aiosqlite] 2026-02-25T02:28:36.865290Z [debug ] operation functools.partial() completed [aiosqlite] 2026-02-25T02:28:36.865860Z [debug ] Using proactor: IocpProactor [asyncio] ---------------------------- Captured log teardown ---------------------------- DEBUG aiosqlite:core.py:119 returning exception Event loop is closed DEBUG aiosqlite:core.py:114 executing .connector at 0x000001F56C80B3D0> DEBUG aiosqlite:core.py:116 operation .connector at 0x000001F56C80B3D0> completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'regexp', 2, .regexp at 0x000001F5476F7AB0>, deterministic=True) completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'floor', 1, , deterministic=True) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'floor', 1, , deterministic=True) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("images")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("images")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA main.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) DEBUG aiosqlite:core.py:116 operation functools.partial(, 'PRAGMA temp.table_info("api_clients")', ()) completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG aiosqlite:core.py:114 executing functools.partial() DEBUG aiosqlite:core.py:116 operation functools.partial() completed DEBUG asyncio:proactor_events.py:633 Using proactor: IocpProactor ============================== warnings summary =============================== tests/test_websocket.py::TestWSPipelineAuth::test_valid_token_accepted C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\_pytest\threadexception.py:82: PytestUnhandledThreadExceptionWarning: Exception in thread Thread-2 Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 117, in run future.get_loop().call_soon_threadsafe(set_result, future, result) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 872, in call_soon_threadsafe self._check_closed() ~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 550, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\threading.py", line 1082, in _bootstrap_inner self._context.run(self.run) ~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 120, in run future.get_loop().call_soon_threadsafe(set_exception, future, e) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 872, in call_soon_threadsafe self._check_closed() ~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 550, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) tests/test_websocket.py::TestWSPipelineSyntheticDone::test_done_image_sends_synthetic C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\_pytest\threadexception.py:82: PytestUnhandledThreadExceptionWarning: Exception in thread Thread-6 Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 117, in run future.get_loop().call_soon_threadsafe(set_result, future, result) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 872, in call_soon_threadsafe self._check_closed() ~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 550, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\threading.py", line 1082, in _bootstrap_inner self._context.run(self.run) ~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 120, in run future.get_loop().call_soon_threadsafe(set_exception, future, e) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 872, in call_soon_threadsafe self._check_closed() ~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 550, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) tests/test_websocket.py::TestWSPipelineSyntheticError::test_error_image_sends_synthetic C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\_pytest\threadexception.py:82: PytestUnhandledThreadExceptionWarning: Exception in thread Thread-9 Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 117, in run future.get_loop().call_soon_threadsafe(set_result, future, result) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 872, in call_soon_threadsafe self._check_closed() ~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 550, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\bruno\scoop\apps\python\current\Lib\threading.py", line 1082, in _bootstrap_inner self._context.run(self.run) ~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\site-packages\aiosqlite\core.py", line 120, in run future.get_loop().call_soon_threadsafe(set_exception, future, e) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 872, in call_soon_threadsafe self._check_closed() ~~~~~~~~~~~~~~~~~~^^ File "C:\Users\bruno\scoop\apps\python\current\Lib\asyncio\base_events.py", line 550, in _check_closed raise RuntimeError('Event loop is closed') RuntimeError: Event loop is closed warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg)) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info =========================== ERROR tests/test_websocket.py::TestWSPipelineAuth::test_valid_token_accepted ERROR tests/test_websocket.py::TestWSPipelineSyntheticDone::test_done_image_sends_synthetic ERROR tests/test_websocket.py::TestWSPipelineSyntheticError::test_error_image_sends_synthetic =================== 8 passed, 3 warnings, 3 errors in 2.72s ===================