"""
Exercise 1: flexible summary function

Implement summarize(*values, **labels) that returns a dict:

  {
    "count": <number of positional values>,
    "total": <sum of positional values, 0 if none>,
    "labels": <the labels dict, unchanged>
  }

Example:
  summarize(1, 2, 3, unit="kg", source="scale")
  -> {"count": 3, "total": 6, "labels": {"unit": "kg", "source": "scale"}}
"""

def summarize(*values, **labels):
    # TODO: implement per the docstring above.
    pass


# --- self-check: do not modify below this line ---
r1 = summarize(1, 2, 3, unit="kg", source="scale")
r2 = summarize()
r3 = summarize(10, note="single")

checks = [
    (r1, {"count": 3, "total": 6, "labels": {"unit": "kg", "source": "scale"}}),
    (r2, {"count": 0, "total": 0, "labels": {}}),
    (r3, {"count": 1, "total": 10, "labels": {"note": "single"}}),
]

all_passed = all(actual == expected for actual, expected in checks)
for actual, expected in checks:
    print(f"got {actual!r}, expected {expected!r} -> {'PASS' if actual == expected else 'FAIL'}")

print("ALL PASS" if all_passed else "SOME FAILED")
