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
RunasSudo cad1e324d9
Add Meek STV test case
2021-01-14 00:47:44 +11:00
docs Implement Meek STV 2021-01-08 19:16:56 +11:00
html Display number of candidates/seats in JS report. 2021-01-11 03:01:51 +11:00
pyRCV2 Fix bug/typo leading to incorrect --ties prompt behaviour in Python 2021-01-14 00:16:36 +11:00
tests Add Meek STV test case 2021-01-14 00:47:44 +11: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
COPYING Initial commit 2020-10-17 18:45:12 +11:00
README.md Add printable reports 2021-01-10 18:42:47 +11:00
build.sh Begin implementation of tie handling 2020-12-23 22:37:48 +11:00
requirements.txt Add test coverage reporting 2021-01-12 03:15:58 +11:00

README.md

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 or exact rational numbers
  • different tie breaking rules (backwards, random, manual) with auditable deterministic random number generation
  • 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.