Ouch. Hard-coding sucks :-)  (and yes, that hard-code and that script
is my fault...)

The patch looks good, on cursory review. I'll look closer later
tonite/tomorrow unless somebody beats me to it.

Thanks!
-g


On Wed, 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