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.
- abcvoting-2.16.0/.flake8 +15 -0
- abcvoting-2.16.0/.github/codecov.yml +33 -0
- abcvoting-2.16.0/.github/workflows/build.yml +44 -0
- abcvoting-2.16.0/.github/workflows/piptest.yml +52 -0
- abcvoting-2.16.0/.github/workflows/piptestfull.yml +40 -0
- abcvoting-2.16.0/.github/workflows/unittests.yml +95 -0
- abcvoting-2.16.0/.gitignore +88 -0
- abcvoting-2.16.0/.pre-commit-config.yaml +11 -0
- abcvoting-2.16.0/.readthedocs.yaml +26 -0
- abcvoting-2.16.0/CITATION.cff +24 -0
- abcvoting-2.16.0/CONTRIBUTING.md +17 -0
- abcvoting-2.16.0/LICENSE +21 -0
- abcvoting-2.16.0/PKG-INFO +193 -0
- abcvoting-2.16.0/README.md +154 -0
- abcvoting-2.16.0/abcvoting/__init__.py +0 -0
- abcvoting-2.16.0/abcvoting/abcrules.py +4853 -0
- abcvoting-2.16.0/abcvoting/abcrules_gurobi.py +877 -0
- abcvoting-2.16.0/abcvoting/abcrules_mip.py +555 -0
- abcvoting-2.16.0/abcvoting/abcrules_ortools.py +285 -0
- abcvoting-2.16.0/abcvoting/abcrules_pulp.py +789 -0
- abcvoting-2.16.0/abcvoting/fileio.py +508 -0
- abcvoting-2.16.0/abcvoting/generate.py +1009 -0
- abcvoting-2.16.0/abcvoting/misc.py +449 -0
- abcvoting-2.16.0/abcvoting/output.py +236 -0
- abcvoting-2.16.0/abcvoting/preferences.py +379 -0
- abcvoting-2.16.0/abcvoting/properties.py +1717 -0
- abcvoting-2.16.0/abcvoting/scores.py +549 -0
- abcvoting-2.16.0/abcvoting.egg-info/PKG-INFO +193 -0
- abcvoting-2.16.0/abcvoting.egg-info/SOURCES.txt +619 -0
- abcvoting-2.16.0/abcvoting.egg-info/dependency_links.txt +1 -0
- abcvoting-2.16.0/abcvoting.egg-info/requires.txt +19 -0
- abcvoting-2.16.0/abcvoting.egg-info/top_level.txt +1 -0
- abcvoting-2.16.0/docs/Makefile +20 -0
- abcvoting-2.16.0/docs/_static/logo.png +0 -0
- abcvoting-2.16.0/docs/abcrules.rst +11 -0
- abcvoting-2.16.0/docs/acks.rst +23 -0
- abcvoting-2.16.0/docs/conf.py +77 -0
- abcvoting-2.16.0/docs/fileio.rst +6 -0
- abcvoting-2.16.0/docs/generate.rst +10 -0
- abcvoting-2.16.0/docs/howtocite.rst +34 -0
- abcvoting-2.16.0/docs/index.rst +54 -0
- abcvoting-2.16.0/docs/installation.rst +57 -0
- abcvoting-2.16.0/docs/intro-abcrules.rst +83 -0
- abcvoting-2.16.0/docs/intro-computing-winning-committees.rst +147 -0
- abcvoting-2.16.0/docs/intro-example.rst +52 -0
- abcvoting-2.16.0/docs/intro-properties.rst +69 -0
- abcvoting-2.16.0/docs/makedoc.sh +4 -0
- abcvoting-2.16.0/docs/misc.rst +10 -0
- abcvoting-2.16.0/docs/output.rst +6 -0
- abcvoting-2.16.0/docs/preferences.rst +10 -0
- abcvoting-2.16.0/docs/properties.rst +10 -0
- abcvoting-2.16.0/docs/requirements.txt +14 -0
- abcvoting-2.16.0/docs/scores.rst +7 -0
- abcvoting-2.16.0/examples/__init__.py +0 -0
- abcvoting-2.16.0/examples/abcbook/__init__.py +0 -0
- abcvoting-2.16.0/examples/abcbook/example201.py +36 -0
- abcvoting-2.16.0/examples/abcbook/example202.py +47 -0
- abcvoting-2.16.0/examples/abcbook/example203.py +48 -0
- abcvoting-2.16.0/examples/abcbook/example204.py +48 -0
- abcvoting-2.16.0/examples/abcbook/example205.py +75 -0
- abcvoting-2.16.0/examples/abcbook/example206.py +32 -0
- abcvoting-2.16.0/examples/abcbook/example207.py +53 -0
- abcvoting-2.16.0/examples/abcbook/example208.py +50 -0
- abcvoting-2.16.0/examples/abcbook/example209.py +48 -0
- abcvoting-2.16.0/examples/abcbook/example210.py +53 -0
- abcvoting-2.16.0/examples/abcbook/example211.py +47 -0
- abcvoting-2.16.0/examples/abcbook/example212.py +41 -0
- abcvoting-2.16.0/examples/abcbook/example213.py +35 -0
- abcvoting-2.16.0/examples/abcbook/example214.py +35 -0
- abcvoting-2.16.0/examples/abcbook/propositionA2.py +98 -0
- abcvoting-2.16.0/examples/abcbook/propositionA3.py +380 -0
- abcvoting-2.16.0/examples/abcbook/propositionA4.py +210 -0
- abcvoting-2.16.0/examples/abcbook/remark02.py +38 -0
- abcvoting-2.16.0/examples/allrules.py +27 -0
- abcvoting-2.16.0/examples/axiomatic_properties.py +38 -0
- abcvoting-2.16.0/examples/generating_random_profiles.py +68 -0
- abcvoting-2.16.0/examples/handling_preflib_files.py +48 -0
- abcvoting-2.16.0/examples/preflib-files/example.toi +22 -0
- abcvoting-2.16.0/examples/preflib-files/new_example.cat +24 -0
- abcvoting-2.16.0/examples/simple.py +19 -0
- abcvoting-2.16.0/paper/paper-joss.pdf +0 -0
- abcvoting-2.16.0/paper/paper.bib +120 -0
- abcvoting-2.16.0/paper/paper.md +119 -0
- abcvoting-2.16.0/pyproject.toml +128 -0
- abcvoting-2.16.0/setup.cfg +4 -0
- abcvoting-2.16.0/tests/conftest.py +22 -0
- abcvoting-2.16.0/tests/data/poland_lodz_2020_mileszki.pb +986 -0
- abcvoting-2.16.0/tests/data/poland_lodz_2020_nad-nerem.pb +638 -0
- abcvoting-2.16.0/tests/data/poland_lodz_2020_nowosolna.pb +1469 -0
- abcvoting-2.16.0/tests/data/test1.toi +22 -0
- abcvoting-2.16.0/tests/data/test2.soi +20 -0
- abcvoting-2.16.0/tests/data/test3.toc +21 -0
- abcvoting-2.16.0/tests/data/test4.cat +26 -0
- abcvoting-2.16.0/tests/data/test5.cat +29 -0
- abcvoting-2.16.0/tests/data/test6.abc.yaml +11 -0
- abcvoting-2.16.0/tests/data/test7.abc.yaml +4 -0
- abcvoting-2.16.0/tests/data/test8.abc.yaml +7 -0
- abcvoting-2.16.0/tests/data-fail/test1.abc.yaml +4 -0
- abcvoting-2.16.0/tests/data-fail/test1.toi +12 -0
- abcvoting-2.16.0/tests/data-fail/test2.abc.yaml +6 -0
- abcvoting-2.16.0/tests/data-fail/test2.soi +10 -0
- abcvoting-2.16.0/tests/data-fail/test3.abc.yaml +11 -0
- abcvoting-2.16.0/tests/data-fail/test3.toc +13 -0
- abcvoting-2.16.0/tests/data-fail/test6.soi +10 -0
- abcvoting-2.16.0/tests/data-fail/test7.toi +13 -0
- abcvoting-2.16.0/tests/data-fail/test8.soi +11 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example01_py +14 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example02_py +50 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example03_py +28 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example04_py +28 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example05_py +134 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example06_py +59 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example07_py +33 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example08_py +35 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example09_py +54 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example10_py +34 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example11_py +62 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example12_py +73 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example13_py +35 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_example14_py +35 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_propositionA2_py +277 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_propositionA3_py +460 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_propositionA4_py +240 -0
- abcvoting-2.16.0/tests/expected_output/test_abcbook_remark02_py +57 -0
- abcvoting-2.16.0/tests/expected_output/test_allrules_py +282 -0
- abcvoting-2.16.0/tests/expected_output/test_axiomatic_properties +48 -0
- abcvoting-2.16.0/tests/expected_output/test_axiomatic_properties.new +8 -0
- abcvoting-2.16.0/tests/expected_output/test_generating_random_profiles_py +8 -0
- abcvoting-2.16.0/tests/expected_output/test_handling_preflib_files_py +43 -0
- abcvoting-2.16.0/tests/expected_output/test_simple_py +17 -0
- abcvoting-2.16.0/tests/test_abcrules.py +1743 -0
- abcvoting-2.16.0/tests/test_examples.py +183 -0
- abcvoting-2.16.0/tests/test_fileio.py +214 -0
- abcvoting-2.16.0/tests/test_generate.py +195 -0
- abcvoting-2.16.0/tests/test_instances/generate_unittest_instances.py +160 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0000.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0001.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0002.abc.yaml +169 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0003.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0004.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0005.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0006.abc.yaml +169 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0007.abc.yaml +173 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0008.abc.yaml +173 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0009.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0010.abc.yaml +173 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0011.abc.yaml +169 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0012.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0013.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0014.abc.yaml +169 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0015.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0016.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0017.abc.yaml +167 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0018.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0019.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0020.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0021.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0022.abc.yaml +167 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0023.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0024.abc.yaml +167 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0025.abc.yaml +167 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0026.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0027.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0028.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0029.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0030.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0031.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0032.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0033.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0034.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0035.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0036.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0037.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0038.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0039.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0040.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0041.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0042.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0043.abc.yaml +179 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0044.abc.yaml +177 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0045.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0046.abc.yaml +173 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0047.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0048.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0049.abc.yaml +177 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0050.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0051.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0052.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0053.abc.yaml +173 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0054.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0055.abc.yaml +178 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0056.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0057.abc.yaml +180 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0058.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0059.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0060.abc.yaml +167 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0061.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0062.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0063.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0064.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0065.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0066.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0067.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0068.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0069.abc.yaml +180 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0070.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0071.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0072.abc.yaml +164 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0073.abc.yaml +164 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0074.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0075.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0076.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0077.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0078.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0079.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0080.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0081.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0082.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0083.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0084.abc.yaml +164 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0085.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0086.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0087.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0088.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0089.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0090.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0091.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0092.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0093.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0094.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0095.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0096.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0097.abc.yaml +165 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0098.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0099.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0100.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0101.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0102.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0103.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0104.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0105.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0106.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0107.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0108.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0109.abc.yaml +180 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0110.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0111.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0112.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0113.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0114.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0115.abc.yaml +185 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0116.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0117.abc.yaml +193 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0118.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0119.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0120.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0121.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0122.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0123.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0124.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0125.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0126.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0127.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0128.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0129.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0130.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0131.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0132.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0133.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0134.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0135.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0136.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0137.abc.yaml +182 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0138.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0139.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0140.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0141.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0142.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0143.abc.yaml +180 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0144.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0145.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0146.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0147.abc.yaml +207 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0148.abc.yaml +211 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0149.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0150.abc.yaml +201 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0151.abc.yaml +207 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0152.abc.yaml +193 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0153.abc.yaml +223 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0154.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0155.abc.yaml +211 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0156.abc.yaml +182 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0157.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0158.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0159.abc.yaml +202 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0160.abc.yaml +210 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0161.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0162.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0163.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0164.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0165.abc.yaml +234 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0166.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0167.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0168.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0169.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0170.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0171.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0172.abc.yaml +210 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0173.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0174.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0175.abc.yaml +214 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0176.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0177.abc.yaml +218 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0178.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0179.abc.yaml +206 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0180.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0181.abc.yaml +224 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0182.abc.yaml +247 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0183.abc.yaml +205 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0184.abc.yaml +211 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0185.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0186.abc.yaml +211 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0187.abc.yaml +217 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0188.abc.yaml +251 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0189.abc.yaml +263 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0190.abc.yaml +201 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0191.abc.yaml +207 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0192.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0193.abc.yaml +223 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0194.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0195.abc.yaml +210 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0196.abc.yaml +212 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0197.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0198.abc.yaml +200 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0199.abc.yaml +208 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0200.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0201.abc.yaml +252 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0202.abc.yaml +195 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0203.abc.yaml +210 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0204.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0205.abc.yaml +223 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0206.abc.yaml +202 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0207.abc.yaml +208 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0208.abc.yaml +212 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0209.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0210.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0211.abc.yaml +212 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0212.abc.yaml +208 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0213.abc.yaml +250 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0214.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0215.abc.yaml +202 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0216.abc.yaml +204 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0217.abc.yaml +228 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0218.abc.yaml +231 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0219.abc.yaml +233 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0220.abc.yaml +189 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0221.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0222.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0223.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0224.abc.yaml +201 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0225.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0226.abc.yaml +185 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0227.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0228.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0229.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0230.abc.yaml +229 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0231.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0232.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0233.abc.yaml +183 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0234.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0235.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0236.abc.yaml +206 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0237.abc.yaml +210 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0238.abc.yaml +185 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0239.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0240.abc.yaml +185 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0241.abc.yaml +201 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0242.abc.yaml +230 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0243.abc.yaml +232 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0244.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0245.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0246.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0247.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0248.abc.yaml +206 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0249.abc.yaml +214 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0250.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0251.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0252.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0253.abc.yaml +180 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0254.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0255.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0256.abc.yaml +205 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0257.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0258.abc.yaml +193 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0259.abc.yaml +201 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0260.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0261.abc.yaml +205 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0262.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0263.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0264.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0265.abc.yaml +205 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0266.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0267.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0268.abc.yaml +206 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0269.abc.yaml +187 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0270.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0271.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0272.abc.yaml +182 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0273.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0274.abc.yaml +183 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0275.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0276.abc.yaml +197 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0277.abc.yaml +181 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0278.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0279.abc.yaml +194 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0280.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0281.abc.yaml +182 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0282.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0283.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0284.abc.yaml +182 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0285.abc.yaml +188 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0286.abc.yaml +182 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0287.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0288.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0289.abc.yaml +242 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0290.abc.yaml +321 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0291.abc.yaml +235 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0292.abc.yaml +247 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0293.abc.yaml +219 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0294.abc.yaml +227 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0295.abc.yaml +245 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0296.abc.yaml +225 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0297.abc.yaml +243 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0298.abc.yaml +221 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0299.abc.yaml +221 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0300.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0301.abc.yaml +211 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0302.abc.yaml +221 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0303.abc.yaml +236 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0304.abc.yaml +240 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0305.abc.yaml +209 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0306.abc.yaml +218 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0307.abc.yaml +242 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0308.abc.yaml +212 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0309.abc.yaml +264 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0310.abc.yaml +199 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0311.abc.yaml +218 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0312.abc.yaml +223 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0313.abc.yaml +209 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0314.abc.yaml +218 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0315.abc.yaml +236 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0316.abc.yaml +246 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0317.abc.yaml +208 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0318.abc.yaml +216 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0319.abc.yaml +240 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0320.abc.yaml +206 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0321.abc.yaml +252 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0322.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0323.abc.yaml +220 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0324.abc.yaml +216 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0325.abc.yaml +290 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0326.abc.yaml +333 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0327.abc.yaml +263 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0328.abc.yaml +269 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0329.abc.yaml +229 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0330.abc.yaml +261 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0331.abc.yaml +279 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0332.abc.yaml +251 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0333.abc.yaml +299 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0334.abc.yaml +229 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0335.abc.yaml +267 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0336.abc.yaml +210 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0337.abc.yaml +245 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0338.abc.yaml +329 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0339.abc.yaml +264 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0340.abc.yaml +270 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0341.abc.yaml +231 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0342.abc.yaml +248 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0343.abc.yaml +268 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0344.abc.yaml +244 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0345.abc.yaml +298 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0346.abc.yaml +225 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0347.abc.yaml +254 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0348.abc.yaml +203 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0349.abc.yaml +263 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0350.abc.yaml +226 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0351.abc.yaml +262 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0352.abc.yaml +270 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0353.abc.yaml +226 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0354.abc.yaml +250 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0355.abc.yaml +272 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0356.abc.yaml +250 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0357.abc.yaml +282 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0358.abc.yaml +228 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0359.abc.yaml +240 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0360.abc.yaml +230 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0361.abc.yaml +260 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0362.abc.yaml +461 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0363.abc.yaml +287 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0364.abc.yaml +245 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0365.abc.yaml +219 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0366.abc.yaml +237 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0367.abc.yaml +251 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0368.abc.yaml +249 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0369.abc.yaml +255 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0370.abc.yaml +221 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0371.abc.yaml +243 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0372.abc.yaml +220 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0373.abc.yaml +269 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0374.abc.yaml +359 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0375.abc.yaml +286 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0376.abc.yaml +248 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0377.abc.yaml +219 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0378.abc.yaml +238 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0379.abc.yaml +244 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0380.abc.yaml +236 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0381.abc.yaml +268 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0382.abc.yaml +255 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0383.abc.yaml +242 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0384.abc.yaml +215 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0385.abc.yaml +277 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0386.abc.yaml +356 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0387.abc.yaml +286 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0388.abc.yaml +248 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0389.abc.yaml +230 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0390.abc.yaml +244 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0391.abc.yaml +250 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0392.abc.yaml +246 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0393.abc.yaml +244 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0394.abc.yaml +222 -0
- abcvoting-2.16.0/tests/test_instances/instanceL0395.abc.yaml +248 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0000.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0001.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0002.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0003.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0004.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0005.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0006.abc.yaml +168 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0007.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0008.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0009.abc.yaml +178 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0010.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0011.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0012.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0013.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0014.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0015.abc.yaml +175 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0016.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0017.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0018.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0019.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0020.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0021.abc.yaml +170 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0022.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0023.abc.yaml +171 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0024.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0025.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0026.abc.yaml +178 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0027.abc.yaml +196 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0028.abc.yaml +176 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0029.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0030.abc.yaml +172 -0
- abcvoting-2.16.0/tests/test_instances/instanceM0031.abc.yaml +195 -0
- abcvoting-2.16.0/tests/test_instances/instanceS0000.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceS0001.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceS0002.abc.yaml +166 -0
- abcvoting-2.16.0/tests/test_instances/instanceS0003.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0000.abc.yaml +179 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0001.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0002.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0003.abc.yaml +190 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0004.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0005.abc.yaml +212 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0006.abc.yaml +186 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0007.abc.yaml +207 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0008.abc.yaml +220 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0009.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0010.abc.yaml +193 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0011.abc.yaml +224 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0012.abc.yaml +174 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0013.abc.yaml +178 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0014.abc.yaml +211 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0015.abc.yaml +184 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0016.abc.yaml +191 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0017.abc.yaml +198 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0018.abc.yaml +178 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0019.abc.yaml +189 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0020.abc.yaml +216 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0021.abc.yaml +192 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0022.abc.yaml +197 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0023.abc.yaml +220 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0024.abc.yaml +223 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0025.abc.yaml +230 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0026.abc.yaml +287 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0027.abc.yaml +218 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0028.abc.yaml +235 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0029.abc.yaml +248 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0030.abc.yaml +212 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0031.abc.yaml +263 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0032.abc.yaml +308 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0033.abc.yaml +214 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0034.abc.yaml +243 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0035.abc.yaml +290 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0036.abc.yaml +222 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0037.abc.yaml +228 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0038.abc.yaml +245 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0039.abc.yaml +218 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0040.abc.yaml +235 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0041.abc.yaml +274 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0042.abc.yaml +208 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0043.abc.yaml +249 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0044.abc.yaml +310 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0045.abc.yaml +236 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0046.abc.yaml +243 -0
- abcvoting-2.16.0/tests/test_instances/instanceVL0047.abc.yaml +266 -0
- abcvoting-2.16.0/tests/test_instances/update_unittest_instances_for_rule.py +132 -0
- abcvoting-2.16.0/tests/test_misc.py +77 -0
- abcvoting-2.16.0/tests/test_output.py +80 -0
- abcvoting-2.16.0/tests/test_preferences.py +168 -0
- abcvoting-2.16.0/tests/test_properties.py +544 -0
- abcvoting-2.16.0/tests/test_scores.py +70 -0
abcvoting-2.16.0/.flake8
ADDED
|
@@ -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,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.
|
abcvoting-2.16.0/LICENSE
ADDED
|
@@ -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
|
+
[](https://zenodo.org/badge/latestdoi/192713860)
|
|
41
|
+
[](https://doi.org/10.21105/joss.04880)
|
|
42
|
+
[](https://pypi.org/project/abcvoting/)
|
|
43
|
+

|
|
44
|
+
[](https://github.com/martinlackner/abcvoting/actions)
|
|
45
|
+
[](https://github.com/martinlackner/abcvoting/actions)
|
|
46
|
+
[](https://abcvoting.readthedocs.io/en/latest/)
|
|
47
|
+
[](https://github.com/psf/black)
|
|
48
|
+
[](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ö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
|
+
-->
|