From b0dcc0b0f58d17897bda9a81f663b8e9e99e6d38 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Wed, 28 Oct 2026 18:11:10 +0400 Subject: [PATCH] =?UTF-8?q?fix(deps):=20=D1=8F=D0=B2=D0=BD=D0=BE=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20greenlet=20=D0=B2=20dev-?= =?UTF-8?q?=D0=BE=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B7=20sqlalchemy[asyncio]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SQLAlchemy не объявляет greenlet без extra asyncio. На arm64 (macOS) и на Python >= 3.13 greenlet не ставится, и async-движок падает с "the greenlet library is required". Тест фиксирует наличие greenlet. Co-Authored-By: Claude Opus 5.5 --- api/requirements-dev.txt | 2 +- api/tests/unit/test_runtime_deps.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 api/tests/unit/test_runtime_deps.py 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])." + )