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()