+1 (I've not used argparse much)
I'll fold in ;) On Jun 12, 2013, at 10:40 PM, Jake Farrell <[email protected]> wrote: > While calculating the results for a vote today ran into an issue with the > stv_tool which had hardcoded values within it for the total number of seats. > The following patch adds argparse and makes the number of seats as an > available option > > -Jake > > > Help print out: > > usage: stv_tool.py [-h] [-s SEATS] [-v] raw_file > > Calculate a winner for a vote > > positional arguments: > raw_file > > optional arguments: > -h, --help show this help message and exit > -s SEATS, --seats SEATS > Number of seats available, default 9 > -v, --verbose Enable verbose logging > > > > > Patch: > > > --- /home/voter/steve/monitoring/stv_tool.py 2013-05-13 14:42:46.407723615 > +0000 > +++ stv_tool.py 2013-06-13 02:21:16.154038271 +0000 > @@ -31,6 +31,7 @@ > import os.path > import random > import ConfigParser > +import argparse > import re > > ELECTED = 1 > @@ -377,24 +378,35 @@ > print fmt % args > > > -def usage(): > - print 'USAGE: %s [-v] RAW_VOTES_FILE' % (os.path.basename(sys.argv[0]),) > - sys.exit(1) > +if __name__ == '__main__': > + parser = argparse.ArgumentParser(description="Calculate a winner for a > vote") > > + parser.add_argument('raw_file') > > -if __name__ == '__main__': > - if len(sys.argv) < 2 or len(sys.argv) > 3: > - usage() > + parser.add_argument("-s", "--seats", dest="seats", > + help="Number of seats available, default 9", > + default=9) > + > + parser.add_argument("-v", "--verbose", dest="verbose", action="store_true", > + help="Enable verbose logging", default=False) > > - if sys.argv[1] == '-v': > - VERBOSE = True > + args = parser.parse_args() > + > + VERBOSE = args.verbose > + votefile = args.raw_file > + num_seats = args.seats > > - votefile = sys.argv[-1] > if not os.path.exists(votefile): > - usage() > + parser.print_help() > + sys.exit(1) > + > + nominees = os.path.join(os.path.dirname(votefile), 'board_nominations.ini') > + if not os.path.exists(nominees): > + print 'Error: board_nominations.ini could not be found at %s' % nominees > + sys.exit(1) > > names, votes = load_votes(votefile) > > - ### take the count from options? (for whatif.cgi) > - run_vote(names, votes, 9) > + run_vote(names, votes, num_seats) > print 'Done!' > + >
