#!/usr/bin/env python3
"""Summarize a tiny synthetic reading-session dataset using only Python's standard library."""

from __future__ import annotations

import csv
import statistics
import sys
from pathlib import Path


def load_rows(path: Path) -> tuple[list[int], list[int]]:
    """Return reading-minute and quiz-score values from the declared CSV input."""
    with path.open(newline="", encoding="utf-8") as handle:
        rows = list(csv.DictReader(handle))
    if not rows:
        raise ValueError("dataset has no observations")
    minutes = [int(row["reading_minutes"]) for row in rows]
    scores = [int(row["quiz_score"]) for row in rows]
    return minutes, scores


def main(argv: list[str]) -> int:
    if len(argv) != 2:
        print("Usage: summarize_reading_sessions.py DATASET.csv", file=sys.stderr)
        return 2
    dataset = Path(argv[1])
    try:
        minutes, scores = load_rows(dataset)
    except (OSError, KeyError, ValueError) as exc:
        print(f"ERROR: {exc}", file=sys.stderr)
        return 1

    print("Practical Statistics with Python — Featured Module Summary")
    print(f"dataset={dataset.name}")
    print(f"observations={len(minutes)}")
    print(f"reading_minutes_mean={statistics.mean(minutes):.2f}")
    print(f"reading_minutes_median={statistics.median(minutes):.2f}")
    print(f"reading_minutes_sample_stdev={statistics.stdev(minutes):.2f}")
    print(f"quiz_score_mean={statistics.mean(scores):.2f}")
    print(f"minutes_quiz_correlation={statistics.correlation(minutes, scores):.3f}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main(sys.argv))
