# EECS 183 Python environment.
#
# Every package is pinned to an exact version (==) so that all students get
# the same environment as each other AND as the autograder, no matter what
# day they run setup.py. The autograder's full lock file is
# docker_files/dock/requirements.txt; keep the versions here identical to it.
# Requires Python 3.14 (setup.py enforces this).

# --- Core Environment ---
jupyterlab==4.6.3
# ipykernel is technically pulled in by Jupyter, but explicit
# listing helps fix some weird environment path issues.
ipykernel==7.3.0

# --- Data Science Stack ---
numpy==2.5.3
# Pandas 3.0 changed behavior (Copy-on-Write, default string dtype) in ways
# that affect course code, so everyone must be on 3.x.
pandas==3.0.6
matplotlib==3.11.2
seaborn==0.13.2
imageio==2.37.4
scikit-learn==1.9.1
# Not used directly, but pinned because they affect results: pillow decodes
# images for imageio (lab 5), and scikit-learn does its math with scipy.
pillow==12.3.0
scipy==1.18.1

# --- Linting & Style ---
flake8==7.3.0
# Enforces naming conventions (snake_case, ALL_CAPS constants).
pep8-naming==0.15.1
# Finds logical errors and common bugs (e.g. mutable default args).
flake8-bugbear==26.9.9
