"""Illustrative energy budgets, not measurements. Python standard library only."""
import csv
from decimal import Decimal, ROUND_FLOOR
import sys

FIELDS = ('bank_mah', 'bank_nominal_v', 'bank_wh', 'total_transfer_efficiency',
          'phone_mah', 'phone_nominal_v', 'phone_wh', 'stored_wh',
          'equivalent_full_charges', 'complete_charges_in_model')


def rows():
    phone_wh = Decimal('5000') / 1000 * Decimal('3.85')
    for bank_mah in (10000, 20000):
        bank_wh = Decimal(bank_mah) / 1000 * Decimal('3.7')
        for efficiency in map(Decimal, ('0.65', '0.75', '0.85')):
            stored = bank_wh * efficiency
            charges = stored / phone_wh
            yield (bank_mah, '3.7', str(bank_wh), str(efficiency), 5000, '3.85',
                   str(phone_wh), str(stored), str(charges.quantize(Decimal('0.000001'))),
                   int(charges.to_integral_value(rounding=ROUND_FLOOR)))


if __name__ == '__main__':
    writer = csv.writer(sys.stdout, lineterminator='\n')
    writer.writerow(FIELDS)
    writer.writerows(rows())
