"""Lesson 9: command-line tools with argparse - one script, many uses."""
import argparse, csv
from pathlib import Path
HERE = Path(__file__).resolve().parent

def main(argv=None):
    ap = argparse.ArgumentParser(description="Sales totals from sales.csv")
    ap.add_argument("--status", choices=["Paid", "Pending", "Overdue"], help="only this status")
    ap.add_argument("--rep", help="only this sales rep")
    ap.add_argument("--month", help="YYYY-MM")
    a = ap.parse_args(argv)
    rows = [r for r in csv.DictReader(open(HERE / "sales.csv", encoding="utf-8")) if r["qty"]]
    if a.status: rows = [r for r in rows if r["status"] == a.status]
    if a.rep: rows = [r for r in rows if r["rep"] == a.rep]
    if a.month: rows = [r for r in rows if r["date"].startswith(a.month)]
    print(f"filters: status={a.status} rep={a.rep} month={a.month} -> {len(rows)} invoices, qty {sum(int(r['qty']) for r in rows)}")

if __name__ == "__main__":
    main([])                                   # demo runs; from a terminal just: python pyi-09.py --status Overdue
    main(["--status", "Overdue"])
    main(["--rep", "Neha", "--month", "2026-07"])
