[project] name = "backend" version = "0.1.0" description = "Add your description here" requires-python = ">=3.12" dependencies = [ "aiosmtplib>=5.1.2", "alembic>=1.18.5", "argon2-cffi>=25.1.0", "asyncpg>=0.31.0", "celery[redis]>=5.3.1", "email-validator>=2.3.0", "fastapi>=0.139.0", "faster-whisper>=1.2.1", "httpx>=0.28.1", "icalendar>=7.2.0", "livekit-api>=1.2.0", "prometheus-client>=0.25.0", "pydantic-settings>=2.14.2", "pyjwt>=2.13.0", "python-multipart>=0.0.32", "pyyaml>=6.0.3", "redis>=8.0.1", "sqlalchemy[asyncio]>=2.0.51", "tokenizers>=0.23.1", "uvicorn[standard]>=0.51.0", ] # Уровни AI `medium`(опционально)/`max` (ADR-004, docs/architecture/adr/ # 004-ai-tier-matrix.md): cuBLAS/cuDNN 9 для faster-whisper на CUDA 12 # (`WhisperModel(..., device="cuda")`, `core/plugins/faster_whisper.py`, # класс `FasterWhisperGPU`). Ставится только в GPU-образе воркера # транскрибации (compose-сервис `worker-transcriber-gpu`, # профиль `transcribe-gpu`) — не в базовом CPU-образе backend/worker. [project.optional-dependencies] gpu = [ "nvidia-cublas-cu12", "nvidia-cudnn-cu12==9.*", ] [dependency-groups] dev = [ "mypy>=2.3.0", "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "ruff>=0.15.21", "types-pyyaml>=6.0.12.20260518", ] [tool.ruff] line-length = 100 target-version = "py312" extend-exclude = ["alembic/versions"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "ASYNC"] ignore = ["B008"] # FastAPI's `Depends(...)` default-argument pattern is idiomatic [tool.ruff.lint.per-file-ignores] # Инлайн-стили HTML-письма (требование почтовых клиентов — внешний `