"""Original Paradigm Study exercise. Run beside orders-messy.csv with Python 3."""
import csv
import json
from pathlib import Path


def clean(rows):
    accepted, rejected = [], []
    for row in rows:
        order_id = row['order_id'].strip()
        region = row['region'].strip().lower()
        raw_units = row['units'].strip()
        reason = None
        if region not in {'north', 'south', 'west'}:
            reason = 'unknown region'
        elif not raw_units:
            reason = 'missing units'
        else:
            try:
                units = int(raw_units)
                if units < 0:
                    reason = 'invalid units'
            except ValueError:
                reason = 'invalid units'
        if reason:
            rejected.append({'order_id': order_id, 'reason': reason})
        else:
            accepted.append({'order_id': order_id, 'region': region, 'units': units})
    return accepted, rejected


if __name__ == '__main__':
    with Path(__file__).with_name('orders-messy.csv').open(newline='', encoding='utf-8') as file:
        accepted, rejected = clean(csv.DictReader(file))
    print(json.dumps({'accepted': accepted, 'rejected': rejected}, indent=2))
