fastapi==0.115.6 uvicorn[standard]==0.34.0 sqlalchemy==2.0.36 alembic==1.14.0 psycopg2-binary==2.9.10 asyncpg==0.31.0 redis==5.2.1 pydantic==2.10.3 pydantic-settings==2.7.0 python-jose[cryptography]==3.3.0 passlib[bcrypt]==1.7.4 # passlib 1.7.4 (last release, unmaintained since ~2020) detects its bcrypt # backend via bcrypt.__about__.__version__, which bcrypt>=4.1 removed -- # hashing/verifying a password then raises "password cannot be longer than # 72 bytes" (a misleading downstream symptom of the real AttributeError: # module 'bcrypt' has no attribute '__about__') on every call. Without this # pin, `pip install -r requirements.txt` silently grabs whatever the latest # bcrypt is and breaks register/login outright. Pin below 4.1 explicitly. bcrypt==4.0.1 python-multipart==0.0.20 email-validator==2.2.0 httpx==0.28.1 pytest==8.3.4 pytest-asyncio==0.25.0 pytest-cov==6.0.0