Files @ 5a73d3d8f8d4
Branch filter:

Location: NPO-Accounting/oxrlib/oxrlib/__main__.py

Brett Smith
historical: Move normalize_rate and _pretty_rate to base Formatter.

This reduces the number of method overrides to help readability,
and gets rid of the annoying format_rate/pretty_rate distinction.
import decimal
import importlib
import sys

import oxrlib.config

def decimal_context(base=decimal.BasicContext):
    context = base.copy()
    context.rounding = decimal.ROUND_HALF_EVEN
    context.traps = {
        decimal.Clamped: True,
        decimal.DivisionByZero: True,
        decimal.FloatOperation: True,
        decimal.Inexact: False,
        decimal.InvalidOperation: True,
        decimal.Overflow: True,
        decimal.Rounded: False,
        decimal.Subnormal: True,
        decimal.Underflow: True,
    }
    return context

def main(arglist=None, stdout=sys.stdout, stderr=sys.stderr):
    config = oxrlib.config.Configuration(arglist)
    subcmd_module = importlib.import_module('.commands.' + config.args.command, 'oxrlib')
    with decimal.localcontext(decimal_context()):
        subcmd_module.run(config, stdout, stderr)
    return 0

if __name__ == '__main__':
    exit(main())