import argparse import os import sys import importlib def day(assignment_part: str) -> str: return { '1': 'One', '2': 'Two', }[assignment_part] parser = argparse.ArgumentParser(description='Advent of Code') parser.add_argument('day', type=str, help='Assignment day') parser.add_argument( '-p', '--part', type=day, nargs='?', default='1', help='Assingment part. Defaults to one.' ) parser.add_argument('--example', default=False, action='store_true') if __name__ == '__main__': args = parser.parse_args() assignment_day = importlib.import_module(args.day) Assignment = getattr(assignment_day, f'Assignment{args.part}') assignment = Assignment(path=os.path.dirname(assignment_day.__file__)) print(assignment.run(input=assignment.read_input()))