This program manages the voting for CompSoc elections, using output from the Google Form.
$ python main.py -h
usage: main.py [-h] VOTES_CSV MEMBERS_CSV ROLES_JSON
CompSoc voting tool.
positional arguments:
VOTES_CSV Location of CSV file containing votes.
MEMBERS_CSV Location of CSV file containing membership for the current
year.
ROLES_JSON Location of JSON file containing description of the roles in
the comittee.
optional arguments:
-h, --help show this help message and exit
- STV ranked choice voting (using Meek's Method to count surplus votes).
- Validation of votes to ensure duplicate votes are not counted, and that only members votes are counted.
- Extensibility for new roles, with the ability to detect if roles may be held in conjunction with any other roles.
- CLI for interacting with all these elements.
See the corresponding modules, all functions should be documented in thorough detail including on things like the method used to count votes, how votes are parsed, edges cases, and exceptions.