docs: def process_csv(f):
      """
      Take a file-like object and yield OrderedDicts to be inserted into raw
      spending database.
      """
      reader = unicodecsv.DictReader(f, encoding=_ENCODING)
      for row in reader:
          month, year = parse_month_year(row['Return Month'])
  
          yield OrderedDict([
              ('customer_name', row['CustomerName']),
              ('supplier_name', row['SupplierName']),
              ('month', month),
              ('year', year),
              ('date', datetime.date(year, month, 1)),
              ('total_ex_vat', parse_price(row['EvidencedSpend'])),
              ('lot', parse_lot_name(row['LotDescription'])),
              ('customer_sector', parse_customer_sector(row['Sector'])),
              ('supplier_type', parse_sme_or_large(row['SME or Large'])),
          ])