abcvoting 2.16.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. abcvoting-2.16.0/.flake8 +15 -0
  2. abcvoting-2.16.0/.github/codecov.yml +33 -0
  3. abcvoting-2.16.0/.github/workflows/build.yml +44 -0
  4. abcvoting-2.16.0/.github/workflows/piptest.yml +52 -0
  5. abcvoting-2.16.0/.github/workflows/piptestfull.yml +40 -0
  6. abcvoting-2.16.0/.github/workflows/unittests.yml +95 -0
  7. abcvoting-2.16.0/.gitignore +88 -0
  8. abcvoting-2.16.0/.pre-commit-config.yaml +11 -0
  9. abcvoting-2.16.0/.readthedocs.yaml +26 -0
  10. abcvoting-2.16.0/CITATION.cff +24 -0
  11. abcvoting-2.16.0/CONTRIBUTING.md +17 -0
  12. abcvoting-2.16.0/LICENSE +21 -0
  13. abcvoting-2.16.0/PKG-INFO +193 -0
  14. abcvoting-2.16.0/README.md +154 -0
  15. abcvoting-2.16.0/abcvoting/__init__.py +0 -0
  16. abcvoting-2.16.0/abcvoting/abcrules.py +4853 -0
  17. abcvoting-2.16.0/abcvoting/abcrules_gurobi.py +877 -0
  18. abcvoting-2.16.0/abcvoting/abcrules_mip.py +555 -0
  19. abcvoting-2.16.0/abcvoting/abcrules_ortools.py +285 -0
  20. abcvoting-2.16.0/abcvoting/abcrules_pulp.py +789 -0
  21. abcvoting-2.16.0/abcvoting/fileio.py +508 -0
  22. abcvoting-2.16.0/abcvoting/generate.py +1009 -0
  23. abcvoting-2.16.0/abcvoting/misc.py +449 -0
  24. abcvoting-2.16.0/abcvoting/output.py +236 -0
  25. abcvoting-2.16.0/abcvoting/preferences.py +379 -0
  26. abcvoting-2.16.0/abcvoting/properties.py +1717 -0
  27. abcvoting-2.16.0/abcvoting/scores.py +549 -0
  28. abcvoting-2.16.0/abcvoting.egg-info/PKG-INFO +193 -0
  29. abcvoting-2.16.0/abcvoting.egg-info/SOURCES.txt +619 -0
  30. abcvoting-2.16.0/abcvoting.egg-info/dependency_links.txt +1 -0
  31. abcvoting-2.16.0/abcvoting.egg-info/requires.txt +19 -0
  32. abcvoting-2.16.0/abcvoting.egg-info/top_level.txt +1 -0
  33. abcvoting-2.16.0/docs/Makefile +20 -0
  34. abcvoting-2.16.0/docs/_static/logo.png +0 -0
  35. abcvoting-2.16.0/docs/abcrules.rst +11 -0
  36. abcvoting-2.16.0/docs/acks.rst +23 -0
  37. abcvoting-2.16.0/docs/conf.py +77 -0
  38. abcvoting-2.16.0/docs/fileio.rst +6 -0
  39. abcvoting-2.16.0/docs/generate.rst +10 -0
  40. abcvoting-2.16.0/docs/howtocite.rst +34 -0
  41. abcvoting-2.16.0/docs/index.rst +54 -0
  42. abcvoting-2.16.0/docs/installation.rst +57 -0
  43. abcvoting-2.16.0/docs/intro-abcrules.rst +83 -0
  44. abcvoting-2.16.0/docs/intro-computing-winning-committees.rst +147 -0
  45. abcvoting-2.16.0/docs/intro-example.rst +52 -0
  46. abcvoting-2.16.0/docs/intro-properties.rst +69 -0
  47. abcvoting-2.16.0/docs/makedoc.sh +4 -0
  48. abcvoting-2.16.0/docs/misc.rst +10 -0
  49. abcvoting-2.16.0/docs/output.rst +6 -0
  50. abcvoting-2.16.0/docs/preferences.rst +10 -0
  51. abcvoting-2.16.0/docs/properties.rst +10 -0
  52. abcvoting-2.16.0/docs/requirements.txt +14 -0
  53. abcvoting-2.16.0/docs/scores.rst +7 -0
  54. abcvoting-2.16.0/examples/__init__.py +0 -0
  55. abcvoting-2.16.0/examples/abcbook/__init__.py +0 -0
  56. abcvoting-2.16.0/examples/abcbook/example201.py +36 -0
  57. abcvoting-2.16.0/examples/abcbook/example202.py +47 -0
  58. abcvoting-2.16.0/examples/abcbook/example203.py +48 -0
  59. abcvoting-2.16.0/examples/abcbook/example204.py +48 -0
  60. abcvoting-2.16.0/examples/abcbook/example205.py +75 -0
  61. abcvoting-2.16.0/examples/abcbook/example206.py +32 -0
  62. abcvoting-2.16.0/examples/abcbook/example207.py +53 -0
  63. abcvoting-2.16.0/examples/abcbook/example208.py +50 -0
  64. abcvoting-2.16.0/examples/abcbook/example209.py +48 -0
  65. abcvoting-2.16.0/examples/abcbook/example210.py +53 -0
  66. abcvoting-2.16.0/examples/abcbook/example211.py +47 -0
  67. abcvoting-2.16.0/examples/abcbook/example212.py +41 -0
  68. abcvoting-2.16.0/examples/abcbook/example213.py +35 -0
  69. abcvoting-2.16.0/examples/abcbook/example214.py +35 -0
  70. abcvoting-2.16.0/examples/abcbook/propositionA2.py +98 -0
  71. abcvoting-2.16.0/examples/abcbook/propositionA3.py +380 -0
  72. abcvoting-2.16.0/examples/abcbook/propositionA4.py +210 -0
  73. abcvoting-2.16.0/examples/abcbook/remark02.py +38 -0
  74. abcvoting-2.16.0/examples/allrules.py +27 -0
  75. abcvoting-2.16.0/examples/axiomatic_properties.py +38 -0
  76. abcvoting-2.16.0/examples/generating_random_profiles.py +68 -0
  77. abcvoting-2.16.0/examples/handling_preflib_files.py +48 -0
  78. abcvoting-2.16.0/examples/preflib-files/example.toi +22 -0
  79. abcvoting-2.16.0/examples/preflib-files/new_example.cat +24 -0
  80. abcvoting-2.16.0/examples/simple.py +19 -0
  81. abcvoting-2.16.0/paper/paper-joss.pdf +0 -0
  82. abcvoting-2.16.0/paper/paper.bib +120 -0
  83. abcvoting-2.16.0/paper/paper.md +119 -0
  84. abcvoting-2.16.0/pyproject.toml +128 -0
  85. abcvoting-2.16.0/setup.cfg +4 -0
  86. abcvoting-2.16.0/tests/conftest.py +22 -0
  87. abcvoting-2.16.0/tests/data/poland_lodz_2020_mileszki.pb +986 -0
  88. abcvoting-2.16.0/tests/data/poland_lodz_2020_nad-nerem.pb +638 -0
  89. abcvoting-2.16.0/tests/data/poland_lodz_2020_nowosolna.pb +1469 -0
  90. abcvoting-2.16.0/tests/data/test1.toi +22 -0
  91. abcvoting-2.16.0/tests/data/test2.soi +20 -0
  92. abcvoting-2.16.0/tests/data/test3.toc +21 -0
  93. abcvoting-2.16.0/tests/data/test4.cat +26 -0
  94. abcvoting-2.16.0/tests/data/test5.cat +29 -0
  95. abcvoting-2.16.0/tests/data/test6.abc.yaml +11 -0
  96. abcvoting-2.16.0/tests/data/test7.abc.yaml +4 -0
  97. abcvoting-2.16.0/tests/data/test8.abc.yaml +7 -0
  98. abcvoting-2.16.0/tests/data-fail/test1.abc.yaml +4 -0
  99. abcvoting-2.16.0/tests/data-fail/test1.toi +12 -0
  100. abcvoting-2.16.0/tests/data-fail/test2.abc.yaml +6 -0
  101. abcvoting-2.16.0/tests/data-fail/test2.soi +10 -0
  102. abcvoting-2.16.0/tests/data-fail/test3.abc.yaml +11 -0
  103. abcvoting-2.16.0/tests/data-fail/test3.toc +13 -0
  104. abcvoting-2.16.0/tests/data-fail/test6.soi +10 -0
  105. abcvoting-2.16.0/tests/data-fail/test7.toi +13 -0
  106. abcvoting-2.16.0/tests/data-fail/test8.soi +11 -0
  107. abcvoting-2.16.0/tests/expected_output/test_abcbook_example01_py +14 -0
  108. abcvoting-2.16.0/tests/expected_output/test_abcbook_example02_py +50 -0
  109. abcvoting-2.16.0/tests/expected_output/test_abcbook_example03_py +28 -0
  110. abcvoting-2.16.0/tests/expected_output/test_abcbook_example04_py +28 -0
  111. abcvoting-2.16.0/tests/expected_output/test_abcbook_example05_py +134 -0
  112. abcvoting-2.16.0/tests/expected_output/test_abcbook_example06_py +59 -0
  113. abcvoting-2.16.0/tests/expected_output/test_abcbook_example07_py +33 -0
  114. abcvoting-2.16.0/tests/expected_output/test_abcbook_example08_py +35 -0
  115. abcvoting-2.16.0/tests/expected_output/test_abcbook_example09_py +54 -0
  116. abcvoting-2.16.0/tests/expected_output/test_abcbook_example10_py +34 -0
  117. abcvoting-2.16.0/tests/expected_output/test_abcbook_example11_py +62 -0
  118. abcvoting-2.16.0/tests/expected_output/test_abcbook_example12_py +73 -0
  119. abcvoting-2.16.0/tests/expected_output/test_abcbook_example13_py +35 -0
  120. abcvoting-2.16.0/tests/expected_output/test_abcbook_example14_py +35 -0
  121. abcvoting-2.16.0/tests/expected_output/test_abcbook_propositionA2_py +277 -0
  122. abcvoting-2.16.0/tests/expected_output/test_abcbook_propositionA3_py +460 -0
  123. abcvoting-2.16.0/tests/expected_output/test_abcbook_propositionA4_py +240 -0
  124. abcvoting-2.16.0/tests/expected_output/test_abcbook_remark02_py +57 -0
  125. abcvoting-2.16.0/tests/expected_output/test_allrules_py +282 -0
  126. abcvoting-2.16.0/tests/expected_output/test_axiomatic_properties +48 -0
  127. abcvoting-2.16.0/tests/expected_output/test_axiomatic_properties.new +8 -0
  128. abcvoting-2.16.0/tests/expected_output/test_generating_random_profiles_py +8 -0
  129. abcvoting-2.16.0/tests/expected_output/test_handling_preflib_files_py +43 -0
  130. abcvoting-2.16.0/tests/expected_output/test_simple_py +17 -0
  131. abcvoting-2.16.0/tests/test_abcrules.py +1743 -0
  132. abcvoting-2.16.0/tests/test_examples.py +183 -0
  133. abcvoting-2.16.0/tests/test_fileio.py +214 -0
  134. abcvoting-2.16.0/tests/test_generate.py +195 -0
  135. abcvoting-2.16.0/tests/test_instances/generate_unittest_instances.py +160 -0
  136. abcvoting-2.16.0/tests/test_instances/instanceL0000.abc.yaml +166 -0
  137. abcvoting-2.16.0/tests/test_instances/instanceL0001.abc.yaml +170 -0
  138. abcvoting-2.16.0/tests/test_instances/instanceL0002.abc.yaml +169 -0
  139. abcvoting-2.16.0/tests/test_instances/instanceL0003.abc.yaml +171 -0
  140. abcvoting-2.16.0/tests/test_instances/instanceL0004.abc.yaml +171 -0
  141. abcvoting-2.16.0/tests/test_instances/instanceL0005.abc.yaml +171 -0
  142. abcvoting-2.16.0/tests/test_instances/instanceL0006.abc.yaml +169 -0
  143. abcvoting-2.16.0/tests/test_instances/instanceL0007.abc.yaml +173 -0
  144. abcvoting-2.16.0/tests/test_instances/instanceL0008.abc.yaml +173 -0
  145. abcvoting-2.16.0/tests/test_instances/instanceL0009.abc.yaml +175 -0
  146. abcvoting-2.16.0/tests/test_instances/instanceL0010.abc.yaml +173 -0
  147. abcvoting-2.16.0/tests/test_instances/instanceL0011.abc.yaml +169 -0
  148. abcvoting-2.16.0/tests/test_instances/instanceL0012.abc.yaml +166 -0
  149. abcvoting-2.16.0/tests/test_instances/instanceL0013.abc.yaml +171 -0
  150. abcvoting-2.16.0/tests/test_instances/instanceL0014.abc.yaml +169 -0
  151. abcvoting-2.16.0/tests/test_instances/instanceL0015.abc.yaml +170 -0
  152. abcvoting-2.16.0/tests/test_instances/instanceL0016.abc.yaml +172 -0
  153. abcvoting-2.16.0/tests/test_instances/instanceL0017.abc.yaml +167 -0
  154. abcvoting-2.16.0/tests/test_instances/instanceL0018.abc.yaml +172 -0
  155. abcvoting-2.16.0/tests/test_instances/instanceL0019.abc.yaml +172 -0
  156. abcvoting-2.16.0/tests/test_instances/instanceL0020.abc.yaml +168 -0
  157. abcvoting-2.16.0/tests/test_instances/instanceL0021.abc.yaml +170 -0
  158. abcvoting-2.16.0/tests/test_instances/instanceL0022.abc.yaml +167 -0
  159. abcvoting-2.16.0/tests/test_instances/instanceL0023.abc.yaml +170 -0
  160. abcvoting-2.16.0/tests/test_instances/instanceL0024.abc.yaml +167 -0
  161. abcvoting-2.16.0/tests/test_instances/instanceL0025.abc.yaml +167 -0
  162. abcvoting-2.16.0/tests/test_instances/instanceL0026.abc.yaml +168 -0
  163. abcvoting-2.16.0/tests/test_instances/instanceL0027.abc.yaml +170 -0
  164. abcvoting-2.16.0/tests/test_instances/instanceL0028.abc.yaml +172 -0
  165. abcvoting-2.16.0/tests/test_instances/instanceL0029.abc.yaml +168 -0
  166. abcvoting-2.16.0/tests/test_instances/instanceL0030.abc.yaml +170 -0
  167. abcvoting-2.16.0/tests/test_instances/instanceL0031.abc.yaml +170 -0
  168. abcvoting-2.16.0/tests/test_instances/instanceL0032.abc.yaml +168 -0
  169. abcvoting-2.16.0/tests/test_instances/instanceL0033.abc.yaml +174 -0
  170. abcvoting-2.16.0/tests/test_instances/instanceL0034.abc.yaml +168 -0
  171. abcvoting-2.16.0/tests/test_instances/instanceL0035.abc.yaml +170 -0
  172. abcvoting-2.16.0/tests/test_instances/instanceL0036.abc.yaml +166 -0
  173. abcvoting-2.16.0/tests/test_instances/instanceL0037.abc.yaml +174 -0
  174. abcvoting-2.16.0/tests/test_instances/instanceL0038.abc.yaml +171 -0
  175. abcvoting-2.16.0/tests/test_instances/instanceL0039.abc.yaml +171 -0
  176. abcvoting-2.16.0/tests/test_instances/instanceL0040.abc.yaml +171 -0
  177. abcvoting-2.16.0/tests/test_instances/instanceL0041.abc.yaml +171 -0
  178. abcvoting-2.16.0/tests/test_instances/instanceL0042.abc.yaml +171 -0
  179. abcvoting-2.16.0/tests/test_instances/instanceL0043.abc.yaml +179 -0
  180. abcvoting-2.16.0/tests/test_instances/instanceL0044.abc.yaml +177 -0
  181. abcvoting-2.16.0/tests/test_instances/instanceL0045.abc.yaml +181 -0
  182. abcvoting-2.16.0/tests/test_instances/instanceL0046.abc.yaml +173 -0
  183. abcvoting-2.16.0/tests/test_instances/instanceL0047.abc.yaml +171 -0
  184. abcvoting-2.16.0/tests/test_instances/instanceL0048.abc.yaml +166 -0
  185. abcvoting-2.16.0/tests/test_instances/instanceL0049.abc.yaml +177 -0
  186. abcvoting-2.16.0/tests/test_instances/instanceL0050.abc.yaml +171 -0
  187. abcvoting-2.16.0/tests/test_instances/instanceL0051.abc.yaml +172 -0
  188. abcvoting-2.16.0/tests/test_instances/instanceL0052.abc.yaml +172 -0
  189. abcvoting-2.16.0/tests/test_instances/instanceL0053.abc.yaml +173 -0
  190. abcvoting-2.16.0/tests/test_instances/instanceL0054.abc.yaml +172 -0
  191. abcvoting-2.16.0/tests/test_instances/instanceL0055.abc.yaml +178 -0
  192. abcvoting-2.16.0/tests/test_instances/instanceL0056.abc.yaml +176 -0
  193. abcvoting-2.16.0/tests/test_instances/instanceL0057.abc.yaml +180 -0
  194. abcvoting-2.16.0/tests/test_instances/instanceL0058.abc.yaml +171 -0
  195. abcvoting-2.16.0/tests/test_instances/instanceL0059.abc.yaml +172 -0
  196. abcvoting-2.16.0/tests/test_instances/instanceL0060.abc.yaml +167 -0
  197. abcvoting-2.16.0/tests/test_instances/instanceL0061.abc.yaml +175 -0
  198. abcvoting-2.16.0/tests/test_instances/instanceL0062.abc.yaml +172 -0
  199. abcvoting-2.16.0/tests/test_instances/instanceL0063.abc.yaml +172 -0
  200. abcvoting-2.16.0/tests/test_instances/instanceL0064.abc.yaml +172 -0
  201. abcvoting-2.16.0/tests/test_instances/instanceL0065.abc.yaml +172 -0
  202. abcvoting-2.16.0/tests/test_instances/instanceL0066.abc.yaml +172 -0
  203. abcvoting-2.16.0/tests/test_instances/instanceL0067.abc.yaml +172 -0
  204. abcvoting-2.16.0/tests/test_instances/instanceL0068.abc.yaml +174 -0
  205. abcvoting-2.16.0/tests/test_instances/instanceL0069.abc.yaml +180 -0
  206. abcvoting-2.16.0/tests/test_instances/instanceL0070.abc.yaml +172 -0
  207. abcvoting-2.16.0/tests/test_instances/instanceL0071.abc.yaml +172 -0
  208. abcvoting-2.16.0/tests/test_instances/instanceL0072.abc.yaml +164 -0
  209. abcvoting-2.16.0/tests/test_instances/instanceL0073.abc.yaml +164 -0
  210. abcvoting-2.16.0/tests/test_instances/instanceL0074.abc.yaml +165 -0
  211. abcvoting-2.16.0/tests/test_instances/instanceL0075.abc.yaml +165 -0
  212. abcvoting-2.16.0/tests/test_instances/instanceL0076.abc.yaml +165 -0
  213. abcvoting-2.16.0/tests/test_instances/instanceL0077.abc.yaml +165 -0
  214. abcvoting-2.16.0/tests/test_instances/instanceL0078.abc.yaml +165 -0
  215. abcvoting-2.16.0/tests/test_instances/instanceL0079.abc.yaml +165 -0
  216. abcvoting-2.16.0/tests/test_instances/instanceL0080.abc.yaml +165 -0
  217. abcvoting-2.16.0/tests/test_instances/instanceL0081.abc.yaml +165 -0
  218. abcvoting-2.16.0/tests/test_instances/instanceL0082.abc.yaml +165 -0
  219. abcvoting-2.16.0/tests/test_instances/instanceL0083.abc.yaml +165 -0
  220. abcvoting-2.16.0/tests/test_instances/instanceL0084.abc.yaml +164 -0
  221. abcvoting-2.16.0/tests/test_instances/instanceL0085.abc.yaml +165 -0
  222. abcvoting-2.16.0/tests/test_instances/instanceL0086.abc.yaml +165 -0
  223. abcvoting-2.16.0/tests/test_instances/instanceL0087.abc.yaml +166 -0
  224. abcvoting-2.16.0/tests/test_instances/instanceL0088.abc.yaml +166 -0
  225. abcvoting-2.16.0/tests/test_instances/instanceL0089.abc.yaml +165 -0
  226. abcvoting-2.16.0/tests/test_instances/instanceL0090.abc.yaml +166 -0
  227. abcvoting-2.16.0/tests/test_instances/instanceL0091.abc.yaml +166 -0
  228. abcvoting-2.16.0/tests/test_instances/instanceL0092.abc.yaml +166 -0
  229. abcvoting-2.16.0/tests/test_instances/instanceL0093.abc.yaml +166 -0
  230. abcvoting-2.16.0/tests/test_instances/instanceL0094.abc.yaml +165 -0
  231. abcvoting-2.16.0/tests/test_instances/instanceL0095.abc.yaml +166 -0
  232. abcvoting-2.16.0/tests/test_instances/instanceL0096.abc.yaml +165 -0
  233. abcvoting-2.16.0/tests/test_instances/instanceL0097.abc.yaml +165 -0
  234. abcvoting-2.16.0/tests/test_instances/instanceL0098.abc.yaml +166 -0
  235. abcvoting-2.16.0/tests/test_instances/instanceL0099.abc.yaml +166 -0
  236. abcvoting-2.16.0/tests/test_instances/instanceL0100.abc.yaml +166 -0
  237. abcvoting-2.16.0/tests/test_instances/instanceL0101.abc.yaml +166 -0
  238. abcvoting-2.16.0/tests/test_instances/instanceL0102.abc.yaml +166 -0
  239. abcvoting-2.16.0/tests/test_instances/instanceL0103.abc.yaml +166 -0
  240. abcvoting-2.16.0/tests/test_instances/instanceL0104.abc.yaml +166 -0
  241. abcvoting-2.16.0/tests/test_instances/instanceL0105.abc.yaml +166 -0
  242. abcvoting-2.16.0/tests/test_instances/instanceL0106.abc.yaml +166 -0
  243. abcvoting-2.16.0/tests/test_instances/instanceL0107.abc.yaml +166 -0
  244. abcvoting-2.16.0/tests/test_instances/instanceL0108.abc.yaml +174 -0
  245. abcvoting-2.16.0/tests/test_instances/instanceL0109.abc.yaml +180 -0
  246. abcvoting-2.16.0/tests/test_instances/instanceL0110.abc.yaml +187 -0
  247. abcvoting-2.16.0/tests/test_instances/instanceL0111.abc.yaml +187 -0
  248. abcvoting-2.16.0/tests/test_instances/instanceL0112.abc.yaml +191 -0
  249. abcvoting-2.16.0/tests/test_instances/instanceL0113.abc.yaml +187 -0
  250. abcvoting-2.16.0/tests/test_instances/instanceL0114.abc.yaml +181 -0
  251. abcvoting-2.16.0/tests/test_instances/instanceL0115.abc.yaml +185 -0
  252. abcvoting-2.16.0/tests/test_instances/instanceL0116.abc.yaml +181 -0
  253. abcvoting-2.16.0/tests/test_instances/instanceL0117.abc.yaml +193 -0
  254. abcvoting-2.16.0/tests/test_instances/instanceL0118.abc.yaml +191 -0
  255. abcvoting-2.16.0/tests/test_instances/instanceL0119.abc.yaml +187 -0
  256. abcvoting-2.16.0/tests/test_instances/instanceL0120.abc.yaml +184 -0
  257. abcvoting-2.16.0/tests/test_instances/instanceL0121.abc.yaml +175 -0
  258. abcvoting-2.16.0/tests/test_instances/instanceL0122.abc.yaml +181 -0
  259. abcvoting-2.16.0/tests/test_instances/instanceL0123.abc.yaml +184 -0
  260. abcvoting-2.16.0/tests/test_instances/instanceL0124.abc.yaml +192 -0
  261. abcvoting-2.16.0/tests/test_instances/instanceL0125.abc.yaml +175 -0
  262. abcvoting-2.16.0/tests/test_instances/instanceL0126.abc.yaml +184 -0
  263. abcvoting-2.16.0/tests/test_instances/instanceL0127.abc.yaml +186 -0
  264. abcvoting-2.16.0/tests/test_instances/instanceL0128.abc.yaml +176 -0
  265. abcvoting-2.16.0/tests/test_instances/instanceL0129.abc.yaml +186 -0
  266. abcvoting-2.16.0/tests/test_instances/instanceL0130.abc.yaml +187 -0
  267. abcvoting-2.16.0/tests/test_instances/instanceL0131.abc.yaml +186 -0
  268. abcvoting-2.16.0/tests/test_instances/instanceL0132.abc.yaml +175 -0
  269. abcvoting-2.16.0/tests/test_instances/instanceL0133.abc.yaml +175 -0
  270. abcvoting-2.16.0/tests/test_instances/instanceL0134.abc.yaml +184 -0
  271. abcvoting-2.16.0/tests/test_instances/instanceL0135.abc.yaml +188 -0
  272. abcvoting-2.16.0/tests/test_instances/instanceL0136.abc.yaml +192 -0
  273. abcvoting-2.16.0/tests/test_instances/instanceL0137.abc.yaml +182 -0
  274. abcvoting-2.16.0/tests/test_instances/instanceL0138.abc.yaml +188 -0
  275. abcvoting-2.16.0/tests/test_instances/instanceL0139.abc.yaml +186 -0
  276. abcvoting-2.16.0/tests/test_instances/instanceL0140.abc.yaml +176 -0
  277. abcvoting-2.16.0/tests/test_instances/instanceL0141.abc.yaml +190 -0
  278. abcvoting-2.16.0/tests/test_instances/instanceL0142.abc.yaml +176 -0
  279. abcvoting-2.16.0/tests/test_instances/instanceL0143.abc.yaml +180 -0
  280. abcvoting-2.16.0/tests/test_instances/instanceL0144.abc.yaml +184 -0
  281. abcvoting-2.16.0/tests/test_instances/instanceL0145.abc.yaml +204 -0
  282. abcvoting-2.16.0/tests/test_instances/instanceL0146.abc.yaml +199 -0
  283. abcvoting-2.16.0/tests/test_instances/instanceL0147.abc.yaml +207 -0
  284. abcvoting-2.16.0/tests/test_instances/instanceL0148.abc.yaml +211 -0
  285. abcvoting-2.16.0/tests/test_instances/instanceL0149.abc.yaml +191 -0
  286. abcvoting-2.16.0/tests/test_instances/instanceL0150.abc.yaml +201 -0
  287. abcvoting-2.16.0/tests/test_instances/instanceL0151.abc.yaml +207 -0
  288. abcvoting-2.16.0/tests/test_instances/instanceL0152.abc.yaml +193 -0
  289. abcvoting-2.16.0/tests/test_instances/instanceL0153.abc.yaml +223 -0
  290. abcvoting-2.16.0/tests/test_instances/instanceL0154.abc.yaml +187 -0
  291. abcvoting-2.16.0/tests/test_instances/instanceL0155.abc.yaml +211 -0
  292. abcvoting-2.16.0/tests/test_instances/instanceL0156.abc.yaml +182 -0
  293. abcvoting-2.16.0/tests/test_instances/instanceL0157.abc.yaml +199 -0
  294. abcvoting-2.16.0/tests/test_instances/instanceL0158.abc.yaml +199 -0
  295. abcvoting-2.16.0/tests/test_instances/instanceL0159.abc.yaml +202 -0
  296. abcvoting-2.16.0/tests/test_instances/instanceL0160.abc.yaml +210 -0
  297. abcvoting-2.16.0/tests/test_instances/instanceL0161.abc.yaml +187 -0
  298. abcvoting-2.16.0/tests/test_instances/instanceL0162.abc.yaml +196 -0
  299. abcvoting-2.16.0/tests/test_instances/instanceL0163.abc.yaml +204 -0
  300. abcvoting-2.16.0/tests/test_instances/instanceL0164.abc.yaml +198 -0
  301. abcvoting-2.16.0/tests/test_instances/instanceL0165.abc.yaml +234 -0
  302. abcvoting-2.16.0/tests/test_instances/instanceL0166.abc.yaml +187 -0
  303. abcvoting-2.16.0/tests/test_instances/instanceL0167.abc.yaml +204 -0
  304. abcvoting-2.16.0/tests/test_instances/instanceL0168.abc.yaml +181 -0
  305. abcvoting-2.16.0/tests/test_instances/instanceL0169.abc.yaml +199 -0
  306. abcvoting-2.16.0/tests/test_instances/instanceL0170.abc.yaml +198 -0
  307. abcvoting-2.16.0/tests/test_instances/instanceL0171.abc.yaml +204 -0
  308. abcvoting-2.16.0/tests/test_instances/instanceL0172.abc.yaml +210 -0
  309. abcvoting-2.16.0/tests/test_instances/instanceL0173.abc.yaml +188 -0
  310. abcvoting-2.16.0/tests/test_instances/instanceL0174.abc.yaml +194 -0
  311. abcvoting-2.16.0/tests/test_instances/instanceL0175.abc.yaml +214 -0
  312. abcvoting-2.16.0/tests/test_instances/instanceL0176.abc.yaml +196 -0
  313. abcvoting-2.16.0/tests/test_instances/instanceL0177.abc.yaml +218 -0
  314. abcvoting-2.16.0/tests/test_instances/instanceL0178.abc.yaml +188 -0
  315. abcvoting-2.16.0/tests/test_instances/instanceL0179.abc.yaml +206 -0
  316. abcvoting-2.16.0/tests/test_instances/instanceL0180.abc.yaml +196 -0
  317. abcvoting-2.16.0/tests/test_instances/instanceL0181.abc.yaml +224 -0
  318. abcvoting-2.16.0/tests/test_instances/instanceL0182.abc.yaml +247 -0
  319. abcvoting-2.16.0/tests/test_instances/instanceL0183.abc.yaml +205 -0
  320. abcvoting-2.16.0/tests/test_instances/instanceL0184.abc.yaml +211 -0
  321. abcvoting-2.16.0/tests/test_instances/instanceL0185.abc.yaml +199 -0
  322. abcvoting-2.16.0/tests/test_instances/instanceL0186.abc.yaml +211 -0
  323. abcvoting-2.16.0/tests/test_instances/instanceL0187.abc.yaml +217 -0
  324. abcvoting-2.16.0/tests/test_instances/instanceL0188.abc.yaml +251 -0
  325. abcvoting-2.16.0/tests/test_instances/instanceL0189.abc.yaml +263 -0
  326. abcvoting-2.16.0/tests/test_instances/instanceL0190.abc.yaml +201 -0
  327. abcvoting-2.16.0/tests/test_instances/instanceL0191.abc.yaml +207 -0
  328. abcvoting-2.16.0/tests/test_instances/instanceL0192.abc.yaml +194 -0
  329. abcvoting-2.16.0/tests/test_instances/instanceL0193.abc.yaml +223 -0
  330. abcvoting-2.16.0/tests/test_instances/instanceL0194.abc.yaml +199 -0
  331. abcvoting-2.16.0/tests/test_instances/instanceL0195.abc.yaml +210 -0
  332. abcvoting-2.16.0/tests/test_instances/instanceL0196.abc.yaml +212 -0
  333. abcvoting-2.16.0/tests/test_instances/instanceL0197.abc.yaml +199 -0
  334. abcvoting-2.16.0/tests/test_instances/instanceL0198.abc.yaml +200 -0
  335. abcvoting-2.16.0/tests/test_instances/instanceL0199.abc.yaml +208 -0
  336. abcvoting-2.16.0/tests/test_instances/instanceL0200.abc.yaml +204 -0
  337. abcvoting-2.16.0/tests/test_instances/instanceL0201.abc.yaml +252 -0
  338. abcvoting-2.16.0/tests/test_instances/instanceL0202.abc.yaml +195 -0
  339. abcvoting-2.16.0/tests/test_instances/instanceL0203.abc.yaml +210 -0
  340. abcvoting-2.16.0/tests/test_instances/instanceL0204.abc.yaml +191 -0
  341. abcvoting-2.16.0/tests/test_instances/instanceL0205.abc.yaml +223 -0
  342. abcvoting-2.16.0/tests/test_instances/instanceL0206.abc.yaml +202 -0
  343. abcvoting-2.16.0/tests/test_instances/instanceL0207.abc.yaml +208 -0
  344. abcvoting-2.16.0/tests/test_instances/instanceL0208.abc.yaml +212 -0
  345. abcvoting-2.16.0/tests/test_instances/instanceL0209.abc.yaml +198 -0
  346. abcvoting-2.16.0/tests/test_instances/instanceL0210.abc.yaml +204 -0
  347. abcvoting-2.16.0/tests/test_instances/instanceL0211.abc.yaml +212 -0
  348. abcvoting-2.16.0/tests/test_instances/instanceL0212.abc.yaml +208 -0
  349. abcvoting-2.16.0/tests/test_instances/instanceL0213.abc.yaml +250 -0
  350. abcvoting-2.16.0/tests/test_instances/instanceL0214.abc.yaml +194 -0
  351. abcvoting-2.16.0/tests/test_instances/instanceL0215.abc.yaml +202 -0
  352. abcvoting-2.16.0/tests/test_instances/instanceL0216.abc.yaml +204 -0
  353. abcvoting-2.16.0/tests/test_instances/instanceL0217.abc.yaml +228 -0
  354. abcvoting-2.16.0/tests/test_instances/instanceL0218.abc.yaml +231 -0
  355. abcvoting-2.16.0/tests/test_instances/instanceL0219.abc.yaml +233 -0
  356. abcvoting-2.16.0/tests/test_instances/instanceL0220.abc.yaml +189 -0
  357. abcvoting-2.16.0/tests/test_instances/instanceL0221.abc.yaml +187 -0
  358. abcvoting-2.16.0/tests/test_instances/instanceL0222.abc.yaml +187 -0
  359. abcvoting-2.16.0/tests/test_instances/instanceL0223.abc.yaml +187 -0
  360. abcvoting-2.16.0/tests/test_instances/instanceL0224.abc.yaml +201 -0
  361. abcvoting-2.16.0/tests/test_instances/instanceL0225.abc.yaml +191 -0
  362. abcvoting-2.16.0/tests/test_instances/instanceL0226.abc.yaml +185 -0
  363. abcvoting-2.16.0/tests/test_instances/instanceL0227.abc.yaml +187 -0
  364. abcvoting-2.16.0/tests/test_instances/instanceL0228.abc.yaml +186 -0
  365. abcvoting-2.16.0/tests/test_instances/instanceL0229.abc.yaml +191 -0
  366. abcvoting-2.16.0/tests/test_instances/instanceL0230.abc.yaml +229 -0
  367. abcvoting-2.16.0/tests/test_instances/instanceL0231.abc.yaml +188 -0
  368. abcvoting-2.16.0/tests/test_instances/instanceL0232.abc.yaml +190 -0
  369. abcvoting-2.16.0/tests/test_instances/instanceL0233.abc.yaml +183 -0
  370. abcvoting-2.16.0/tests/test_instances/instanceL0234.abc.yaml +192 -0
  371. abcvoting-2.16.0/tests/test_instances/instanceL0235.abc.yaml +190 -0
  372. abcvoting-2.16.0/tests/test_instances/instanceL0236.abc.yaml +206 -0
  373. abcvoting-2.16.0/tests/test_instances/instanceL0237.abc.yaml +210 -0
  374. abcvoting-2.16.0/tests/test_instances/instanceL0238.abc.yaml +185 -0
  375. abcvoting-2.16.0/tests/test_instances/instanceL0239.abc.yaml +194 -0
  376. abcvoting-2.16.0/tests/test_instances/instanceL0240.abc.yaml +185 -0
  377. abcvoting-2.16.0/tests/test_instances/instanceL0241.abc.yaml +201 -0
  378. abcvoting-2.16.0/tests/test_instances/instanceL0242.abc.yaml +230 -0
  379. abcvoting-2.16.0/tests/test_instances/instanceL0243.abc.yaml +232 -0
  380. abcvoting-2.16.0/tests/test_instances/instanceL0244.abc.yaml +190 -0
  381. abcvoting-2.16.0/tests/test_instances/instanceL0245.abc.yaml +184 -0
  382. abcvoting-2.16.0/tests/test_instances/instanceL0246.abc.yaml +188 -0
  383. abcvoting-2.16.0/tests/test_instances/instanceL0247.abc.yaml +194 -0
  384. abcvoting-2.16.0/tests/test_instances/instanceL0248.abc.yaml +206 -0
  385. abcvoting-2.16.0/tests/test_instances/instanceL0249.abc.yaml +214 -0
  386. abcvoting-2.16.0/tests/test_instances/instanceL0250.abc.yaml +190 -0
  387. abcvoting-2.16.0/tests/test_instances/instanceL0251.abc.yaml +194 -0
  388. abcvoting-2.16.0/tests/test_instances/instanceL0252.abc.yaml +196 -0
  389. abcvoting-2.16.0/tests/test_instances/instanceL0253.abc.yaml +180 -0
  390. abcvoting-2.16.0/tests/test_instances/instanceL0254.abc.yaml +191 -0
  391. abcvoting-2.16.0/tests/test_instances/instanceL0255.abc.yaml +199 -0
  392. abcvoting-2.16.0/tests/test_instances/instanceL0256.abc.yaml +205 -0
  393. abcvoting-2.16.0/tests/test_instances/instanceL0257.abc.yaml +187 -0
  394. abcvoting-2.16.0/tests/test_instances/instanceL0258.abc.yaml +193 -0
  395. abcvoting-2.16.0/tests/test_instances/instanceL0259.abc.yaml +201 -0
  396. abcvoting-2.16.0/tests/test_instances/instanceL0260.abc.yaml +187 -0
  397. abcvoting-2.16.0/tests/test_instances/instanceL0261.abc.yaml +205 -0
  398. abcvoting-2.16.0/tests/test_instances/instanceL0262.abc.yaml +181 -0
  399. abcvoting-2.16.0/tests/test_instances/instanceL0263.abc.yaml +191 -0
  400. abcvoting-2.16.0/tests/test_instances/instanceL0264.abc.yaml +196 -0
  401. abcvoting-2.16.0/tests/test_instances/instanceL0265.abc.yaml +205 -0
  402. abcvoting-2.16.0/tests/test_instances/instanceL0266.abc.yaml +187 -0
  403. abcvoting-2.16.0/tests/test_instances/instanceL0267.abc.yaml +198 -0
  404. abcvoting-2.16.0/tests/test_instances/instanceL0268.abc.yaml +206 -0
  405. abcvoting-2.16.0/tests/test_instances/instanceL0269.abc.yaml +187 -0
  406. abcvoting-2.16.0/tests/test_instances/instanceL0270.abc.yaml +192 -0
  407. abcvoting-2.16.0/tests/test_instances/instanceL0271.abc.yaml +196 -0
  408. abcvoting-2.16.0/tests/test_instances/instanceL0272.abc.yaml +182 -0
  409. abcvoting-2.16.0/tests/test_instances/instanceL0273.abc.yaml +194 -0
  410. abcvoting-2.16.0/tests/test_instances/instanceL0274.abc.yaml +183 -0
  411. abcvoting-2.16.0/tests/test_instances/instanceL0275.abc.yaml +186 -0
  412. abcvoting-2.16.0/tests/test_instances/instanceL0276.abc.yaml +197 -0
  413. abcvoting-2.16.0/tests/test_instances/instanceL0277.abc.yaml +181 -0
  414. abcvoting-2.16.0/tests/test_instances/instanceL0278.abc.yaml +192 -0
  415. abcvoting-2.16.0/tests/test_instances/instanceL0279.abc.yaml +194 -0
  416. abcvoting-2.16.0/tests/test_instances/instanceL0280.abc.yaml +196 -0
  417. abcvoting-2.16.0/tests/test_instances/instanceL0281.abc.yaml +182 -0
  418. abcvoting-2.16.0/tests/test_instances/instanceL0282.abc.yaml +188 -0
  419. abcvoting-2.16.0/tests/test_instances/instanceL0283.abc.yaml +192 -0
  420. abcvoting-2.16.0/tests/test_instances/instanceL0284.abc.yaml +182 -0
  421. abcvoting-2.16.0/tests/test_instances/instanceL0285.abc.yaml +188 -0
  422. abcvoting-2.16.0/tests/test_instances/instanceL0286.abc.yaml +182 -0
  423. abcvoting-2.16.0/tests/test_instances/instanceL0287.abc.yaml +186 -0
  424. abcvoting-2.16.0/tests/test_instances/instanceL0288.abc.yaml +192 -0
  425. abcvoting-2.16.0/tests/test_instances/instanceL0289.abc.yaml +242 -0
  426. abcvoting-2.16.0/tests/test_instances/instanceL0290.abc.yaml +321 -0
  427. abcvoting-2.16.0/tests/test_instances/instanceL0291.abc.yaml +235 -0
  428. abcvoting-2.16.0/tests/test_instances/instanceL0292.abc.yaml +247 -0
  429. abcvoting-2.16.0/tests/test_instances/instanceL0293.abc.yaml +219 -0
  430. abcvoting-2.16.0/tests/test_instances/instanceL0294.abc.yaml +227 -0
  431. abcvoting-2.16.0/tests/test_instances/instanceL0295.abc.yaml +245 -0
  432. abcvoting-2.16.0/tests/test_instances/instanceL0296.abc.yaml +225 -0
  433. abcvoting-2.16.0/tests/test_instances/instanceL0297.abc.yaml +243 -0
  434. abcvoting-2.16.0/tests/test_instances/instanceL0298.abc.yaml +221 -0
  435. abcvoting-2.16.0/tests/test_instances/instanceL0299.abc.yaml +221 -0
  436. abcvoting-2.16.0/tests/test_instances/instanceL0300.abc.yaml +192 -0
  437. abcvoting-2.16.0/tests/test_instances/instanceL0301.abc.yaml +211 -0
  438. abcvoting-2.16.0/tests/test_instances/instanceL0302.abc.yaml +221 -0
  439. abcvoting-2.16.0/tests/test_instances/instanceL0303.abc.yaml +236 -0
  440. abcvoting-2.16.0/tests/test_instances/instanceL0304.abc.yaml +240 -0
  441. abcvoting-2.16.0/tests/test_instances/instanceL0305.abc.yaml +209 -0
  442. abcvoting-2.16.0/tests/test_instances/instanceL0306.abc.yaml +218 -0
  443. abcvoting-2.16.0/tests/test_instances/instanceL0307.abc.yaml +242 -0
  444. abcvoting-2.16.0/tests/test_instances/instanceL0308.abc.yaml +212 -0
  445. abcvoting-2.16.0/tests/test_instances/instanceL0309.abc.yaml +264 -0
  446. abcvoting-2.16.0/tests/test_instances/instanceL0310.abc.yaml +199 -0
  447. abcvoting-2.16.0/tests/test_instances/instanceL0311.abc.yaml +218 -0
  448. abcvoting-2.16.0/tests/test_instances/instanceL0312.abc.yaml +223 -0
  449. abcvoting-2.16.0/tests/test_instances/instanceL0313.abc.yaml +209 -0
  450. abcvoting-2.16.0/tests/test_instances/instanceL0314.abc.yaml +218 -0
  451. abcvoting-2.16.0/tests/test_instances/instanceL0315.abc.yaml +236 -0
  452. abcvoting-2.16.0/tests/test_instances/instanceL0316.abc.yaml +246 -0
  453. abcvoting-2.16.0/tests/test_instances/instanceL0317.abc.yaml +208 -0
  454. abcvoting-2.16.0/tests/test_instances/instanceL0318.abc.yaml +216 -0
  455. abcvoting-2.16.0/tests/test_instances/instanceL0319.abc.yaml +240 -0
  456. abcvoting-2.16.0/tests/test_instances/instanceL0320.abc.yaml +206 -0
  457. abcvoting-2.16.0/tests/test_instances/instanceL0321.abc.yaml +252 -0
  458. abcvoting-2.16.0/tests/test_instances/instanceL0322.abc.yaml +198 -0
  459. abcvoting-2.16.0/tests/test_instances/instanceL0323.abc.yaml +220 -0
  460. abcvoting-2.16.0/tests/test_instances/instanceL0324.abc.yaml +216 -0
  461. abcvoting-2.16.0/tests/test_instances/instanceL0325.abc.yaml +290 -0
  462. abcvoting-2.16.0/tests/test_instances/instanceL0326.abc.yaml +333 -0
  463. abcvoting-2.16.0/tests/test_instances/instanceL0327.abc.yaml +263 -0
  464. abcvoting-2.16.0/tests/test_instances/instanceL0328.abc.yaml +269 -0
  465. abcvoting-2.16.0/tests/test_instances/instanceL0329.abc.yaml +229 -0
  466. abcvoting-2.16.0/tests/test_instances/instanceL0330.abc.yaml +261 -0
  467. abcvoting-2.16.0/tests/test_instances/instanceL0331.abc.yaml +279 -0
  468. abcvoting-2.16.0/tests/test_instances/instanceL0332.abc.yaml +251 -0
  469. abcvoting-2.16.0/tests/test_instances/instanceL0333.abc.yaml +299 -0
  470. abcvoting-2.16.0/tests/test_instances/instanceL0334.abc.yaml +229 -0
  471. abcvoting-2.16.0/tests/test_instances/instanceL0335.abc.yaml +267 -0
  472. abcvoting-2.16.0/tests/test_instances/instanceL0336.abc.yaml +210 -0
  473. abcvoting-2.16.0/tests/test_instances/instanceL0337.abc.yaml +245 -0
  474. abcvoting-2.16.0/tests/test_instances/instanceL0338.abc.yaml +329 -0
  475. abcvoting-2.16.0/tests/test_instances/instanceL0339.abc.yaml +264 -0
  476. abcvoting-2.16.0/tests/test_instances/instanceL0340.abc.yaml +270 -0
  477. abcvoting-2.16.0/tests/test_instances/instanceL0341.abc.yaml +231 -0
  478. abcvoting-2.16.0/tests/test_instances/instanceL0342.abc.yaml +248 -0
  479. abcvoting-2.16.0/tests/test_instances/instanceL0343.abc.yaml +268 -0
  480. abcvoting-2.16.0/tests/test_instances/instanceL0344.abc.yaml +244 -0
  481. abcvoting-2.16.0/tests/test_instances/instanceL0345.abc.yaml +298 -0
  482. abcvoting-2.16.0/tests/test_instances/instanceL0346.abc.yaml +225 -0
  483. abcvoting-2.16.0/tests/test_instances/instanceL0347.abc.yaml +254 -0
  484. abcvoting-2.16.0/tests/test_instances/instanceL0348.abc.yaml +203 -0
  485. abcvoting-2.16.0/tests/test_instances/instanceL0349.abc.yaml +263 -0
  486. abcvoting-2.16.0/tests/test_instances/instanceL0350.abc.yaml +226 -0
  487. abcvoting-2.16.0/tests/test_instances/instanceL0351.abc.yaml +262 -0
  488. abcvoting-2.16.0/tests/test_instances/instanceL0352.abc.yaml +270 -0
  489. abcvoting-2.16.0/tests/test_instances/instanceL0353.abc.yaml +226 -0
  490. abcvoting-2.16.0/tests/test_instances/instanceL0354.abc.yaml +250 -0
  491. abcvoting-2.16.0/tests/test_instances/instanceL0355.abc.yaml +272 -0
  492. abcvoting-2.16.0/tests/test_instances/instanceL0356.abc.yaml +250 -0
  493. abcvoting-2.16.0/tests/test_instances/instanceL0357.abc.yaml +282 -0
  494. abcvoting-2.16.0/tests/test_instances/instanceL0358.abc.yaml +228 -0
  495. abcvoting-2.16.0/tests/test_instances/instanceL0359.abc.yaml +240 -0
  496. abcvoting-2.16.0/tests/test_instances/instanceL0360.abc.yaml +230 -0
  497. abcvoting-2.16.0/tests/test_instances/instanceL0361.abc.yaml +260 -0
  498. abcvoting-2.16.0/tests/test_instances/instanceL0362.abc.yaml +461 -0
  499. abcvoting-2.16.0/tests/test_instances/instanceL0363.abc.yaml +287 -0
  500. abcvoting-2.16.0/tests/test_instances/instanceL0364.abc.yaml +245 -0
  501. abcvoting-2.16.0/tests/test_instances/instanceL0365.abc.yaml +219 -0
  502. abcvoting-2.16.0/tests/test_instances/instanceL0366.abc.yaml +237 -0
  503. abcvoting-2.16.0/tests/test_instances/instanceL0367.abc.yaml +251 -0
  504. abcvoting-2.16.0/tests/test_instances/instanceL0368.abc.yaml +249 -0
  505. abcvoting-2.16.0/tests/test_instances/instanceL0369.abc.yaml +255 -0
  506. abcvoting-2.16.0/tests/test_instances/instanceL0370.abc.yaml +221 -0
  507. abcvoting-2.16.0/tests/test_instances/instanceL0371.abc.yaml +243 -0
  508. abcvoting-2.16.0/tests/test_instances/instanceL0372.abc.yaml +220 -0
  509. abcvoting-2.16.0/tests/test_instances/instanceL0373.abc.yaml +269 -0
  510. abcvoting-2.16.0/tests/test_instances/instanceL0374.abc.yaml +359 -0
  511. abcvoting-2.16.0/tests/test_instances/instanceL0375.abc.yaml +286 -0
  512. abcvoting-2.16.0/tests/test_instances/instanceL0376.abc.yaml +248 -0
  513. abcvoting-2.16.0/tests/test_instances/instanceL0377.abc.yaml +219 -0
  514. abcvoting-2.16.0/tests/test_instances/instanceL0378.abc.yaml +238 -0
  515. abcvoting-2.16.0/tests/test_instances/instanceL0379.abc.yaml +244 -0
  516. abcvoting-2.16.0/tests/test_instances/instanceL0380.abc.yaml +236 -0
  517. abcvoting-2.16.0/tests/test_instances/instanceL0381.abc.yaml +268 -0
  518. abcvoting-2.16.0/tests/test_instances/instanceL0382.abc.yaml +255 -0
  519. abcvoting-2.16.0/tests/test_instances/instanceL0383.abc.yaml +242 -0
  520. abcvoting-2.16.0/tests/test_instances/instanceL0384.abc.yaml +215 -0
  521. abcvoting-2.16.0/tests/test_instances/instanceL0385.abc.yaml +277 -0
  522. abcvoting-2.16.0/tests/test_instances/instanceL0386.abc.yaml +356 -0
  523. abcvoting-2.16.0/tests/test_instances/instanceL0387.abc.yaml +286 -0
  524. abcvoting-2.16.0/tests/test_instances/instanceL0388.abc.yaml +248 -0
  525. abcvoting-2.16.0/tests/test_instances/instanceL0389.abc.yaml +230 -0
  526. abcvoting-2.16.0/tests/test_instances/instanceL0390.abc.yaml +244 -0
  527. abcvoting-2.16.0/tests/test_instances/instanceL0391.abc.yaml +250 -0
  528. abcvoting-2.16.0/tests/test_instances/instanceL0392.abc.yaml +246 -0
  529. abcvoting-2.16.0/tests/test_instances/instanceL0393.abc.yaml +244 -0
  530. abcvoting-2.16.0/tests/test_instances/instanceL0394.abc.yaml +222 -0
  531. abcvoting-2.16.0/tests/test_instances/instanceL0395.abc.yaml +248 -0
  532. abcvoting-2.16.0/tests/test_instances/instanceM0000.abc.yaml +168 -0
  533. abcvoting-2.16.0/tests/test_instances/instanceM0001.abc.yaml +172 -0
  534. abcvoting-2.16.0/tests/test_instances/instanceM0002.abc.yaml +166 -0
  535. abcvoting-2.16.0/tests/test_instances/instanceM0003.abc.yaml +170 -0
  536. abcvoting-2.16.0/tests/test_instances/instanceM0004.abc.yaml +166 -0
  537. abcvoting-2.16.0/tests/test_instances/instanceM0005.abc.yaml +172 -0
  538. abcvoting-2.16.0/tests/test_instances/instanceM0006.abc.yaml +168 -0
  539. abcvoting-2.16.0/tests/test_instances/instanceM0007.abc.yaml +171 -0
  540. abcvoting-2.16.0/tests/test_instances/instanceM0008.abc.yaml +172 -0
  541. abcvoting-2.16.0/tests/test_instances/instanceM0009.abc.yaml +178 -0
  542. abcvoting-2.16.0/tests/test_instances/instanceM0010.abc.yaml +170 -0
  543. abcvoting-2.16.0/tests/test_instances/instanceM0011.abc.yaml +176 -0
  544. abcvoting-2.16.0/tests/test_instances/instanceM0012.abc.yaml +172 -0
  545. abcvoting-2.16.0/tests/test_instances/instanceM0013.abc.yaml +172 -0
  546. abcvoting-2.16.0/tests/test_instances/instanceM0014.abc.yaml +166 -0
  547. abcvoting-2.16.0/tests/test_instances/instanceM0015.abc.yaml +175 -0
  548. abcvoting-2.16.0/tests/test_instances/instanceM0016.abc.yaml +170 -0
  549. abcvoting-2.16.0/tests/test_instances/instanceM0017.abc.yaml +170 -0
  550. abcvoting-2.16.0/tests/test_instances/instanceM0018.abc.yaml +170 -0
  551. abcvoting-2.16.0/tests/test_instances/instanceM0019.abc.yaml +174 -0
  552. abcvoting-2.16.0/tests/test_instances/instanceM0020.abc.yaml +172 -0
  553. abcvoting-2.16.0/tests/test_instances/instanceM0021.abc.yaml +170 -0
  554. abcvoting-2.16.0/tests/test_instances/instanceM0022.abc.yaml +176 -0
  555. abcvoting-2.16.0/tests/test_instances/instanceM0023.abc.yaml +171 -0
  556. abcvoting-2.16.0/tests/test_instances/instanceM0024.abc.yaml +172 -0
  557. abcvoting-2.16.0/tests/test_instances/instanceM0025.abc.yaml +186 -0
  558. abcvoting-2.16.0/tests/test_instances/instanceM0026.abc.yaml +178 -0
  559. abcvoting-2.16.0/tests/test_instances/instanceM0027.abc.yaml +196 -0
  560. abcvoting-2.16.0/tests/test_instances/instanceM0028.abc.yaml +176 -0
  561. abcvoting-2.16.0/tests/test_instances/instanceM0029.abc.yaml +190 -0
  562. abcvoting-2.16.0/tests/test_instances/instanceM0030.abc.yaml +172 -0
  563. abcvoting-2.16.0/tests/test_instances/instanceM0031.abc.yaml +195 -0
  564. abcvoting-2.16.0/tests/test_instances/instanceS0000.abc.yaml +166 -0
  565. abcvoting-2.16.0/tests/test_instances/instanceS0001.abc.yaml +166 -0
  566. abcvoting-2.16.0/tests/test_instances/instanceS0002.abc.yaml +166 -0
  567. abcvoting-2.16.0/tests/test_instances/instanceS0003.abc.yaml +174 -0
  568. abcvoting-2.16.0/tests/test_instances/instanceVL0000.abc.yaml +179 -0
  569. abcvoting-2.16.0/tests/test_instances/instanceVL0001.abc.yaml +184 -0
  570. abcvoting-2.16.0/tests/test_instances/instanceVL0002.abc.yaml +198 -0
  571. abcvoting-2.16.0/tests/test_instances/instanceVL0003.abc.yaml +190 -0
  572. abcvoting-2.16.0/tests/test_instances/instanceVL0004.abc.yaml +191 -0
  573. abcvoting-2.16.0/tests/test_instances/instanceVL0005.abc.yaml +212 -0
  574. abcvoting-2.16.0/tests/test_instances/instanceVL0006.abc.yaml +186 -0
  575. abcvoting-2.16.0/tests/test_instances/instanceVL0007.abc.yaml +207 -0
  576. abcvoting-2.16.0/tests/test_instances/instanceVL0008.abc.yaml +220 -0
  577. abcvoting-2.16.0/tests/test_instances/instanceVL0009.abc.yaml +184 -0
  578. abcvoting-2.16.0/tests/test_instances/instanceVL0010.abc.yaml +193 -0
  579. abcvoting-2.16.0/tests/test_instances/instanceVL0011.abc.yaml +224 -0
  580. abcvoting-2.16.0/tests/test_instances/instanceVL0012.abc.yaml +174 -0
  581. abcvoting-2.16.0/tests/test_instances/instanceVL0013.abc.yaml +178 -0
  582. abcvoting-2.16.0/tests/test_instances/instanceVL0014.abc.yaml +211 -0
  583. abcvoting-2.16.0/tests/test_instances/instanceVL0015.abc.yaml +184 -0
  584. abcvoting-2.16.0/tests/test_instances/instanceVL0016.abc.yaml +191 -0
  585. abcvoting-2.16.0/tests/test_instances/instanceVL0017.abc.yaml +198 -0
  586. abcvoting-2.16.0/tests/test_instances/instanceVL0018.abc.yaml +178 -0
  587. abcvoting-2.16.0/tests/test_instances/instanceVL0019.abc.yaml +189 -0
  588. abcvoting-2.16.0/tests/test_instances/instanceVL0020.abc.yaml +216 -0
  589. abcvoting-2.16.0/tests/test_instances/instanceVL0021.abc.yaml +192 -0
  590. abcvoting-2.16.0/tests/test_instances/instanceVL0022.abc.yaml +197 -0
  591. abcvoting-2.16.0/tests/test_instances/instanceVL0023.abc.yaml +220 -0
  592. abcvoting-2.16.0/tests/test_instances/instanceVL0024.abc.yaml +223 -0
  593. abcvoting-2.16.0/tests/test_instances/instanceVL0025.abc.yaml +230 -0
  594. abcvoting-2.16.0/tests/test_instances/instanceVL0026.abc.yaml +287 -0
  595. abcvoting-2.16.0/tests/test_instances/instanceVL0027.abc.yaml +218 -0
  596. abcvoting-2.16.0/tests/test_instances/instanceVL0028.abc.yaml +235 -0
  597. abcvoting-2.16.0/tests/test_instances/instanceVL0029.abc.yaml +248 -0
  598. abcvoting-2.16.0/tests/test_instances/instanceVL0030.abc.yaml +212 -0
  599. abcvoting-2.16.0/tests/test_instances/instanceVL0031.abc.yaml +263 -0
  600. abcvoting-2.16.0/tests/test_instances/instanceVL0032.abc.yaml +308 -0
  601. abcvoting-2.16.0/tests/test_instances/instanceVL0033.abc.yaml +214 -0
  602. abcvoting-2.16.0/tests/test_instances/instanceVL0034.abc.yaml +243 -0
  603. abcvoting-2.16.0/tests/test_instances/instanceVL0035.abc.yaml +290 -0
  604. abcvoting-2.16.0/tests/test_instances/instanceVL0036.abc.yaml +222 -0
  605. abcvoting-2.16.0/tests/test_instances/instanceVL0037.abc.yaml +228 -0
  606. abcvoting-2.16.0/tests/test_instances/instanceVL0038.abc.yaml +245 -0
  607. abcvoting-2.16.0/tests/test_instances/instanceVL0039.abc.yaml +218 -0
  608. abcvoting-2.16.0/tests/test_instances/instanceVL0040.abc.yaml +235 -0
  609. abcvoting-2.16.0/tests/test_instances/instanceVL0041.abc.yaml +274 -0
  610. abcvoting-2.16.0/tests/test_instances/instanceVL0042.abc.yaml +208 -0
  611. abcvoting-2.16.0/tests/test_instances/instanceVL0043.abc.yaml +249 -0
  612. abcvoting-2.16.0/tests/test_instances/instanceVL0044.abc.yaml +310 -0
  613. abcvoting-2.16.0/tests/test_instances/instanceVL0045.abc.yaml +236 -0
  614. abcvoting-2.16.0/tests/test_instances/instanceVL0046.abc.yaml +243 -0
  615. abcvoting-2.16.0/tests/test_instances/instanceVL0047.abc.yaml +266 -0
  616. abcvoting-2.16.0/tests/test_instances/update_unittest_instances_for_rule.py +132 -0
  617. abcvoting-2.16.0/tests/test_misc.py +77 -0
  618. abcvoting-2.16.0/tests/test_output.py +80 -0
  619. abcvoting-2.16.0/tests/test_preferences.py +168 -0
  620. abcvoting-2.16.0/tests/test_properties.py +544 -0
  621. abcvoting-2.16.0/tests/test_scores.py +70 -0
