banking-breakdown/banking_breakdown/__main__.py

66 lines
2.0 KiB
Python

from banking_breakdown import ui, regex_categorizer, statement_parser, \
document_builder
import argparse
def categorize_func(args):
import pandas as pd
df = pd.read_csv(args.i, delimiter=args.d)
if args.f is not None:
df = regex_categorizer.assign_categories(df, args.f)
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)
ui.show_main_window(df=df)
def report_func(args):
report_data = statement_parser.parse_statement(args.i)
document_builder.build_document(args.o, report_data)
#
# Define CLI
#
def main():
parser = argparse.ArgumentParser(prog='banking_breakdown',
description='Visualize bank statements')
subparsers = parser.add_subparsers()
categorize_parser = subparsers.add_parser("categorize")
categorize_parser.set_defaults(func=categorize_func)
categorize_parser.add_argument('-i', required=True,
help="Bank statement CSV")
categorize_parser.add_argument('-f', required=False,
help="JSON file containing regexes to"
" pre-categorize statement entries")
categorize_parser.add_argument('-d', required=False,
help="Delimiter to use when reading the"
" bank statement", default=',')
report_parser = subparsers.add_parser("report")
report_parser.set_defaults(func=report_func)
report_parser.add_argument('-i', required=True,
help="CSV file containing bank statement data (output file of categorization step)")
report_parser.add_argument('-o', required=False,
help="Output directory ('build' by default)",
default='build')
args = parser.parse_args()
if hasattr(args, 'func'):
args.func(args)
else:
parser.print_help()
if __name__ == "__main__":
main()