Skip to main content

pref_voting is a Python packaging that contains tools to reason about election profiles and margin graphs, and implementations of a variety of preferential voting methods.

Project description

pref_voting

Installation

With pip package manager:

pip install pref_voting

Documentation

Online documentation is available at https://pref_voting.readthedocs.io.

Profiles and Voting Methods

A profile (of linear orders over the candidates) is created by initializing a Profile class object. This needs a list of rankings (each ranking is a tuple of numbers), the number of candidates, and a list giving the number of each ranking in the profile:

from pref_voting.profiles import Profile

rankings = [(0, 1, 2, 3), (2, 3, 1, 0), (3, 1, 2, 0), (1, 2, 0, 3), (1, 3, 2, 0)]
rcounts = [5, 3, 2, 4, 3]

prof = Profile(rankings, rcounts=rcounts)

The function generate_profile is used to generate a profile for a given number of candidates and voters:

from pref_voting.generate_profiles import generate_profile

# generate a profile using the Impartial Culture probability model
prof = generate_profile(3, 4) # prof is a Profile object

# generate a profile using the Impartial Anonymous Culture probability model
prof = generate_profile(3, 4, probmod = "IAC") # prof is a Profile object 
from pref_voting.profiles import Profile
from pref_voting.voting_methods import *

prof = Profile(rankings, num_cands, rcounts=rcounts)
print(f"{split_cycle.name} winners:  {split_cycle(prof)}")
split_cycle.display(prof)

Versions

  • v0.1.10 (2022-08-09): Initial release
  • v0.1.13 (2022-11-05): Minor updates and bug fixes
  • v0.1.14 (2022-12-19): Add plurality_scores to ProfileWithTies; add generate ceots function; bug fixes
  • v0.1.23 (2022-12-27): Add instant_runoff_for_truncated_linear_orders and functions to truncate overvotes in a ProfileWithTies, add smith_irv_put, document analysis functions
  • v0.1.25 (2023-1-11): Add condorcet_irv, condorcet_irv_put; Update documentation; add axioms.py; add display and equality to Ranking class; fix enumerate ceots functions
  • v0.1.27 (2023-2-07): Add Borda for ProfileWithTies
  • v0.2 (2023-2-15): Add Benham, add anonymize to Profile method, comment out numba to make compatible with Python 3.11, add add_unranked_candidates to ProfileWithTies

Questions?

Feel free to send me an email if you have questions about the project.

License

MIT

Project details


Release history Release notifications | RSS feed

This version

0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pref_voting-0.2.tar.gz (78.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pref_voting-0.2-py3-none-any.whl (83.5 kB view details)

Uploaded Python 3

File details

Details for the file pref_voting-0.2.tar.gz.

File metadata

  • Download URL: pref_voting-0.2.tar.gz
  • Upload date:
  • Size: 78.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.9 Darwin/22.3.0

File hashes

Hashes for pref_voting-0.2.tar.gz
Algorithm Hash digest
SHA256 a03d2cb8a78d4451c4e43cc43d9cb79b10ef5b5e884e59c1b6c4638eeec37d6d
MD5 1a9500420f328dd78e490ecff1d037af
BLAKE2b-256 327e2252579563ec9a18c5dcc487f0a939086359c0f36cca305bd6d1b4f771d7

See more details on using hashes here.

File details

Details for the file pref_voting-0.2-py3-none-any.whl.

File metadata

  • Download URL: pref_voting-0.2-py3-none-any.whl
  • Upload date:
  • Size: 83.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.9 Darwin/22.3.0

File hashes

Hashes for pref_voting-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 187db52fc21926f0426140970b48868c5a848d2710d5f84dd437abc36e1f976c
MD5 b1f96e551f13c3578ef5390aec5ea1c0
BLAKE2b-256 bb58c3a2d793ad5400b6816a14ed5851793064cb492435333acd7d891a840154

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page