@@ -0,0 +1,15 @@
1
+ [flake8]
2
+ ignore = D202, W503, D103, D200, D105, D107, E203, D401, E731, FS003, PIE799
3
+ exclude =
4
+ .git,
5
+ __pycache__,
6
+ docs/,
7
+ venv*,
8
+ scratch*,
9
+ benchmark,
10
+ */__init__.py,
11
+ .eggs,
12
+ .github,
13
+ build,
14
+ max-complexity = 40
15
+ max-line-length = 99
@@ -0,0 +1,33 @@
1
+ codecov:
2
+ require_ci_to_pass: yes
3
+
4
+ coverage:
5
+ precision: 2
6
+ round: down
7
+ range: "70...100"
8
+ status:
9
+ project:
10
+ default:
11
+ informational: true
12
+ patch:
13
+ default:
14
+ informational: true
15
+
16
+ parsers:
17
+ gcov:
18
+ branch_detection:
19
+ conditional: yes
20
+ loop: yes
21
+ method: no
22
+ macro: no
23
+
24
+ comment:
25
+ layout: "reach,diff,flags,files,footer"
26
+ behavior: default
27
+ require_changes: no
28
+
29
+ ignore:
30
+ - "examples"
31
+ - "tests"
32
+ - "setup.py"
33
+ - "abcrules_mip.py"
@@ -0,0 +1,44 @@
1
+ name: Build
2
+
3
+ on:
4
+ # TODO Can we make this workflow depend on unittests to avoid building broken packages?
5
+ # As it seems: no, we cannot. At least not really. Jobs can depend on other jobs, but workflows
6
+ # cannot depend on other workflows. But jobs cannot be triggered by events, only workflows are
7
+ # triggered by events. That means we would need to run the build/upload job for every commit
8
+ # and every Python version and then check if it is the right Python version and if there is a
9
+ # new tag and only then really upload a package.
10
+ # The only additional advantage of this approach might be that we could test the package
11
+ # building process for every commit and every Python version comfortably.
12
+ #
13
+ # Note: building the package is also tested in unittests.yml.
14
+ #
15
+ # https://github.community/t/how-do-i-specify-job-dependency-running-in-another-workflow/16482/2
16
+ # https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows#creating-dependent-jobs
17
+ push:
18
+ tags:
19
+ - v*
20
+
21
+ jobs:
22
+ build:
23
+ runs-on: ubuntu-latest
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v5
30
+ with:
31
+ python-version: "3.12"
32
+
33
+ - name: Upgrade pip and install build tools
34
+ run: |
35
+ python -m pip install --upgrade pip
36
+ pip install build
37
+
38
+ - name: Build a binary wheel and a source tarball
39
+ run: python -m build
40
+
41
+ - name: Publish distribution package to PyPI
42
+ uses: pypa/gh-action-pypi-publish@release/v1
43
+ with:
44
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,52 @@
1
+ name: Unittests using abcvoting installed from pip, daily
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 5 * * *' # every day at 5:00
6
+
7
+ jobs:
8
+ unittests:
9
+
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
14
+ fail-fast: false
15
+
16
+ steps:
17
+ - name: get latest release with tag
18
+ id: latestrelease
19
+ run: |
20
+ echo "{releasetag}=$(curl -s https://api.github.com/repos/martinlackner/abcvoting/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> $GITHUB_OUTPUT
21
+ - name: confirm release tag
22
+ run: |
23
+ echo ${{ steps.latestrelease.outputs.releasetag }}
24
+ - name: tagcheckout
25
+ uses: actions/checkout@v4
26
+ with:
27
+ ref: ${{ steps.latestrelease.outputs.releasetag }}
28
+
29
+ - name: Set up Python ${{ matrix.python-version }}
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: ${{ matrix.python-version }}
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ python -m pip install --upgrade pip
37
+ pip install setuptools
38
+ pip install abcvoting
39
+ pip install gmpy2
40
+ pip install ortools
41
+ pip install gurobipy
42
+ pip install pytest
43
+ pip install ortools
44
+
45
+ - name: Test with pytest
46
+ run: |
47
+ rm -r abcvoting
48
+ ls
49
+ echo $PYTHONPATH
50
+ export PYTHONPATH=$PYTHONPATH:$PWD
51
+ echo $PYTHONPATH
52
+ pytest -v --tb=long -m "not mip and (not gurobipy or not slow) and (not ortools or not slow) and not veryslow" -ra tests/
@@ -0,0 +1,40 @@
1
+ name: Almost full unittests, weekly
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 20 * * Tue' # every Tuesday
6
+
7
+ jobs:
8
+ unittests:
9
+
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
14
+ fail-fast: false
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ # fetch all tags to be able to generate a version number for test packages
20
+ fetch-depth: 0
21
+
22
+ - name: Set up Python ${{ matrix.python-version }}
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install dependencies
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install setuptools
31
+ pip install -e .[dev]
32
+ pip install gmpy2
33
+ pip install ortools
34
+
35
+ - name: Test with pytest (full tests except Gurobi on large instances)
36
+ run: |
37
+ echo $PYTHONPATH
38
+ export PYTHONPATH=$PYTHONPATH:$PWD
39
+ echo $PYTHONPATH
40
+ pytest -v --tb=long -m "not mip and (not gurobipy or not slow) and not veryslow" -ra tests/
@@ -0,0 +1,95 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see:
3
+ # https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
4
+
5
+ name: Unittests
6
+
7
+ on:
8
+ push:
9
+ branches: [ "master" ]
10
+ pull_request:
11
+ branches: [ "master" ]
12
+ workflow_dispatch:
13
+ branches: [ "master" ]
14
+
15
+ jobs:
16
+ unittests:
17
+
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ matrix:
21
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
22
+ fail-fast: false
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ # fetch all tags to be able to generate a version number for test packages
28
+ fetch-depth: 0
29
+
30
+ - name: Set up Python ${{ matrix.python-version }}
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Install dependencies
36
+ run: |
37
+ python -m pip install --upgrade pip
38
+ pip install setuptools
39
+ pip install -e .[dev]
40
+ pip install gmpy2
41
+ pip install ortools
42
+
43
+ # these are optional requirements, but we want GLPK_MI to be installed to run more unitests
44
+ # TODO: cvxpy pip install is not working currently
45
+ # pip install cvxpy
46
+ # pip install cvxopt
47
+
48
+ # cvxpy is currently not used
49
+ #- name: Test if solver GLPK_MI is installed
50
+ # this is just a paranoia check, because unit tests won't fail, they would be silently skipped
51
+ # run: python -c "import cvxpy as cp; assert cp.GLPK_MI in cp.installed_solvers(), 'GLPKI_MI not installed'"
52
+
53
+ - name: Lint with flake8
54
+ run: |
55
+ pip install flake8
56
+ # stop the build if there are Python syntax errors or undefined names
57
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
58
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
59
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
60
+
61
+ - name: Check for correct black formatting
62
+ run: black --check .
63
+
64
+ - name: Test with pytest
65
+ run: |
66
+ coverage run --source=. -m pytest -v --tb=long -m "not mip and (not gurobipy or not slow) and (not ortools or not slow) and not veryslow" -ra tests/
67
+
68
+ - name: Generate coverage report
69
+ run: coverage xml
70
+
71
+ - name: Upload coverage metrics to codecov
72
+ uses: codecov/codecov-action@v4
73
+ env:
74
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
75
+
76
+ # tests the package, the release is done in build.yml
77
+ - name: Build a binary wheel and a source tarball
78
+ run: |
79
+ pip install build
80
+ python -m build
81
+ env:
82
+ # does not increment on re-run... :(
83
+ # this means this will fail in the last step, when uploading the same package again to PyPI
84
+ # because PyPI requires unique file names for uploaded packages
85
+ BUILD_NUMBER: ${{ github.run_number }}
86
+
87
+ # tests uploading the package to the test repo, but only if API_KEY is defined
88
+ - name: Publish distribution package to Test PyPI
89
+ env:
90
+ TEST_PYPI_API_TOKEN: ${{ secrets.TEST_PYPI_API_TOKEN }}
91
+ if: (env.TEST_PYPI_API_TOKEN != null) && (matrix.python-version == '3.8') && (github.ref == 'refs/heads/master')
92
+ uses: pypa/gh-action-pypi-publish@release/v1
93
+ with:
94
+ password: ${{ secrets.TEST_PYPI_API_TOKEN }}
95
+ repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,88 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.pyc
5
+
6
+ # Distribution / packaging
7
+ .Python
8
+ build/
9
+ develop-eggs/
10
+ dist/
11
+ downloads/
12
+ eggs/
13
+ .eggs/
14
+ lib/
15
+ lib64/
16
+ parts/
17
+ sdist/
18
+ var/
19
+ wheels/
20
+ *.egg-info/
21
+ .installed.cfg
22
+ *.egg
23
+ MANIFEST
24
+
25
+ # Installer logs
26
+ pip-log.txt
27
+ pip-delete-this-directory.txt
28
+
29
+ # Unit test / coverage reports
30
+ htmlcov/
31
+ .tox/
32
+ .pytest_cache
33
+ .coverage
34
+ .coverage.*
35
+ .cache
36
+ nosetests.xml
37
+ coverage.xml
38
+ *.cover
39
+ Test Results*
40
+
41
+ # Jupyter NB Checkpoints
42
+ .ipynb_checkpoints/
43
+
44
+ # VS Code
45
+ .vscode/
46
+
47
+ # Spyder
48
+ .spyproject/
49
+
50
+ # PyDev
51
+ .pydevproject
52
+ .project
53
+ .settings
54
+
55
+ # Mac OS-specific storage files
56
+ .DS_Store
57
+
58
+ # VIM
59
+ *.swp
60
+ *.swo
61
+
62
+ # Pycharm
63
+ .idea
64
+
65
+ gurobi.log
66
+
67
+ # LaTex
68
+ *.log
69
+ *.aux
70
+ *.bbl
71
+ *.bcf
72
+ *.blg
73
+ *.toc
74
+ *.snm
75
+ *.nav
76
+ *.run.xml
77
+
78
+ # Sphinx
79
+ docs/_build
80
+
81
+ # Other
82
+ excluded
83
+ *.cache
84
+ venv*
85
+ /coverage.sh
86
+ scratchpad
87
+ *_py.new
88
+ benchmark
@@ -0,0 +1,11 @@
1
+ repos:
2
+ - repo: https://github.com/psf/black
3
+ rev: 25.11.0
4
+ hooks:
5
+ - id: black
6
+ language_version: python3.12
7
+
8
+ - repo: https://github.com/pycqa/flake8
9
+ rev: 7.3.0
10
+ hooks:
11
+ - id: flake8
@@ -0,0 +1,26 @@
1
+ # .readthedocs.yaml
2
+ # Read the Docs configuration file
3
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
4
+
5
+ # Required
6
+ version: 2
7
+
8
+ # Set the version of Python and other tools you might need
9
+ build:
10
+ os: ubuntu-20.04
11
+ tools:
12
+ python: "3.10"
13
+
14
+ # Build documentation in the docs/ directory with Sphinx
15
+ sphinx:
16
+ configuration: docs/conf.py
17
+
18
+ # If using Sphinx, optionally build your docs in additional formats such as PDF
19
+ # formats:
20
+ # - pdf
21
+
22
+ # Optionally declare the Python requirements required to build your docs
23
+ python:
24
+ install:
25
+ - requirements: docs/requirements.txt
26
+
@@ -0,0 +1,24 @@
1
+ cff-version: 1.2.0
2
+ title: "abcvoting"
3
+ message: >-
4
+ If you would like to acknowledge our work in a
5
+ scientific paper, please use the following citation:
6
+ preferred-citation:
7
+ type: article
8
+ journal: "Journal of Open Source Software"
9
+ title: "abcvoting: A Python package for approval-based multi-winner voting rules"
10
+ volume: 8
11
+ issue: 81
12
+ start: 4880
13
+ year: 2023
14
+ doi: 10.21105/joss.04880
15
+ url: 'https://github.com/martinlackner/abcvoting'
16
+ authors:
17
+ - given-names: Martin
18
+ family-names: Lackner
19
+ orcid: 'https://orcid.org/0000-0003-2170-0770'
20
+ - given-names: Peter
21
+ family-names: Regner
22
+ orcid: 'https://orcid.org/0000-0001-8480-4900'
23
+ - given-names: Benjamin
24
+ family-names: Krenn
@@ -0,0 +1,17 @@
1
+ # Welcome to abcvoting
2
+
3
+ Thank you for taking a closer look at our project!
4
+
5
+ We are very happy about all contributions! As this is a small project,
6
+ the best way to contribute is to simply get in contact with me (Martin Lackner, lackner@dbai.tuwien.ac.at) or to
7
+ post an [issue](https://github.com/martinlackner/abcvoting/issues).
8
+
9
+ Further comments:
10
+ - Documentation is available at https://abcvoting.readthedocs.io/en/latest/.
11
+ - If you would like to contribute but don't have a concrete idea, take a look the open [issues](https://github.com/martinlackner/abcvoting/issues) or
12
+ contact me directly (Martin Lackner, lackner@dbai.tuwien.ac.at).
13
+ - If you would like to contribute your favourite approval-based committee voting rules or axiom, you are very welcome to do so!
14
+ Take a look at [abcrules.py](https://github.com/martinlackner/abcvoting/blob/master/abcvoting/abcrules.py), where you find
15
+ implementations of most standard rules. I am happy to help with integrating your new rule in the code (unit tests, etc.).
16
+ - If you would like to contribute code, please clone the repository and make a pull request (PR) once you have a working version.
17
+ We can then discuss your code in detail. Feel free to get in touch before or while you are working on something.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Martin Lackner
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,193 @@
1
+ Metadata-Version: 2.4
2
+ Name: abcvoting
3
+ Version: 2.16.0
4
+ Summary: A Python library of approval-based committee (ABC) rules
5
+ Author-email: Martin Lackner <unexpected@sent.at>
6
+ License: MIT License
7
+ Project-URL: Homepage, https://github.com/martinlackner/abcvoting/
8
+ Project-URL: Bug Tracker, https://github.com/martinlackner/abcvoting/issues
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.10
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Intended Audience :: Science/Research
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: networkx[default]>=2.6.3
21
+ Requires-Dist: ruamel.yaml>=0.17
22
+ Requires-Dist: numpy>=1.21
23
+ Requires-Dist: gurobipy>=11.0
24
+ Requires-Dist: preflibtools>=2.0.12
25
+ Requires-Dist: prefsampling>=0.1.19
26
+ Requires-Dist: pabutools>=1.1.15
27
+ Requires-Dist: pulp[open_py]>=3.2
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=6; extra == "dev"
30
+ Requires-Dist: coverage[toml]>=5.3; extra == "dev"
31
+ Requires-Dist: black==25.1; extra == "dev"
32
+ Requires-Dist: flake8==7.3.0; extra == "dev"
33
+ Requires-Dist: Sphinx>=7.0; extra == "dev"
34
+ Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "dev"
35
+ Requires-Dist: numpydoc>=1.5; extra == "dev"
36
+ Requires-Dist: sphinx-codeautolink>=0.15; extra == "dev"
37
+ Requires-Dist: matplotlib>=3.4.3; extra == "dev"
38
+ Dynamic: license-file
39
+
40
+ [![DOI](https://zenodo.org/badge/192713860.svg)](https://zenodo.org/badge/latestdoi/192713860)
41
+ [![DOI](https://joss.theoj.org/papers/10.21105/joss.04880/status.svg)](https://doi.org/10.21105/joss.04880)
42
+ [![PyPi](https://badgen.net/pypi/v/abcvoting)](https://pypi.org/project/abcvoting/)
43
+ ![Python versions](https://badgen.net/pypi/python/abcvoting)
44
+ [![Build badge](https://github.com/martinlackner/abcvoting/workflows/Build/badge.svg)](https://github.com/martinlackner/abcvoting/actions)
45
+ [![Unittests badge](https://github.com/martinlackner/abcvoting/workflows/Unittests/badge.svg)](https://github.com/martinlackner/abcvoting/actions)
46
+ [![docs](https://readthedocs.org/projects/abcvoting/badge/?version=latest&style=plastic)](https://abcvoting.readthedocs.io/en/latest/)
47
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
48
+ [![codecov](https://codecov.io/gh/martinlackner/abcvoting/branch/master/graph/badge.svg)](https://codecov.io/gh/martinlackner/abcvoting)
49
+
50
+ # abcvoting
51
+
52
+ > [!NOTE]
53
+ > - [**Documentation**](https://abcvoting.readthedocs.io/)
54
+ > - [**Installation**](https://abcvoting.readthedocs.io/en/latest/installation.html)
55
+ > - [**How to cite the abcvoting library**](https://abcvoting.readthedocs.io/en/latest/howtocite.html)
56
+ > - [**Acknowledgements and contributors**](https://abcvoting.readthedocs.io/en/latest/acks.html)
57
+ > - [**► abcvoting web app**](https://pref.tools/abcvoting/)
58
+
59
+ For an overview of other software tools related to Computational Social Choice, see the [COMSOC community page](https://comsoc-community.org/tools).
60
+
61
+ ## A Python library of approval-based committee (ABC) rules
62
+
63
+ **A**pproval-**b**ased **c**ommittee rules (ABC rules) are voting methods for selecting a committee, i.e., a fixed-size subset of candidates.
64
+ ABC rules are also known as approval-based multi-winner rules.
65
+ The input of such rules are
66
+ [approval ballots](https://en.wikipedia.org/wiki/Approval_voting#/media/File:Approval_ballot.svg).
67
+ We recommend the book
68
+ ([Multi-Winner Voting with Approval Preferences](https://link.springer.com/book/10.1007/978-3-031-09016-5))
69
+ by Lackner and Skowron [2] as a detailed introduction to ABC rules and related research directions.
70
+ In addition, the
71
+ [survey by Faliszewski et al.](http://research.illc.uva.nl/COST-IC1205/BookDocs/Chapters/TrendsCOMSOC-02.pdf) [1]
72
+ is useful as a more general introduction to committee voting (not limited to approval ballots).
73
+
74
+ The following ABC rules are implemented:
75
+
76
+ * Approval Voting (AV)
77
+
78
+ * Satisfaction Approval Voting (SAV)
79
+
80
+ * Proportional Approval Voting (PAV)
81
+
82
+ * Sequential Proportional Approval Voting (seq-PAV)
83
+
84
+ * Reverse Sequential Proportional Approval Voting (revseq-PAV)
85
+
86
+ * Approval Chamberlin-Courant (CC)
87
+
88
+ * Phragmén's sequential rule
89
+
90
+ * Monroe's rule
91
+
92
+ * Minimax Approval Voting (MAV)
93
+
94
+ * Greedy Monroe
95
+
96
+ * Method of Equal Shares (Rule X)
97
+
98
+ * Phragmén's First Method (Enestr&ouml;m's Method)
99
+
100
+ * and many more ...
101
+
102
+ In addition, one can verify axiomatic properties such as
103
+
104
+ * Justified Representation (JR)
105
+
106
+ * Propotional Justified Representation (PJR)
107
+
108
+ * Extended Justified Representation (EJR)
109
+
110
+ * Priceability
111
+
112
+ * The core property
113
+
114
+ Instead of using the abcvoting Python library, you can also use the
115
+ [**abcvoting web application**](https://pref.tools/abcvoting/) by Dominik Peters
116
+ (which is based on this Python library).
117
+
118
+ ## Installation
119
+
120
+ As simple as:
121
+
122
+ ```bash
123
+ pip install abcvoting
124
+ ```
125
+
126
+ Further details can be found [here](https://abcvoting.readthedocs.io/en/latest/installation.html).
127
+
128
+ ## Development
129
+
130
+ Install all dependencies including development requirements and the abcvoting package in
131
+ [development mode](https://setuptools.readthedocs.io/en/latest/userguide/development_mode.html):
132
+
133
+ ```bash
134
+ pip install -e ".[dev]"
135
+ ```
136
+
137
+ Basic unit tests can be run by excluding tests which require additional dependencies:
138
+
139
+ ```bash
140
+ pytest -m "not mip and not ortools and not gmpy2 and not slow" tests/
141
+ ```
142
+
143
+ For development, configure the black formatter and pre-commit hooks - see below. Also installing
144
+ all optional dependencies is recommended.
145
+
146
+ A development package is build for every commit on the master branch and uploaded to the test
147
+ instance of PyPI. It can be installed using the following command:
148
+
149
+ ```bash
150
+ python3 -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple abcvoting
151
+ ```
152
+
153
+
154
+ ### Black formatting
155
+
156
+ Code needs to be formatted using the [black formatter](https://black.readthedocs.io/en/stable/). This is
157
+ checked by Github actions.
158
+ [Configure your editor](https://black.readthedocs.io/en/stable/integrations/editors.html) to run the
159
+ black formatter.
160
+
161
+ ### Pre-commit hooks
162
+
163
+ Pre-commit hooks are not required, but they are recommended for development.
164
+ [Pre-commit](https://pre-commit.com/) is used to manage and maintain pre-commit hooks. Install
165
+ pre-commit (e.g. via apt, conda or pip) and then run `$ pre-commit install` to install the hooks.
166
+
167
+
168
+ ## References
169
+
170
+ [1] Piotr Faliszewski, Piotr Skowron, Arkadii Slinko, and Nimrod Talmon. Multiwinner voting: A
171
+ new challenge for social choice theory. In Ulle Endriss, editor, Trends in Computational Social
172
+ Choice, chapter 2, pages 27–47. AI Access, 2017. http://research.illc.uva.nl/COST-IC1205/BookDocs/Chapters/TrendsCOMSOC-02.pdf
173
+
174
+ [2] Lackner, Martin, and Piotr Skowron. "Multi-Winner Voting with Approval Preferences".
175
+ Springer International Publishing, SpringerBriefs in Intelligent Systems , 2023.
176
+ https://link.springer.com/book/10.1007/978-3-031-09016-5
177
+
178
+ <!--
179
+ [2] Markus Brill, Rupert Freeman, Svante Janson and Martin Lackner. Phragmén's Voting Methods and Justified Representation. In Proceedings of the 31st AAAI Conference on Artificial Intelligence (AAAI 2017), pages 406-413, AAAI Press, 2017. https://arxiv.org/abs/2102.12305
180
+
181
+ [3] Steven J Brams, D Marc Kilgour, and M Remzi Sanver. A minimax procedure for electing committees. Public Choice, 132(3-4):401–420, 2007.
182
+
183
+ [4] Martin Lackner, Piotr Skowron.
184
+ A Quantitative Analysis of Multi-Winner Rules. arXiv preprint arXiv:1801.01527. 2018. https://arxiv.org/abs/1801.01527
185
+
186
+ [5] Properties of multiwinner voting rules.
187
+ Edith Elkind, Piotr Faliszewski, Piotr Skowron, and Arkadii Slinko.
188
+ Social Choice and Welfare volume 48, pages 599–632. 2017. https://link.springer.com/article/10.1007/s00355-017-1026-z
189
+
190
+ [6] Peters, Dominik, and Piotr Skowron.
191
+ Proportionality and the Limits of Welfarism. arXiv preprint arXiv:1911.11747. 2019. https://arxiv.org/abs/1911.11747
192
+
193
+ -->