Patch attached, added type=int to patch as well. note: patch is a diff against /home/voter/steve/monitoring/stv_tool.py as I dont have access to the steve repo. Let me know if anything else need to be looked at
-Jake On Thu, Jun 13, 2013 at 8:17 AM, Jim Jagielski <[email protected]> wrote: > I found that I needed ' type=int,' for seats for it to work > (string->int issues, 'natch) > > On Jun 13, 2013, at 8:39 AM, Jim Jagielski <[email protected]> wrote: > > > +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!' > >> + > >> > > > >
