"""Reproduce the sample readout. Python standard library only."""
import csv
from collections import defaultdict
from decimal import Decimal
from pathlib import Path
import sys


def summarise(path):
    groups = defaultdict(list)
    with Path(path).open(encoding='utf-8', newline='') as source:
        for row in csv.DictReader(source):
            groups[row['series_id']].append(row)
    for series, rows in sorted(groups.items()):
        prices = [Decimal(row['observed_price']) for row in rows]
        dates = {row['observed_date'] for row in rows}
        yield (series, rows[0]['product_name'], rows[0]['province'], len(dates), min(prices), max(prices))


if __name__ == '__main__':
    for series, product, province, dates, low, high in summarise(sys.argv[1] if len(sys.argv) > 1 else 'observations.csv'):
        print(f'{series} | {product} | {province} | {dates} observed dates | CAD {low:.2f}–{high:.2f}')
    print('Selected historical observations only; missing dates are not filled.')
