# Course-runtime environment (CLM Role B — "the course venv")
# =============================================================
#
# This is the multi-GB machine-learning / data-science stack that ML course
# *notebooks* import at execution time. It is deliberately NOT a `clm` package
# extra: clm never imports any of it, so it does not belong in clm's own venv
# (Role A — the tooling that drives nbconvert). It belongs in a *separate course
# venv* that the Direct-mode notebook kernel runs in.
#
# Wire it up (Wave 2b):
#
#   1. Create a dedicated course venv (any Python 3.12–3.14):
#          uv venv /opt/course-venvs/ml            # or: python -m venv ...
#   2. Install this stack (ipykernel is included — the kernel launcher lives
#      in the course venv, not clm's):
#          /opt/course-venvs/ml/bin/python -m pip install -r course-runtime-requirements.txt
#   3. Point clm at it so Direct-mode notebook kernels run there:
#          clm provision kernel-env --python /opt/course-venvs/ml/bin/python
#      (or set the course-spec `<kernel-python>` element / `clm.toml`
#       `[jupyter] kernel_python` / `CLM_NOTEBOOK_KERNEL_PYTHON`).
#
# clm's own venv keeps driving nbconvert (Role A); this venv only runs the
# kernel subprocess (Role B). See `clm info commands` (provision kernel-env),
# `clm info spec-files` (<kernel-python>), and
# docs/claude/design/dependency-environment-isolation.md.
#
# The Docker notebook image bakes an equivalent stack in already, so Docker mode
# needs none of this.

# --- Kernel launcher (mandatory in the course venv) ---
ipykernel
ipywidgets

# --- Core ML ---
torch>=2.8.0
torchvision>=0.20.0
torchaudio>=2.8.0
fastai>=2.7
transformers
numba>=0.60.0
# Image generation and model acceleration
diffusers>=0.35.1
accelerate>=1.11.0
# Tokenization and model utilities
sentencepiece>=0.2.1
timm>=1.0.15
hf-xet>=1.1.10
protobuf>=6.32.1
# Data science
numpy>=2.0.1
pandas>=2.2.2
scipy>=1.14.0
scikit-learn>=1.5.1
skorch>=1.0.2
sqlalchemy>=2.0.32
psycopg[binary]>=3.2  # PostgreSQL driver for the Docker/Postgres deployment decks
# Visualization
matplotlib>=3.9.2
seaborn>=0.13.2
plotly>=6.4.0
gradio>=6.5.1
pillow>=11.2.1
# Text and web processing
beautifulsoup4>=4.12.2
inscriptis>=1.0.2
ftfy>=6.1.1
clean-text>=0.6.0
trafilatura>=1.6.0
newspaper4k>=0.2.8
bm25s[core]>=0.3.2.post1
# Utilities
tqdm>=4.66.5
toolz>=0.12.1
packaging>=25.0
icecream>=2.1.10
cookiecutter
PyGitHub>=2.0.0
# Notebook testing
ipytest
# LLM/RAG
langchain>=1.2.7
langsmith
langchain-anthropic
langchain-community>=0.3.0
langchain-core
langchain-openai
langchain-openrouter
langchain-text-splitters
langgraph>=1.1.2
deepagents>=0.6.0  # AI-Agents-II deck (create_deep_agent on LangGraph)
qdrant-client>=1.13.0
langchain-qdrant
fastembed>=0.6.0
openai>=2.8.1
tiktoken>=0.9.0
langfuse>=4.0.0
# Document processing (used with RAG)
pypdf>=6.3.2
pymediawiki>=0.7.5
