From d09e43bedb27a979f3d0a56c9102cc91043bfea5 Mon Sep 17 00:00:00 2001 From: Jeremy Saklad Date: Fri, 25 Jun 2021 17:11:43 -0500 Subject: [PATCH] Simplify and normalize argument parsing The script now uses dictionary unpacking to pass arguments, rather than explicitly listing each one. The parser now suppresses missing parameters by default. This means that the default values of the Solve function can be taken advantage, rather than having to repeat them for the parser's sake. --- Bone Market Solver.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Bone Market Solver.py b/Bone Market Solver.py index a4e7c94..f3f00a1 100644 --- a/Bone Market Solver.py +++ b/Bone Market Solver.py @@ -2239,7 +2239,11 @@ class EnumAction(argparse.Action): def main(): - parser = argparse.ArgumentParser(prog='Bone Market Solver', description="Devise the optimal skeleton at the Bone Market in Fallen London.") + parser = argparse.ArgumentParser( + prog='Bone Market Solver', + description="Devise the optimal skeleton at the Bone Market in Fallen London.", + argument_default=argparse.SUPPRESS, + ) parser.add_argument( "-s", "--shadowy", @@ -2279,7 +2283,6 @@ def main(): "-b", "--buyer", "--desired-buyer", action=EnumAction, nargs='+', - default=[], type=Buyer, help="specific buyer that skeleton should be designed for (if declared repeatedly, will choose from among those provided)", dest='desired_buyers' @@ -2287,7 +2290,6 @@ def main(): parser.add_argument( "-c", "--cost", "--maximum-cost", - default=cp_model.INT32_MAX, type=int, help="maximum number of pennies that should be invested in skeleton", dest='maximum_cost' @@ -2295,7 +2297,6 @@ def main(): parser.add_argument( "-e", "--exhaustion", "--maximum_exhaustion", - default=cp_model.INT32_MAX, type=int, help="maximum exhaustion that skeleton should generate", dest='maximum_exhaustion' @@ -2313,7 +2314,6 @@ def main(): parser.add_argument( "-t", "--time-limit", - default=float('inf'), type=float, help="maximum number of seconds that solver runs for", dest='time_limit' @@ -2321,7 +2321,6 @@ def main(): parser.add_argument( "-w", "--workers", - default=cpu_count(), type=int, help="number of search worker threads to run in parallel (default: one worker per available CPU thread)", dest='workers' @@ -2329,17 +2328,18 @@ def main(): args = parser.parse_args() - arguments = (args.shadowy_level, args.bone_market_fluctuations, args.zoological_mania, args.occasional_buyer, args.desired_buyers, args.maximum_cost, args.maximum_exhaustion, args.time_limit, args.workers) + arguments = vars(args) - if not args.verbose: + if not arguments.pop('verbose'): def WrappedSolve(stdscr, arguments): # Prevents crash if window is too small to fit text stdscr.scrollok(True) # Move stdscr to last position - return Solve(*arguments, stdscr) + arguments['stdscr'] = stdscr + return Solve(**arguments) print(curses.wrapper(WrappedSolve, arguments)) else: - print(Solve(*arguments)) + print(Solve(**arguments)) if __name__ == '__main__':