AURORA-1833: явно ставить greenlet в dev-окружении #225

Open
aep wants to merge 1 commits from feat/209-aurora-1833-greenlet-dev into test
Owner

Closes #209

Задача: AURORA-1833 (Jira). В api/requirements-dev.txt нет greenlet: SQLAlchemy 2.0 ставит его только через extra asyncio. На macOS arm64 и Python >= 3.13 greenlet не ставится, и async-движок падает с «the greenlet library is required».

Что сделано

  • api/requirements-dev.txt: sqlalchemy>=2.0.32,<2.1 -> sqlalchemy[asyncio]>=2.0.32,<2.1 (штатный extra, тянет greenlet на любой платформе).
  • api/tests/unit/test_runtime_deps.py: тест assert sqlalchemy.util.concurrency.have_greenlet с понятным сообщением.
  • api/requirements.txt не менялся.

Проверка установки (arm64, Python 3.13.12, SQLAlchemy 2.0.55)

  • До правки (sqlalchemy без extra): have_greenlet=False, greenlet не установлен. Новый тест падает.
  • После правки (чистый venv, pip install -r api/requirements-dev.txt): have_greenlet=True, greenlet 3.5.6. Новый тест проходит.

Тесты

  • Unit (pytest tests/unit, без БД): 59 passed, 2 failed. Оба падения входят в известные 3 падения базовой ветки test: test_export_full_form_ignores_non_applicable_params_for_other_sheets, test_export_form_payload_forwards_ignore_flag.
  • Полный прогон с --init_db на БД dfip_1833 (PostgreSQL 15.12) не проходит: миграция 0012_del_project.sql падает на subquery in FROM must have an alias (строка 27, подзапрос без алиаса; PG 15 такое не принимает). Миграция существует в базовой ветке test и к этой правке не относится. Полный набор не запущен, решение по 0012 вне этой задачи.

Проверить руками

Не требуется (правка зависимостей и тест).

Замер до/после

Не применимо (зависимость, не производительность).

Тех. долг (для владельца шаблона raisa)

api/requirements.txt не тронут. Prod сейчас получает greenlet неявно (образ fastapi-template:1.3.0, вероятно x86_64 и Python < 3.13). Обновление базового образа до Python 3.13 молча сломает prod. Тот же extra sqlalchemy[asyncio] в основном файле стоит согласовать с владельцем шаблона raisa.

Rulings I made

нет

🤖 Generated with Claude Code

Closes #209 Задача: AURORA-1833 (Jira). В `api/requirements-dev.txt` нет greenlet: SQLAlchemy 2.0 ставит его только через extra `asyncio`. На macOS arm64 и Python >= 3.13 greenlet не ставится, и async-движок падает с «the greenlet library is required». ## Что сделано - `api/requirements-dev.txt`: `sqlalchemy>=2.0.32,<2.1` -> `sqlalchemy[asyncio]>=2.0.32,<2.1` (штатный extra, тянет greenlet на любой платформе). - `api/tests/unit/test_runtime_deps.py`: тест `assert sqlalchemy.util.concurrency.have_greenlet` с понятным сообщением. - `api/requirements.txt` не менялся. ## Проверка установки (arm64, Python 3.13.12, SQLAlchemy 2.0.55) - До правки (`sqlalchemy` без extra): `have_greenlet=False`, `greenlet` не установлен. Новый тест падает. - После правки (чистый venv, `pip install -r api/requirements-dev.txt`): `have_greenlet=True`, greenlet 3.5.6. Новый тест проходит. ## Тесты - Unit (`pytest tests/unit`, без БД): 59 passed, 2 failed. Оба падения входят в известные 3 падения базовой ветки `test`: `test_export_full_form_ignores_non_applicable_params_for_other_sheets`, `test_export_form_payload_forwards_ignore_flag`. - Полный прогон с `--init_db` на БД `dfip_1833` (PostgreSQL 15.12) не проходит: миграция `0012_del_project.sql` падает на `subquery in FROM must have an alias` (строка 27, подзапрос без алиаса; PG 15 такое не принимает). Миграция существует в базовой ветке `test` и к этой правке не относится. Полный набор не запущен, решение по 0012 вне этой задачи. ## Проверить руками Не требуется (правка зависимостей и тест). ## Замер до/после Не применимо (зависимость, не производительность). ## Тех. долг (для владельца шаблона raisa) `api/requirements.txt` не тронут. Prod сейчас получает greenlet неявно (образ `fastapi-template:1.3.0`, вероятно x86_64 и Python < 3.13). Обновление базового образа до Python 3.13 молча сломает prod. Тот же extra `sqlalchemy[asyncio]` в основном файле стоит согласовать с владельцем шаблона raisa. ## Rulings I made нет 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-28 17:11:31 +03:00
SQLAlchemy не объявляет greenlet без extra asyncio. На arm64 (macOS)
и на Python >= 3.13 greenlet не ставится, и async-движок падает с
"the greenlet library is required". Тест фиксирует наличие greenlet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
Owner

Полный прогон pytest (контроллер, 28.10): PostgreSQL 16, пустая БД, --init_db — 201 passed, 4 skipped, 3 failed. Падения исходные для test (test_backend_calls_form3_add_project_and_add_line_functions и два теста test_export_service_query_params), новых нет. На PostgreSQL 15.12 полный прогон станет возможен после AURORA-1922 (PR #221).

Полный прогон pytest (контроллер, 28.10): PostgreSQL 16, пустая БД, --init_db — 201 passed, 4 skipped, 3 failed. Падения исходные для test (test_backend_calls_form3_add_project_and_add_line_functions и два теста test_export_service_query_params), новых нет. На PostgreSQL 15.12 полный прогон станет возможен после AURORA-1922 (PR #221).
This pull request can be merged automatically.
You are not authorized to merge this pull request.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/209-aurora-1833-greenlet-dev:feat/209-aurora-1833-greenlet-dev
git checkout feat/209-aurora-1833-greenlet-dev
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/DFiP_Budget_planing#225
No description provided.