diff --git a/api/requirements-dev.txt b/api/requirements-dev.txt index 34552d5..44b3a4a 100644 --- a/api/requirements-dev.txt +++ b/api/requirements-dev.txt @@ -3,7 +3,7 @@ uvicorn[standard]==0.30.1 pydantic==2.11.7 pydantic[email] pydantic-settings==2.10.1 -sqlalchemy>=2.0.32,<2.1 +sqlalchemy[asyncio]>=2.0.32,<2.1 python-jose[cryptography]==3.3.0 argon2-cffi==23.1.0 python-multipart==0.0.9 diff --git a/api/tests/unit/test_runtime_deps.py b/api/tests/unit/test_runtime_deps.py new file mode 100644 index 0000000..6b58c56 --- /dev/null +++ b/api/tests/unit/test_runtime_deps.py @@ -0,0 +1,11 @@ +import sqlalchemy.util.concurrency as concurrency + + +def test_greenlet_is_installed_for_async_sqlalchemy(): + # Async engine (create_async_engine + run_sync в alembic/env.py) требует greenlet. + # SQLAlchemy не ставит его сам на arm64 и на Python >= 3.13, поэтому зависимость + # объявлена явно через extra sqlalchemy[asyncio] в requirements-dev.txt. + assert concurrency.have_greenlet, ( + "greenlet не установлен: async-движок SQLAlchemy не будет работать. " + "Установите зависимости через api/requirements-dev.txt (extra sqlalchemy[asyncio])." + )