# Reproducible version pins for the workbench image stack.
#
# Single source of truth for version numbers. Every package referenced by
# pyproject.toml (deps + extras) and by every image-side requirements.txt
# under sagemaker_images/ and applications/ MUST appear here with an exact
# `==` pin. Coverage is enforced by ci/check_constraints.py (CI-gated).
#
# Each Dockerfile builds with:
#     pip install -c constraints.txt -r requirements.txt
# so bumping a library here flows to every image on the next rebuild without
# editing per-image manifests.
#
# Pin policy: latest stable on PyPI for each package, subject to any upper
# bound in pyproject.toml (pandas < 3.0 → latest 2.x; sagemaker < 4.0 →
# latest 3.x; datasets < 4.0 → latest 3.x). A pip-installer who pulls
# workbench from PyPI does NOT see this file — they get pyproject's specs
# and pip resolves to the latest compatible release.

# --- AWS clients & SDKs -----------------------------------------------------
boto3 == 1.43.14
botocore == 1.43.14
awswrangler == 3.16.1
aiobotocore == 3.7.0
sagemaker == 3.12.0
redis == 7.4.0
cryptography == 48.0.0
requests == 2.34.2

# --- Data / ML core ---------------------------------------------------------
# numpy is pulled transitively by pandas/sklearn in the main stack; pinned
# explicitly because applications/compound_explorer/requirements.txt
# references it directly.
numpy == 2.4.6
pandas == 2.3.3
scikit-learn == 1.8.0
xgboost == 3.2.0
joblib == 1.5.3
networkx == 3.6.1
cleanlab == 2.9.0
datasets == 3.6.0
umap-learn == 0.5.12

# --- Cheminformatics --------------------------------------------------------
rdkit == 2026.3.2
mordredcommunity == 2.0.7

# --- REPL & config ----------------------------------------------------------
ipython == 9.13.0
pyreadline3 == 3.5.6
pyyaml == 6.0.3

# --- Plotting ---------------------------------------------------------------
matplotlib == 3.10.9

# --- UI (workbench[ui]) -----------------------------------------------------
plotly == 6.7.0
dash == 4.1.0
dash-bootstrap-components == 2.0.4
dash-bootstrap-templates == 2.1.0
dash_ag_grid == 35.2.0
tabulate == 0.10.0

# --- Dev (workbench[dev]) ---------------------------------------------------
pytest == 9.0.3
pytest-sugar == 1.1.1
pytest-xdist == 3.8.0
coverage == 7.14.0
pytest-cov == 7.1.0
flake8 == 7.3.0
black == 26.5.1

# --- Per-image framework extras --------------------------------------------
# fastapi/uvicorn: endpoint serving (base/inference, pytorch_chem/inference)
fastapi == 0.136.3
uvicorn == 0.48.0
asgiref == 3.11.1
# torch: pinned to one version across all images that need it; pytorch_chem
# uses the cu130 wheel (Dockerfile passes --index-url), dashboard +
# ml_pipelines use the +cpu wheel (pre-installed before sagemaker-serve
# can grab the default CUDA wheel)
torch == 2.12.0
# chemprop: pytorch_chem inference + training
chemprop == 2.2.3
# shap: pytorch_chem training (model interpretability)
shap == 0.51.0
