# 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
PyJWT==2.13.0              # signed session tokens
ldap3==2.9.1                # D13: LDAPS simple bind against prime.local. Pure Python,
                            # so no system libldap/OpenLDAP headers in the image. The
                            # trust anchor is server/certs/prime-ca-chain.pem, NOT the
                            # system store — see server/ldap_auth.py.
starlette==1.3.1           # pinned transitive (cookie / CORS handling — security-relevant)
