26 lines
1.6 KiB
Plaintext
26 lines
1.6 KiB
Plaintext
# Pinned to exact versions for reproducible builds — no silent dependency drift
|
|
# on every `docker compose up --build`. To update: bump a version here on purpose,
|
|
# run `pip-audit` against the result, and test. For supply-chain integrity, the
|
|
# next step is a hashed lockfile (`pip-compile --generate-hashes` → install with
|
|
# `pip install --require-hashes`).
|
|
fastapi==0.138.1
|
|
uvicorn[standard]==0.49.0
|
|
gunicorn==26.0.0
|
|
sqlalchemy==2.0.51
|
|
alembic==1.18.5 # database migrations
|
|
psycopg[binary]==3.3.4
|
|
pymssql==2.3.13 # read-only lookups against the Micron asset DB (SQL Server).
|
|
# Chosen over pyodbc because it ships self-contained wheels —
|
|
# pyodbc would also need msodbcsql18 + unixODBC installed in
|
|
# the image. To use pyodbc instead, add it here, install the
|
|
# Microsoft ODBC driver in the Dockerfile, and switch
|
|
# MICRON_DB_URL to mssql+pyodbc://…?driver=ODBC+Driver+18+for+SQL+Server
|
|
pydantic==2.13.4
|
|
python-dotenv==1.2.2
|
|
bcrypt==5.0.0 # password hashing — still used until T10.4 removes the local
|
|
# password path; do not drop this before that task lands.
|
|
PyJWT==2.13.0 # signed session tokens
|
|
starlette==1.3.1 # pinned transitive (cookie / CORS handling — security-relevant)
|
|
Authlib==1.7.2 # Okta OIDC authorization-code flow (T10.1, wave 10 / D15)
|
|
httpx==0.28.1 # Authlib's OIDC client needs an HTTP client; explicit, not transitive
|