election-methods@mailman.electorama.com

Technical discussion of election methods

View all threads

Votelib: RFC for Python library

Jan Šimbera
Sat, Jun 13, 2020 9:23 PM

Dear all,
I would like to introduce you to a late pet project of mine - Votelib - and
kindly ask you for any feedback you might have.

Votelib is a Python package to evaluate results of common election methods.
It focuses on those currently in active use, but some prospective methods
are also implemented. At the moment, it supports e.g. most known largest
remainder and highest averages proportional systems, transferable vote with
Hare and Gregory transfers, Condorcet methods such as Schulze or ranked
pairs, Majority Judgment, variants of Borda count, score voting including
STAR, approval methods including PAV or SPAV, Bucklin voting or open party
list evaluation.

It is written in pure Python with no package dependencies, which means it
is not lightning fast at times, but it also ensures high portability (for
all it takes it can even run in the browser through Brython). It is
available from PyPI (https://pypi.org/project/votelib/), the code is hosted
on https://github.com/simberaj/votelib/ under the MIT license and the
documentation, including some real world examples, at
https://votelib.readthedocs.io/en/stable/.

If you are interested, I will greatly appreciate it if you go through it or
try to use it and give me any feedback you might have. If you create some
code or evaluate some results using it, I will gladly integrate that into
the library's test suite. If you find some bugs, please report them at the
GitHub issue tracker. I am neither a voting systems researcher nor a
mathematician, so if you have any general comments on the terminology or
concepts used, I will be glad to hear them. And - what would be most
wonderful - if you wanted to join in with the library's development, such
as implementing one of the many interesting systems I found on Electowiki,
I will gladly accept your pull requests!

Looking forward to hearing from you,
Jan

Dear all, I would like to introduce you to a late pet project of mine - Votelib - and kindly ask you for any feedback you might have. Votelib is a Python package to evaluate results of common election methods. It focuses on those currently in active use, but some prospective methods are also implemented. At the moment, it supports e.g. most known largest remainder and highest averages proportional systems, transferable vote with Hare and Gregory transfers, Condorcet methods such as Schulze or ranked pairs, Majority Judgment, variants of Borda count, score voting including STAR, approval methods including PAV or SPAV, Bucklin voting or open party list evaluation. It is written in pure Python with no package dependencies, which means it is not lightning fast at times, but it also ensures high portability (for all it takes it can even run in the browser through Brython). It is available from PyPI (https://pypi.org/project/votelib/), the code is hosted on https://github.com/simberaj/votelib/ under the MIT license and the documentation, including some real world examples, at https://votelib.readthedocs.io/en/stable/. If you are interested, I will greatly appreciate it if you go through it or try to use it and give me any feedback you might have. If you create some code or evaluate some results using it, I will gladly integrate that into the library's test suite. If you find some bugs, please report them at the GitHub issue tracker. I am neither a voting systems researcher nor a mathematician, so if you have any general comments on the terminology or concepts used, I will be glad to hear them. And - what would be most wonderful - if you wanted to join in with the library's development, such as implementing one of the many interesting systems I found on Electowiki, I will gladly accept your pull requests! Looking forward to hearing from you, Jan