投票算法的Python库。
项目描述
简介
关于投票箱
投票箱是一个尝试实现有用投票方法的Python库。
该项目是在ULS-SIG上讨论自我组织对象网格时进行的对话和实验的结果。
依赖项
当前实现依赖于以下附加软件和/或库
Python
zope.interface
sphinx
repoze.sphinx.autointerface
附加信息
有关以下信息,请参阅章节(或者,如果您在工作目录中阅读此文件,请参阅./docs子目录)
安装
使用
安装
开发
如果您想为投票箱开发或使用我们正在工作的最新代码,您可以从源代码安装。您需要安装bzr,然后只需执行以下操作
$ bzr branch lp:ballotbox $ cd ballotbox $ sudo python setup.py install
简单安装
您可以使用setuptools的easy_install脚本来将投票箱安装到您的系统上
$ sudo easy_install ballotbox
手动下载
您可以通过访问以下URL从Python包索引手动下载源代码压缩包
您需要解压缩和gzip源代码,进入源代码目录,然后您可以执行常规操作
$ sudo python setup.py install
检查源代码
一旦安装,只要您在系统上安装了Twisted,并且trial脚本在您的PATH中,您就可以通过在任何地方执行以下操作来测试源代码
$ trial ballotbox
这将运行测试套件,并报告任何单元测试的成功和失败。
使用
以下是API使用的快速介绍。此示例中使用的投票方法是简单多数。简单多数规则投票主要用于二进制决策。以下是一些仅涉及两个选择的示例
>>> from ballotbox.ballot import BallotBox >>> from ballotbox.singlewinner.simple import MajorityRuleVoting >>> bb = BallotBox(method=MajorityRuleVoting) >>> bb.batch_votes([("alice", 10000), ("bob", 5000)]) >>> bb.get_winner() [(10000, 'alice')] >>> bb = BallotBox(method=MajorityRuleVoting) >>> bb.batch_votes([("bob", 5000), ("carol", 5001)]) >>> bb.get_winner() [(5001, 'carol')]
此方法在平局时崩溃,并且不保证可以与超过两个选择一起工作
>>> bb = BallotBox(method=MajorityRuleVoting) >>> bb.batch_votes([("alice", 8000), ("carol", 8000)]) >>> bb.get_winner() []
不会返回结果。对于超过两个候选人的边缘情况也是如此
>>> bb = BallotBox(method=MajorityRuleVoting) >>> bb.batch_votes([("alice", 5000), ("bob", 4000), ("carol", 3000)]) >>> bb.get_winner() []
待办事项
实现
[完成] 将标准类转换为使用接口。然后,在投票方法中,不再通过继承来实现它们,而是实现它们。这将使 zope.interface 成为依赖项。
[完成] 从 txULS/soom 复制多文档测试文件测试套件的代码到这里。
[完成] 添加一个新的 docs/methods 目录和每个投票方法对应的文件。
[进行中] 完成实现单胜选投票方法。
实现多胜选投票方法。
实现代理和随机投票方法。
研究基于距离的投票
特别是,基于一组偏好定义候选人的度量空间
然后计算平方和的平方根,得到 n 维距离
测试
[进行中] 为每个投票方法添加文档测试。
添加一个测试源分发的 make 目标。
创建一个临时目录。
在那里解包分发。
运行针对该目录的单元测试和文档测试。
文档
将大写文档文件改为小写(除标准文件如 README、TODO 等)。
更新 sphinx 配置文件以使用 ballotbox.meta。
在生成的文档中添加侧边栏链接。
自动生成 API 文档的 ReST 文件。
驱动此逻辑的代码应放在 ballotbox.util.docs 中。
添加一个 make 目标,导入并调用适当的函数以生成 API 文档。
更改
版本 0.1
ballotbox 的第一个版本。
ballotbox-0.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6efa54b7b6d67dea9b2637d34a145ef164777524edac21b3aa6f509087586e3f |
|
MD5 | 99fb47891f0e64dd0f5336ef0c742b2b |
|
BLAKE2b-256 | e31a430831f2c991f26d76eb4d4780eb23a82735cce4a6572d96db52ec8979db |