26 lines
837 B
Plaintext
26 lines
837 B
Plaintext
# Hosted mode only. serve.py and run_report.py need nothing but openpyxl.
|
|
|
|
# --- web ---
|
|
fastapi>=0.115,<1.0
|
|
uvicorn[standard]>=0.34,<1.0
|
|
python-multipart>=0.0.20 # Starlette needs it to parse multipart uploads
|
|
|
|
# --- data ---
|
|
sqlalchemy>=2.0.36,<3.0
|
|
pymysql>=1.1.1 # pure-python driver, so the image needs no compiler
|
|
cryptography>=43.0 # PyMySQL needs it for caching_sha2_password (RDS MySQL 8 default)
|
|
|
|
# --- config / validation ---
|
|
pydantic>=2.9,<3
|
|
pydantic-settings>=2.6,<3 # pulls in python-dotenv
|
|
email-validator>=2.2 # required by pydantic EmailStr
|
|
|
|
# --- auth ---
|
|
argon2-cffi>=23.1 # not passlib: its last release is 2020 and it breaks on bcrypt>=4.1
|
|
|
|
# --- outbound ---
|
|
httpx>=0.27 # multipart POST to EMAIL_ENDPOINT
|
|
|
|
# --- analysis ---
|
|
openpyxl>=3.1.5
|