{ "info": { "author": "Christopher Flynn", "author_email": "crf204@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Mathematics" ], "description": "voting\n======\n\n|travis| |rtd| |codecov| |pypi| |pyversions|\n\n\n.. |travis| image:: https://img.shields.io/travis/crflynn/voting.svg\n :target: https://travis-ci.org/crflynn/voting\n\n.. |rtd| image:: https://img.shields.io/readthedocs/voting.svg\n :target: http://voting.readthedocs.io/en/latest/\n\n.. |codecov| image:: https://codecov.io/gh/crflynn/voting/branch/master/graphs/badge.svg\n :target: https://codecov.io/gh/crflynn/voting\n\n.. |pypi| image:: https://img.shields.io/pypi/v/voting.svg\n :target: https://pypi.python.org/pypi/voting\n\n.. |pyversions| image:: https://img.shields.io/pypi/pyversions/voting.svg\n :target: https://pypi.python.org/pypi/voting\n\n\nA pure Python module for election quotas, voting measures, and apportionment\nmethods.\n\nInstallation\n------------\n\nThe ``voting`` package works in Python 2.7, 3.5, 3.6 and 3.7. It is available on\npypi and can be installed using pip.\n\n.. code-block:: shell\n\n pip install voting\n\nPackage structure\n-----------------\n\n* voting\n\n * apportionment\n\n * adams\n * dhondt\n * hagenbach_bischoff\n * hamilton\n * huntington_hill\n * jefferson\n * sainte_lague\n * vinton\n * webster\n\n * diversity\n\n * berger_parker\n * general\n * gini_simpson\n * golosov\n * inverse_simpson\n * laakso_taagepera\n * renyi\n * shannon\n * simpson\n\n * proportion\n\n * adjusted_loosemore_hanby\n * dhondt\n * gallagher\n * grofman\n * least_square\n * lijphart\n * loosemore_hanby\n * rae\n * regression\n * rose\n * sainte_lague\n\n * quota\n\n * droop\n * hagenbach_bischoff\n * hare\n * imperiali\n\nExamples\n--------\n\nApportioning seats using the Huntington-Hill method.\n\n.. code-block:: python\n\n from voting import apportionment\n\n\n votes = [2560, 3315, 995, 5012]\n seats = 20\n assignments = apportionment.huntington_hill(votes, seats)\n\n\nCalculating the effective number of parties using Golosov's measure.\n\n.. code-block:: python\n\n from voting import diversity\n\n\n parties = [750, 150, 50, 50]\n effective_parties = diversity.golosov(parties)\n\n\nMeasuring the disproportionality of democratic representation using the\nSainte-Lague measure.\n\n.. code-block:: python\n\n from voting import proportion\n\n\n votes = [750, 150, 50, 50]\n seats = [80, 16, 2, 2]\n disproportionality = proportion.sainte_lague(votes, seats)\n\nDetermining the Droop quota\n\n.. code-block:: python\n\n from voting import quota\n\n\n votes = 1000\n seats = 20\n election_quota = quota.droop(votes, seats)\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/crflynn/voting", "keywords": "voting,disproportionality,apportionment,diversity,election", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "voting", "package_url": "https://pypi.org/project/voting/", "platform": "", "project_url": "https://pypi.org/project/voting/", "project_urls": { "Homepage": "https://github.com/crflynn/voting", "Repository": "https://github.com/crflynn/voting" }, "release_url": "https://pypi.org/project/voting/0.1.3/", "requires_dist": null, "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "summary": "Voting and election related functions.", "version": "0.1.3" }, "last_serial": 5969484, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "378f889176a65ed51e609dbe5834e947", "sha256": "25d35bfbfd84677f53419f058ccd8cbf253a14c85345b1c6fc8e30391b5db1ca" }, "downloads": -1, "filename": "voting-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "378f889176a65ed51e609dbe5834e947", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8228, "upload_time": "2018-01-09T03:51:19", "url": "https://files.pythonhosted.org/packages/24/91/915f6e09d7cb06e2a4e3e531185c62c40538b362d21b871e7f41f6c44a9b/voting-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d0ecc3b30011e5df20f0000cf8b4a3c", "sha256": "3b891d04dd407b52cd8cd223dece0341dadc86b15c6b137ae4750c54294ad09d" }, "downloads": -1, "filename": "voting-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4d0ecc3b30011e5df20f0000cf8b4a3c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5807, "upload_time": "2018-01-09T03:51:21", "url": "https://files.pythonhosted.org/packages/27/15/8a97153ba054c5b9b71bdce47c43498bb33234d3b65ae80a9042085387c1/voting-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "de7bf8fbf7e55e45113c18a20d99ebd4", "sha256": "30291ab121529faf00c942e7dbf251b60a17586a7a78f92b47b6b8f6231754d5" }, "downloads": -1, "filename": "voting-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "de7bf8fbf7e55e45113c18a20d99ebd4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8232, "upload_time": "2018-01-09T03:57:33", "url": "https://files.pythonhosted.org/packages/62/3d/37edd52494a1ccc0ab0dcc2f1d84d86418c2ab69a90c27c362b84eeb5ccf/voting-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85498743c8873174641136ba33efb1c6", "sha256": "243388dcfa064b9b4aab52bf2a51673794f9efdd683e019a35f9a3f6e056fcc6" }, "downloads": -1, "filename": "voting-0.1.1.tar.gz", "has_sig": false, "md5_digest": "85498743c8873174641136ba33efb1c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6664, "upload_time": "2018-01-09T03:57:34", "url": "https://files.pythonhosted.org/packages/ae/c0/23a29ac8840e36da99f0a0643a15d595f21f706347a9f718aac89ffcb706/voting-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "571865454485c14577874a8e5d6c3b71", "sha256": "7eb07e3e2ac4dda446163c3b43235ffba07f1fecc6fd3318e5e9bd854b9ea921" }, "downloads": -1, "filename": "voting-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "571865454485c14577874a8e5d6c3b71", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 21263, "upload_time": "2019-07-12T02:19:05", "url": "https://files.pythonhosted.org/packages/fa/e2/b1a80a371ca2ecdcb41d089b502332d171f529bd373adf15d56de209987b/voting-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d19bef0c34cdecd15452957cffd181f5", "sha256": "717d72daa15bc3d01592a69d13ebda27bebc311c70d466cc5850da6691beb4d1" }, "downloads": -1, "filename": "voting-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d19bef0c34cdecd15452957cffd181f5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 7115, "upload_time": "2019-07-12T02:19:07", "url": "https://files.pythonhosted.org/packages/82/ce/e7eb325d86590f71e1fc678316870696f6f7e8c006b375ada470019d0b7f/voting-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "31c0c0aa4aff462eca47cdc986afff12", "sha256": "a9ccedf7e0732f73a8da22e457b271e36de6d2b1d12acb9daa580754988a4632" }, "downloads": -1, "filename": "voting-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "31c0c0aa4aff462eca47cdc986afff12", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 7993, "upload_time": "2019-10-14T02:19:49", "url": "https://files.pythonhosted.org/packages/b8/85/4455a9ffb8cf7dd3e1e6f1da0f979f4de7054188703bb6108667ef79ea6f/voting-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea896e5fcce8b52debc2f9add4b79cc4", "sha256": "33cd551393e32d800a713b75628570d4fce652f5e10c607cf9d29cbffa56b8cf" }, "downloads": -1, "filename": "voting-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ea896e5fcce8b52debc2f9add4b79cc4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 7703, "upload_time": "2019-10-14T02:19:50", "url": "https://files.pythonhosted.org/packages/83/be/f16c33fd38b699ddf5899fbcd0a5725fbce81808342a260a3c43421061d4/voting-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "31c0c0aa4aff462eca47cdc986afff12", "sha256": "a9ccedf7e0732f73a8da22e457b271e36de6d2b1d12acb9daa580754988a4632" }, "downloads": -1, "filename": "voting-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "31c0c0aa4aff462eca47cdc986afff12", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 7993, "upload_time": "2019-10-14T02:19:49", "url": "https://files.pythonhosted.org/packages/b8/85/4455a9ffb8cf7dd3e1e6f1da0f979f4de7054188703bb6108667ef79ea6f/voting-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea896e5fcce8b52debc2f9add4b79cc4", "sha256": "33cd551393e32d800a713b75628570d4fce652f5e10c607cf9d29cbffa56b8cf" }, "downloads": -1, "filename": "voting-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ea896e5fcce8b52debc2f9add4b79cc4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 7703, "upload_time": "2019-10-14T02:19:50", "url": "https://files.pythonhosted.org/packages/83/be/f16c33fd38b699ddf5899fbcd0a5725fbce81808342a260a3c43421061d4/voting-0.1.3.tar.gz" } ] }