# ─── Core API Framework ────────────────────────────────────────────────────── fastapi>=0.110.0 uvicorn>=0.28.0 # ─── Database (MySQL async) ─────────────────────────────────────────────────── sqlalchemy[asyncio]>=2.0.28 # sqlalchemy>=2.0.28 alembic>=1.13.1 aiomysql>=0.2.0 # async MySQL driver for SQLAlchemy PyMySQL>=1.1.0 # sync MySQL driver (required by Alembic offline mode) aiosqlite>=0.20.0 # keep for local dev/testing without MySQL # ─── Validation & Settings ──────────────────────────────────────────────────── pydantic>=2.6.4 pydantic-settings>=2.2.1 python-dotenv>=1.0.1 # ─── Authentication (JWT + Microsoft OAuth) ─────────────────────────────────── python-jose[cryptography]>=3.3.0 passlib[bcrypt]>=1.7.4 python-multipart>=0.0.9 # required for OAuth2PasswordRequestForm httpx>=0.27.0 # Microsoft token exchange + Graph API calls # ─── Cache ─────────────────────────────────────────────────────────────────── redis>=5.0.3 # ─── Testing ───────────────────────────────────────────────────────────────── pytest>=8.1.1 pytest-asyncio>=0.23.5