fastapi>=0.110,<0.120
uvicorn[standard]>=0.27,<0.35
pydantic>=2.6,<3
pydantic-settings>=2.2,<3
httpx>=0.27,<0.30
python-multipart>=0.0.9
itsdangerous>=2.1,<3
passlib[bcrypt]>=1.7,<2
# passlib 1.7.4 expects bcrypt <5 (uses bcrypt.__about__, removed in 5.x)
bcrypt>=4.0,<5
slowapi>=0.1.9,<0.2
openpyxl>=3.1,<4
cachetools>=5.3,<6
python-dateutil>=2.8,<3
pytest>=8.0,<9
pytest-asyncio>=0.23,<0.24
respx>=0.20,<0.22
