# --- Core Environment ---
# JupyterLab 4.x is stable and widely supported.
jupyterlab>=4.0

# --- Data Science Stack ---
# NumPy 2.0 was a major update. We want at least 2.0 to ensure
# they learn modern syntax, but we don't need to force 2.3 yet.
numpy>=2.0

# Pandas 2.2 is a very stable target.
pandas>=2.2

# Matplotlib 3.8+ introduced type hints and better defaults.
# It is extremely stable across Windows/Mac/Linux.
matplotlib>=3.8

# Seaborn 0.13 is the standard modern interface (objects interface).
seaborn>=0.13

# Imageio 2.35+ ensures full compatibility with NumPy 2.0
# and defaults to the modern v3 API.
imageio>=2.35

# Scikit-learn updates frequently. 1.5 is a safe, robust baseline
# that avoids potential conflicts with very new NumPy versions.
scikit-learn>=1.5

# ipykernel is technically pulled in by Jupyter, but explicit
# listing helps fix some weird environment path issues.
ipykernel>=6.29

# --- Linting & Style ---
# Flake8 7.x is required for official Python 3.12 support.
flake8>=7.1

# pep8-naming 0.14+ is required to support modern Python syntax (like :=).
pep8-naming>=0.14

# Finds logical errors and common bugs (e.g. mutable default args).
# Highly recommended for beginners to prevent "silent failures".
flake8-bugbear>=24.4
