Redo all the argument parsing with argparse.

This commit is contained in:
Arthur O'Dwyer
2017-04-22 17:53:06 -07:00
parent 192ec2f106
commit 3de933dbfa
2 changed files with 19 additions and 21 deletions

View File

@ -1,3 +1,4 @@
import argparse
import curses import curses
import logging import logging
import sys import sys
@ -9,17 +10,17 @@ from curses_reporter import CursesReporter
if __name__ == '__main__': if __name__ == '__main__':
logging.basicConfig(level=logging.INFO, format='%(message)s', filename='./copycat.log', filemode='w') logging.basicConfig(level=logging.INFO, format='%(message)s', filename='./copycat.log', filemode='w')
try: parser = argparse.ArgumentParser()
args = sys.argv[1:] parser.add_argument('--seed', type=int, default=None, help='Provide a deterministic seed for the RNG.')
initial, modified, target = args parser.add_argument('initial', type=str, help='A...')
except ValueError: parser.add_argument('modified', type=str, help='...is to B...')
print >>sys.stderr, 'Usage: %s initial modified target [iterations]' % sys.argv[0] parser.add_argument('target', type=str, help='...as C is to... what?')
sys.exit(1) options = parser.parse_args()
try: try:
window = curses.initscr() window = curses.initscr()
copycat = Copycat(reporter=CursesReporter(window)) copycat = Copycat(reporter=CursesReporter(window), rng_seed=options.seed)
copycat.run_forever(initial, modified, target) copycat.run_forever(options.initial, options.modified, options.target)
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
finally: finally:

View File

@ -1,3 +1,4 @@
import argparse
import logging import logging
import sys import sys
@ -14,20 +15,16 @@ class SimpleReporter(Reporter):
if __name__ == '__main__': if __name__ == '__main__':
logging.basicConfig(level=logging.INFO, format='%(message)s', filename='./copycat.log', filemode='w') logging.basicConfig(level=logging.INFO, format='%(message)s', filename='./copycat.log', filemode='w')
try: parser = argparse.ArgumentParser()
args = sys.argv[1:] parser.add_argument('--seed', type=int, default=None, help='Provide a deterministic seed for the RNG.')
if len(args) == 4: parser.add_argument('--iterations', type=int, default=1, help='Run the given case this many times.')
initial, modified, target = args[:-1] parser.add_argument('initial', type=str, help='A...')
iterations = int(args[-1]) parser.add_argument('modified', type=str, help='...is to B...')
else: parser.add_argument('target', type=str, help='...as C is to... what?')
initial, modified, target = args options = parser.parse_args()
iterations = 1
except ValueError:
print >>sys.stderr, 'Usage: %s initial modified target [iterations]' % sys.argv[0]
sys.exit(1)
copycat = Copycat(reporter=SimpleReporter()) copycat = Copycat(reporter=SimpleReporter(), rng_seed=options.seed)
answers = copycat.run(initial, modified, target, iterations) answers = copycat.run(options.initial, options.modified, options.target, options.iterations)
for answer, d in sorted(answers.iteritems(), key=lambda kv: kv[1]['avgtemp']): for answer, d in sorted(answers.iteritems(), key=lambda kv: kv[1]['avgtemp']):
print '%s: %d (avg time %.1f, avg temp %.1f)' % (answer, d['count'], d['avgtime'], d['avgtemp']) print '%s: %d (avg time %.1f, avg temp %.1f)' % (answer, d['count'], d['avgtime'], d['avgtemp'])