-
Notifications
You must be signed in to change notification settings - Fork 1
Description
What happened?
DB에 연관된 테스트들이 아래와 같이 정상적으로 구동되고 있지 않음
Relevant log output
================================================================================================================= test session starts ==================================================================================================================
platform linux -- Python 3.12.4, pytest-8.3.4, pluggy-1.5.0
rootdir: /home/zerohertz/workspace
configfile: pyproject.toml
plugins: ordering-0.6, dotenv-0.5.2, anyio-4.8.0, cov-6.0.0
collected 5 items
app/tests/api/v1/test_shields.py . [ 20%]
app/tests/api/v1/test_users.py EEEE [100%]
======================================================================================================================== ERRORS ========================================================================================================================
__________________________________________________________________________________________________________ ERROR at setup of test_create_user __________________________________________________________________________________________________________
@pytest.fixture(scope="module")
def client() -> Generator[TestClient, None, None]:
> with TestClient(app) as cli:
app/tests/conftest.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/starlette/testclient.py:739: in __enter__
portal.call(self.wait_startup)
.venv/lib/python3.12/site-packages/anyio/from_thread.py:290: in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
../miniconda/lib/python3.12/concurrent/futures/_base.py:456: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:774: in wait_startup
await receive()
.venv/lib/python3.12/site-packages/starlette/testclient.py:765: in receive
self.task.result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:449: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:755: in lifespan
await self.app(scope, self.stream_receive.receive, self.stream_send.send)
.venv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
await super().__call__(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/errors.py:152: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:48: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:724: in app
await self.lifespan(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:693: in lifespan
async with self.lifespan_context(app) as maybe_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
.venv/lib/python3.12/site-packages/fastapi/routing.py:133: in merged_lifespan
async with original_context(app) as maybe_original_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
app/core/lifespan.py:32: in lifespan
await database.create_all()
app/core/database.py:54: in create_all
await conn.run_sync(BaseModel.metadata.create_all)
.venv/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py:887: in run_sync
return await greenlet_spawn(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
result = context.throw(*sys.exc_info())
.venv/lib/python3.12/site-packages/sqlalchemy/sql/schema.py:5900: in create_all
bind._run_ddl_visitor(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2456: in _run_ddl_visitor
visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py:664: in traverse_single
return meth(obj, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:907: in visit_metadata
[t for t in tables if self._can_create_table(t)]
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:872: in _can_create_table
return not self.checkfirst or not self.dialect.has_table(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py:89: in cache
return fn(self, con, *args, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/base.py:3373: in has_table
return bool(connection.scalar(query, {"table_name": table_name}))
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1305: in scalar
return meth(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:533: in _execute_on_scalar
return self._execute_on_connection(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:515: in _execute_on_connection
return connection._execute_clauseelement(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1638: in _execute_clauseelement
ret = self._execute_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1843: in _execute_context
return self._exec_single_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1983: in _exec_single_context
self._handle_dbapi_exception(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception
raise exc_info[1].with_traceback(exc_info[2])
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1964: in _exec_single_context
self.dialect.do_execute(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:942: in do_execute
cursor.execute(statement, parameters)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:580: in execute
self._adapt_connection.await_(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
value = await result
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:515: in _prepare_and_execute
await adapt_connection._start_transaction()
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:845: in _start_transaction
self._handle_exception(error)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:794: in _handle_exception
raise error
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:843: in _start_transaction
await self._transaction.start()
.venv/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
await self._connection.execute(query)
.venv/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
result = await self._protocol.query(query, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<locals>.task_done() at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:789]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
asyncpg/protocol/protocol.pyx:375: RuntimeError
---------------------------------------------------------------------------------------------------------------- Captured stdout setup -----------------------------------------------------------------------------------------------------------------
2025-01-23 01:59:24,567 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2025-01-23 01:59:24,567 INFO sqlalchemy.engine.Engine SELECT pg_catalog.pg_class.relname
FROM pg_catalog.pg_class JOIN pg_catalog.pg_namespace ON pg_catalog.pg_namespace.oid = pg_catalog.pg_class.relnamespace
WHERE pg_catalog.pg_class.relname = $1::VARCHAR AND pg_catalog.pg_class.relkind = ANY (ARRAY[$2::VARCHAR, $3::VARCHAR, $4::VARCHAR, $5::VARCHAR, $6::VARCHAR]) AND pg_catalog.pg_table_is_visible(pg_catalog.pg_class.oid) AND pg_catalog.pg_namespace.nspname != $7::VARCHAR
2025-01-23 01:59:24,567 INFO sqlalchemy.engine.Engine [cached since 0.01263s ago] ('user', 'r', 'p', 'f', 'v', 'm', 'pg_catalog')
2025-01-23 01:59:24,568 INFO sqlalchemy.engine.Engine ROLLBACK
---------------------------------------------------------------------------------------------------------------- Captured stderr setup -----------------------------------------------------------------------------------------------------------------
2025-01-23 01:59:24.567 KST | WARNING | app.core.database:create_all:52 - Create database
------------------------------------------------------------------------------------------------------------------ Captured log setup ------------------------------------------------------------------------------------------------------------------
INFO sqlalchemy.engine.Engine:base.py:2699 BEGIN (implicit)
INFO sqlalchemy.engine.Engine:base.py:1843 SELECT pg_catalog.pg_class.relname
FROM pg_catalog.pg_class JOIN pg_catalog.pg_namespace ON pg_catalog.pg_namespace.oid = pg_catalog.pg_class.relnamespace
WHERE pg_catalog.pg_class.relname = $1::VARCHAR AND pg_catalog.pg_class.relkind = ANY (ARRAY[$2::VARCHAR, $3::VARCHAR, $4::VARCHAR, $5::VARCHAR, $6::VARCHAR]) AND pg_catalog.pg_table_is_visible(pg_catalog.pg_class.oid) AND pg_catalog.pg_namespace.nspname != $7::VARCHAR
INFO sqlalchemy.engine.Engine:base.py:1843 [cached since 0.01263s ago] ('user', 'r', 'p', 'f', 'v', 'm', 'pg_catalog')
INFO sqlalchemy.engine.Engine:base.py:2702 ROLLBACK
___________________________________________________________________________________________________________ ERROR at setup of test_get_user ____________________________________________________________________________________________________________
@pytest.fixture(scope="module")
def client() -> Generator[TestClient, None, None]:
> with TestClient(app) as cli:
app/tests/conftest.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/starlette/testclient.py:739: in __enter__
portal.call(self.wait_startup)
.venv/lib/python3.12/site-packages/anyio/from_thread.py:290: in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
../miniconda/lib/python3.12/concurrent/futures/_base.py:456: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:774: in wait_startup
await receive()
.venv/lib/python3.12/site-packages/starlette/testclient.py:765: in receive
self.task.result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:449: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:755: in lifespan
await self.app(scope, self.stream_receive.receive, self.stream_send.send)
.venv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
await super().__call__(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/errors.py:152: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:48: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:724: in app
await self.lifespan(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:693: in lifespan
async with self.lifespan_context(app) as maybe_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
.venv/lib/python3.12/site-packages/fastapi/routing.py:133: in merged_lifespan
async with original_context(app) as maybe_original_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
app/core/lifespan.py:32: in lifespan
await database.create_all()
app/core/database.py:54: in create_all
await conn.run_sync(BaseModel.metadata.create_all)
.venv/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py:887: in run_sync
return await greenlet_spawn(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
result = context.throw(*sys.exc_info())
.venv/lib/python3.12/site-packages/sqlalchemy/sql/schema.py:5900: in create_all
bind._run_ddl_visitor(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2456: in _run_ddl_visitor
visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py:664: in traverse_single
return meth(obj, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:907: in visit_metadata
[t for t in tables if self._can_create_table(t)]
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:872: in _can_create_table
return not self.checkfirst or not self.dialect.has_table(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py:89: in cache
return fn(self, con, *args, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/base.py:3373: in has_table
return bool(connection.scalar(query, {"table_name": table_name}))
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1305: in scalar
return meth(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:533: in _execute_on_scalar
return self._execute_on_connection(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:515: in _execute_on_connection
return connection._execute_clauseelement(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1638: in _execute_clauseelement
ret = self._execute_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1843: in _execute_context
return self._exec_single_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1983: in _exec_single_context
self._handle_dbapi_exception(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception
raise exc_info[1].with_traceback(exc_info[2])
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1964: in _exec_single_context
self.dialect.do_execute(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:942: in do_execute
cursor.execute(statement, parameters)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:580: in execute
self._adapt_connection.await_(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
value = await result
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:515: in _prepare_and_execute
await adapt_connection._start_transaction()
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:845: in _start_transaction
self._handle_exception(error)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:794: in _handle_exception
raise error
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:843: in _start_transaction
await self._transaction.start()
.venv/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
await self._connection.execute(query)
.venv/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
result = await self._protocol.query(query, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<locals>.task_done() at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:789]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
asyncpg/protocol/protocol.pyx:375: RuntimeError
__________________________________________________________________________________________________________ ERROR at setup of test_patch_user ___________________________________________________________________________________________________________
@pytest.fixture(scope="module")
def client() -> Generator[TestClient, None, None]:
> with TestClient(app) as cli:
app/tests/conftest.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/starlette/testclient.py:739: in __enter__
portal.call(self.wait_startup)
.venv/lib/python3.12/site-packages/anyio/from_thread.py:290: in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
../miniconda/lib/python3.12/concurrent/futures/_base.py:456: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:774: in wait_startup
await receive()
.venv/lib/python3.12/site-packages/starlette/testclient.py:765: in receive
self.task.result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:449: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:755: in lifespan
await self.app(scope, self.stream_receive.receive, self.stream_send.send)
.venv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
await super().__call__(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/errors.py:152: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:48: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:724: in app
await self.lifespan(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:693: in lifespan
async with self.lifespan_context(app) as maybe_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
.venv/lib/python3.12/site-packages/fastapi/routing.py:133: in merged_lifespan
async with original_context(app) as maybe_original_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
app/core/lifespan.py:32: in lifespan
await database.create_all()
app/core/database.py:54: in create_all
await conn.run_sync(BaseModel.metadata.create_all)
.venv/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py:887: in run_sync
return await greenlet_spawn(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
result = context.throw(*sys.exc_info())
.venv/lib/python3.12/site-packages/sqlalchemy/sql/schema.py:5900: in create_all
bind._run_ddl_visitor(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2456: in _run_ddl_visitor
visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py:664: in traverse_single
return meth(obj, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:907: in visit_metadata
[t for t in tables if self._can_create_table(t)]
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:872: in _can_create_table
return not self.checkfirst or not self.dialect.has_table(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py:89: in cache
return fn(self, con, *args, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/base.py:3373: in has_table
return bool(connection.scalar(query, {"table_name": table_name}))
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1305: in scalar
return meth(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:533: in _execute_on_scalar
return self._execute_on_connection(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:515: in _execute_on_connection
return connection._execute_clauseelement(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1638: in _execute_clauseelement
ret = self._execute_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1843: in _execute_context
return self._exec_single_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1983: in _exec_single_context
self._handle_dbapi_exception(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception
raise exc_info[1].with_traceback(exc_info[2])
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1964: in _exec_single_context
self.dialect.do_execute(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:942: in do_execute
cursor.execute(statement, parameters)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:580: in execute
self._adapt_connection.await_(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
value = await result
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:515: in _prepare_and_execute
await adapt_connection._start_transaction()
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:845: in _start_transaction
self._handle_exception(error)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:794: in _handle_exception
raise error
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:843: in _start_transaction
await self._transaction.start()
.venv/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
await self._connection.execute(query)
.venv/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
result = await self._protocol.query(query, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<locals>.task_done() at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:789]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
asyncpg/protocol/protocol.pyx:375: RuntimeError
___________________________________________________________________________________________________________ ERROR at setup of test_put_user ____________________________________________________________________________________________________________
@pytest.fixture(scope="module")
def client() -> Generator[TestClient, None, None]:
> with TestClient(app) as cli:
app/tests/conftest.py:19:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
.venv/lib/python3.12/site-packages/starlette/testclient.py:739: in __enter__
portal.call(self.wait_startup)
.venv/lib/python3.12/site-packages/anyio/from_thread.py:290: in call
return cast(T_Retval, self.start_task_soon(func, *args).result())
../miniconda/lib/python3.12/concurrent/futures/_base.py:456: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:774: in wait_startup
await receive()
.venv/lib/python3.12/site-packages/starlette/testclient.py:765: in receive
self.task.result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:449: in result
return self.__get_result()
../miniconda/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
.venv/lib/python3.12/site-packages/anyio/from_thread.py:221: in _call_func
retval = await retval_or_awaitable
.venv/lib/python3.12/site-packages/starlette/testclient.py:755: in lifespan
await self.app(scope, self.stream_receive.receive, self.stream_send.send)
.venv/lib/python3.12/site-packages/fastapi/applications.py:1054: in __call__
await super().__call__(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/applications.py:113: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/errors.py:152: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/base.py:101: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py:48: in __call__
await self.app(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:715: in __call__
await self.middleware_stack(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:724: in app
await self.lifespan(scope, receive, send)
.venv/lib/python3.12/site-packages/starlette/routing.py:693: in lifespan
async with self.lifespan_context(app) as maybe_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
.venv/lib/python3.12/site-packages/fastapi/routing.py:133: in merged_lifespan
async with original_context(app) as maybe_original_state:
../miniconda/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
app/core/lifespan.py:32: in lifespan
await database.create_all()
app/core/database.py:54: in create_all
await conn.run_sync(BaseModel.metadata.create_all)
.venv/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/engine.py:887: in run_sync
return await greenlet_spawn(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:201: in greenlet_spawn
result = context.throw(*sys.exc_info())
.venv/lib/python3.12/site-packages/sqlalchemy/sql/schema.py:5900: in create_all
bind._run_ddl_visitor(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2456: in _run_ddl_visitor
visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/visitors.py:664: in traverse_single
return meth(obj, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:907: in visit_metadata
[t for t in tables if self._can_create_table(t)]
.venv/lib/python3.12/site-packages/sqlalchemy/sql/ddl.py:872: in _can_create_table
return not self.checkfirst or not self.dialect.has_table(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/reflection.py:89: in cache
return fn(self, con, *args, **kw)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/base.py:3373: in has_table
return bool(connection.scalar(query, {"table_name": table_name}))
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1305: in scalar
return meth(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:533: in _execute_on_scalar
return self._execute_on_connection(
.venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py:515: in _execute_on_connection
return connection._execute_clauseelement(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1638: in _execute_clauseelement
ret = self._execute_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1843: in _execute_context
return self._exec_single_context(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1983: in _exec_single_context
self._handle_dbapi_exception(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:2355: in _handle_dbapi_exception
raise exc_info[1].with_traceback(exc_info[2])
.venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py:1964: in _exec_single_context
self.dialect.do_execute(
.venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py:942: in do_execute
cursor.execute(statement, parameters)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:580: in execute
self._adapt_connection.await_(
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:132: in await_only
return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501
.venv/lib/python3.12/site-packages/sqlalchemy/util/_concurrency_py3k.py:196: in greenlet_spawn
value = await result
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:515: in _prepare_and_execute
await adapt_connection._start_transaction()
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:845: in _start_transaction
self._handle_exception(error)
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:794: in _handle_exception
raise error
.venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/asyncpg.py:843: in _start_transaction
await self._transaction.start()
.venv/lib/python3.12/site-packages/asyncpg/transaction.py:146: in start
await self._connection.execute(query)
.venv/lib/python3.12/site-packages/asyncpg/connection.py:349: in execute
result = await self._protocol.query(query, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<locals>.task_done() at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py:789]> got Future <Future pending cb=[BaseProtocol._on_waiter_completed()]> attached to a different loop
asyncpg/protocol/protocol.pyx:375: RuntimeError
=============================================================================================================== short test summary info ================================================================================================================
ERROR app/tests/api/v1/test_users.py::test_create_user - RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<local...
ERROR app/tests/api/v1/test_users.py::test_get_user - RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<local...
ERROR app/tests/api/v1/test_users.py::test_patch_user - RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<local...
ERROR app/tests/api/v1/test_users.py::test_put_user - RuntimeError: Task <Task pending name='anyio.from_thread.BlockingPortal._call_func' coro=<BlockingPortal._call_func() running at /home/zerohertz/workspace/.venv/lib/python3.12/site-packages/anyio/from_thread.py:221> cb=[TaskGroup._spawn.<local...
============================================================================================================= 1 passed, 4 errors in 1.86s ==============================================================================================================