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!'
>> +
>> 
> 

Reply via email to