Python/JavaScript framework for counting various preferential voting elections
This repository has been archived on 2021-05-25. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
2021-05-25 01:34:26 +10:00
docs Adjust RNG algorithm 2021-05-23 01:44:03 +10:00
html Fix calculation of table widths for print view 2021-05-25 01:34:26 +10:00
pyRCV2 Visual improvements to HTML/JS interface 2021-05-25 01:12:47 +10:00
tests Visual improvements to HTML/JS interface 2021-05-25 01:12:47 +10:00
.coveragerc Add test coverage reporting 2021-01-12 03:15:58 +11:00
.gitignore Add test coverage reporting 2021-01-12 03:15:58 +11:00
build.sh Begin implementation of tie handling 2020-12-23 22:37:48 +11:00
COPYING Initial commit 2020-10-17 18:45:12 +11:00
README.md Add documentation on constraints 2021-05-23 01:43:35 +10:00
requirements.txt Reformat requirements.txt 2021-01-25 20:41:47 +11:00

pyRCV2

pyRCV2 is an application for counting various preferential voting elections.

pyRCV2 may be used in a number of different ways:

  • as an online web application, no installation or special software required, at https://yingtongli.me/rcv/
  • as a standalone Python command line application
  • as a library within another Python application

Features

pyRCV2 accepts data in the BLT file format, and can count votes using:

pyRCV2 is highly customisable, including options for:

  • different quotas and quota rules (e.g. exact Droop, Hare) or progressively reducing quota
  • calculations using fixed-point arithmetic, guarded fixed-point (quasi-exact) or exact rational numbers
  • different tie breaking rules (backwards, random, manual) with auditable deterministic random number generation
  • multiple constraints (e.g. affirmative action rules)
  • extensible API for other counting methods

Online usage

After preparing the BLT file, head to https://yingtongli.me/rcv/. Select the BLT file, and click Count. pyRCV2 will count the election and display the results in a count sheet. See here for more detailed instructions.

By clicking Show advanced options, you can customise the options used for the count. A detailed explanation of the various options can be found here.

Once the count is complete, you can click Print result to generate a printable result report.

Command line usage

pyRCV2 may also be invoked as a command line application. Run python -m pyRCV2 --help to view help.

For example, run python -m pyRCV2 stv path/to/blt_file.blt --ties backwards --ties random --random-seed foobar.