Package: abcvoting
abcvotingDocumentationInstallationHow to cite the abcvoting libraryAcknowledgements and contributors► abcvoting web appA Python library of approval-based committee (ABC) rulesApproval-basedcommittee rules (ABC rules) are voting methods for selecting a committee, i.e., a fixed-size subset of candidates.
ABC rules are also known as approval-based multi-winner rules.
The input of such rules areapproval ballots.
We recommend the book
(Multi-Winner Voting with Approval Preferences)
by Lackner and Skowron [2] as a detailed introduction to ABC rules and related research directions.
In addition, thesurvey by Faliszewski et al.[1]
is useful as a more general introduction to committee voting (not limited to approval ballots).The following ABC rules are implemented:Approval Voting (AV)Satisfaction Approval Voting (SAV)Proportional Approval Voting (PAV)Sequential Proportional Approval Voting (seq-PAV)Reverse Sequential Proportional Approval Voting (revseq-PAV)Approval Chamberlin-Courant (CC)Phragmén's sequential ruleMonroe's ruleMinimax Approval Voting (MAV)Greedy MonroeMethod of Equal Shares (Rule X)Phragmén's First Method (Eneström's Method)and many more ...In addition, one can verify axiomatic properties such asJustified Representation (JR)Propotional Justified Representation (PJR)Extended Justified Representation (EJR)PriceabilityThe core propertyInstead of using the abcvoting Python library, you can also use theabcvoting web applicationby Dominik Peters.InstallationAs simple as:pipinstallabcvotingFurther details can be foundhere.DevelopmentInstall all dependencies including development requirements and the abcvoting package indevelopment mode:pipinstall-e.[dev]Basic unit tests can be run by excluding tests which require additional dependencies:pytest-m"not mipgurobi and not gmpy2 and not slow"tests/For development, configure the black formatter and pre-commit hooks - see below. Also installing
all optional dependencies is recommended.A development package is build for every commit on the master branch and uploaded to the test
instance of PyPI. It can be installed using the following command:python3-mpipinstall--index-urlhttps://test.pypi.org/simple/--extra-index-urlhttps://pypi.org/simpleabcvotingBlack formattingCode needs to be formatted using theblack formatter. This is
checked by Github actions.Configure your editorto run the
black formatter.Pre-commit hooksPre-commit hooks are not required, but they are recommended for development.Pre-commitis used to manage and maintain pre-commit hooks. Install
pre-commit (e.g. via apt, conda or pip) and then run$ pre-commit installto install the hooks.References[1] Piotr Faliszewski, Piotr Skowron, Arkadii Slinko, and Nimrod Talmon. Multiwinner voting: A
new challenge for social choice theory. In Ulle Endriss, editor, Trends in Computational Social
Choice, chapter 2, pages 27–47. AI Access, 2017.http://research.illc.uva.nl/COST-IC1205/BookDocs/Chapters/TrendsCOMSOC-02.pdf[2] Lackner, Martin, and Piotr Skowron. "Multi-Winner Voting with Approval Preferences".
Springer International Publishing, SpringerBriefs in Intelligent Systems , 2023.https://link.springer.com/book/10.1007/978-3-031-09016-5