sapor 0.3.3

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 (332) hide show
  1. checksums.yaml +7 -0
  2. data/Area Class Diagram.dia +0 -0
  3. data/Area Class Diagram.png +0 -0
  4. data/Class Diagram.dia +0 -0
  5. data/Class Diagram.png +0 -0
  6. data/Example-Catalonia.md +361 -0
  7. data/Example-Flanders.md +486 -0
  8. data/Example-Greece.md +25 -0
  9. data/Example-Oslo.md +678 -0
  10. data/Example-UnitedKingdom-Referendum.md +132 -0
  11. data/Examples.md +15 -0
  12. data/LICENSE +674 -0
  13. data/README.md +103 -0
  14. data/Rakefile +18 -0
  15. data/Technical Documentation.md +14 -0
  16. data/bin/create_installation_package.sh +49 -0
  17. data/bin/install.sh +45 -0
  18. data/bin/sapor.rb +24 -0
  19. data/bin/sapor.sh +106 -0
  20. data/data/hu/hungary-2014.txt +1680 -0
  21. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  22. data/data/hu/hungary_2014_to_psv.rb +80 -0
  23. data/data/hu/index-2014.txt +106 -0
  24. data/data/pl/2015-gl-lis-okr.csv +42 -0
  25. data/data/pl/poland_2015_to_psv.rb +79 -0
  26. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  27. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  28. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  29. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  30. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  31. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  32. data/data/uk/united_kingdom_2015.txt +651 -0
  33. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  34. data/data/uk/united_kingdom_2017.txt +651 -0
  35. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  36. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  37. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  38. data/lib/sapor.rb +150 -0
  39. data/lib/sapor/binomials_cache.rb +45 -0
  40. data/lib/sapor/combinations_distribution.rb +222 -0
  41. data/lib/sapor/denominators.rb +67 -0
  42. data/lib/sapor/dichotomies.rb +138 -0
  43. data/lib/sapor/dichotomy.rb +164 -0
  44. data/lib/sapor/first_past_the_post.rb +82 -0
  45. data/lib/sapor/largest_remainder.rb +118 -0
  46. data/lib/sapor/log4r_logger.rb +49 -0
  47. data/lib/sapor/log_facade.rb +40 -0
  48. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  49. data/lib/sapor/multi_district_proportional.rb +123 -0
  50. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  51. data/lib/sapor/number_formatter.rb +45 -0
  52. data/lib/sapor/options.rb +73 -0
  53. data/lib/sapor/poll.rb +286 -0
  54. data/lib/sapor/polychotomy.rb +200 -0
  55. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  56. data/lib/sapor/referendum_polychotomy.rb +165 -0
  57. data/lib/sapor/regional_data/area.rb +82 -0
  58. data/lib/sapor/regional_data/austria.rb +84 -0
  59. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  60. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  61. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  62. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  63. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  64. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  65. data/lib/sapor/regional_data/belgium.rb +97 -0
  66. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  67. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  68. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  69. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  70. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  71. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  72. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  73. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  74. data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
  75. data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
  76. data/lib/sapor/regional_data/catalonia.rb +96 -0
  77. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  78. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  79. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  80. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  81. data/lib/sapor/regional_data/denmark.rb +128 -0
  82. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  83. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  84. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  85. data/lib/sapor/regional_data/estonia.rb +88 -0
  86. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  87. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  88. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  89. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  90. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  91. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  92. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  93. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  94. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  95. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  96. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  97. data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
  98. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  99. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  100. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  101. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  102. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  103. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  104. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  105. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  106. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  107. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  108. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  109. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  110. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  111. data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
  112. data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
  113. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  114. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  116. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  117. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  118. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  119. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  120. data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
  121. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  122. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  123. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  124. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  125. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  126. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  127. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  128. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  129. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  130. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  131. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  132. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  133. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  134. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  135. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  136. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  138. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  140. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  141. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  142. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  143. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  144. data/lib/sapor/regional_data/finland.rb +107 -0
  145. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  146. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  147. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  148. data/lib/sapor/regional_data/flanders.rb +115 -0
  149. data/lib/sapor/regional_data/france.rb +38 -0
  150. data/lib/sapor/regional_data/greece.rb +92 -0
  151. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  152. data/lib/sapor/regional_data/hungary.rb +116 -0
  153. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  154. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  155. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  156. data/lib/sapor/regional_data/iceland.rb +133 -0
  157. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  158. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  159. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  160. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  161. data/lib/sapor/regional_data/latvia.rb +112 -0
  162. data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
  163. data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
  164. data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
  165. data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
  166. data/lib/sapor/regional_data/luxembourg.rb +82 -0
  167. data/lib/sapor/regional_data/netherlands.rb +108 -0
  168. data/lib/sapor/regional_data/norway.rb +425 -0
  169. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  170. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  171. data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
  172. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  173. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  174. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  175. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  176. data/lib/sapor/regional_data/poland.rb +125 -0
  177. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  178. data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
  179. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  180. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  181. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  182. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  183. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  184. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  185. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  186. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  187. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  188. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  189. data/lib/sapor/regional_data/portugal.rb +101 -0
  190. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  191. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  192. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  193. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  194. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  195. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  196. data/lib/sapor/regional_data/slovakia.rb +81 -0
  197. data/lib/sapor/regional_data/slovenia.rb +114 -0
  198. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  199. data/lib/sapor/regional_data/spain.rb +136 -0
  200. data/lib/sapor/regional_data/sweden.rb +92 -0
  201. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  202. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  203. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  204. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  205. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  206. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  207. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  208. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  209. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  210. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  211. data/lib/sapor/regional_data/utopia.rb +66 -0
  212. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  213. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  214. data/lib/sapor/regional_data/wallonia.rb +112 -0
  215. data/lib/sapor/representatives_polychotomy.rb +338 -0
  216. data/lib/sapor/single_district_proportional.rb +75 -0
  217. data/sapor.gemspec +35 -0
  218. data/spec/integration/area_spec.rb +28 -0
  219. data/spec/integration/poll_spec.rb +112 -0
  220. data/spec/integration/sample.poll +8 -0
  221. data/spec/spec_helper.rb +31 -0
  222. data/spec/unit/area_spec.rb +115 -0
  223. data/spec/unit/austria_spec.rb +76 -0
  224. data/spec/unit/belgium_brussels_spec.rb +58 -0
  225. data/spec/unit/belgium_flanders_spec.rb +62 -0
  226. data/spec/unit/belgium_spec.rb +26 -0
  227. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  228. data/spec/unit/binomials_cache_spec.rb +34 -0
  229. data/spec/unit/catalonia_spec.rb +74 -0
  230. data/spec/unit/combinations_distribution_spec.rb +241 -0
  231. data/spec/unit/denmark_spec.rb +56 -0
  232. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  233. data/spec/unit/denmark_with_e_spec.rb +57 -0
  234. data/spec/unit/denmark_with_p_spec.rb +57 -0
  235. data/spec/unit/denominators_spec.rb +40 -0
  236. data/spec/unit/dichotomies_spec.rb +154 -0
  237. data/spec/unit/dichotomy_spec.rb +320 -0
  238. data/spec/unit/estonia_spec.rb +65 -0
  239. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  240. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  241. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  242. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  243. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  244. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  245. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  246. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  247. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  248. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  249. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  250. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  251. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  252. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  253. data/spec/unit/european_union_austria_spec.rb +61 -0
  254. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  255. data/spec/unit/european_union_croatia_spec.rb +59 -0
  256. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  257. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  258. data/spec/unit/european_union_denmark_spec.rb +61 -0
  259. data/spec/unit/european_union_estonia_spec.rb +93 -0
  260. data/spec/unit/european_union_finland_spec.rb +75 -0
  261. data/spec/unit/european_union_flanders_spec.rb +56 -0
  262. data/spec/unit/european_union_france_2019_spec.rb +73 -0
  263. data/spec/unit/european_union_france_spec.rb +73 -0
  264. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  265. data/spec/unit/european_union_germany_spec.rb +90 -0
  266. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  267. data/spec/unit/european_union_greece_spec.rb +148 -0
  268. data/spec/unit/european_union_hungary_spec.rb +57 -0
  269. data/spec/unit/european_union_ireland_spec.rb +72 -0
  270. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  271. data/spec/unit/european_union_italy_spec.rb +69 -0
  272. data/spec/unit/european_union_latvia_spec.rb +76 -0
  273. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  274. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  275. data/spec/unit/european_union_malta_spec.rb +60 -0
  276. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  277. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  278. data/spec/unit/european_union_poland_spec.rb +69 -0
  279. data/spec/unit/european_union_portugal_spec.rb +77 -0
  280. data/spec/unit/european_union_romania_spec.rb +67 -0
  281. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  282. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  283. data/spec/unit/european_union_spain_spec.rb +129 -0
  284. data/spec/unit/european_union_sweden_spec.rb +89 -0
  285. data/spec/unit/finland_spec.rb +65 -0
  286. data/spec/unit/finland_with_sin_spec.rb +67 -0
  287. data/spec/unit/first_past_the_post_spec.rb +54 -0
  288. data/spec/unit/flanders_spec.rb +70 -0
  289. data/spec/unit/france_spec.rb +32 -0
  290. data/spec/unit/greece_spec.rb +118 -0
  291. data/spec/unit/hungary_spec.rb +132 -0
  292. data/spec/unit/iceland_spec.rb +57 -0
  293. data/spec/unit/largest_remainder_spec.rb +79 -0
  294. data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
  295. data/spec/unit/latvia_kpv_par_spec.rb +38 -0
  296. data/spec/unit/latvia_kpv_spec.rb +38 -0
  297. data/spec/unit/latvia_spec.rb +60 -0
  298. data/spec/unit/luxembourg_spec.rb +54 -0
  299. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  300. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  301. data/spec/unit/netherlands_spec.rb +107 -0
  302. data/spec/unit/norway_spec.rb +64 -0
  303. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  304. data/spec/unit/number_formatter_spec.rb +173 -0
  305. data/spec/unit/poland_spec.rb +62 -0
  306. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  307. data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
  308. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  309. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  310. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  311. data/spec/unit/poll_spec.rb +110 -0
  312. data/spec/unit/portugal_spec.rb +66 -0
  313. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  314. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  315. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  316. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  317. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  318. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  319. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  320. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  321. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  322. data/spec/unit/slovakia_spec.rb +99 -0
  323. data/spec/unit/slovenia_spec.rb +80 -0
  324. data/spec/unit/spain_spec.rb +101 -0
  325. data/spec/unit/sweden_20140914_spec.rb +112 -0
  326. data/spec/unit/sweden_spec.rb +113 -0
  327. data/spec/unit/united_kingdom_spec.rb +65 -0
  328. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  329. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  330. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  331. data/spec/unit/wallonia_spec.rb +70 -0
  332. metadata +490 -0
@@ -0,0 +1,126 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
4
+ #
5
+ # This file is part of SAPoR.
6
+ #
7
+ # SAPoR is free software: you can redistribute it and/or modify it under the
8
+ # terms of the GNU General Public License as published by the Free Software
9
+ # Foundation, either version 3 of the License, or (at your option) any later
10
+ # version.
11
+ #
12
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
13
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
+ #
16
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
17
+ #
18
+
19
+ module Sapor
20
+ #
21
+ # The regional data for Poland, without Zjednoczona Lewica but with Sojusz
22
+ # Lewicy Demokratycznej and Wiosna.
23
+ #
24
+ class PolandWithSldAndWiWithoutZL < Area
25
+ include Singleton
26
+
27
+ def area_code
28
+ 'PL∪{SLD,Wi}\{ZL}'
29
+ end
30
+
31
+ def coalitions
32
+ COALITIONS
33
+ end
34
+
35
+ def no_of_seats
36
+ SEAT_DISTRIBUTION.values.inject(:+)
37
+ end
38
+
39
+ def overall_election_results_of_2015
40
+ if @overall_election_results_of_2015.nil?
41
+ @overall_election_results_of_2015 = \
42
+ summarize_election_results(election_results_of_2015)
43
+ end
44
+ @overall_election_results_of_2015
45
+ end
46
+
47
+ def population_size
48
+ POPULATION_SIZE
49
+ end
50
+
51
+ def seats(simulation)
52
+ electoral_system.project(simulation)
53
+ end
54
+
55
+ def threshold
56
+ PARTY_LIST_THRESHOLD
57
+ end
58
+
59
+ private
60
+
61
+ MN_PARTY = 'Mniejszość Niemiecka'.freeze
62
+ N_PARTY = '.Nowoczesna'.freeze
63
+ PIS_PARTY = 'Prawo i Sprawiedliwość'.freeze
64
+ PO_PARTY = 'Platforma Obywatelska'.freeze
65
+ PSL_PARTY = 'Polskie Stronnictwo Ludowe'.freeze
66
+ R_PARTY = 'Lewica Razem'.freeze
67
+ SLD_PARTY = 'Sojusz Lewicy Demokratycznej'.freeze
68
+ ZL_PARTY = 'Zjednoczona Lewica'.freeze
69
+
70
+ COALITIONS = [[N_PARTY, PO_PARTY],
71
+ [N_PARTY, PO_PARTY, PSL_PARTY],
72
+ [N_PARTY, PO_PARTY, PSL_PARTY, R_PARTY, SLD_PARTY],
73
+ [N_PARTY, PO_PARTY, PSL_PARTY, SLD_PARTY],
74
+ [N_PARTY, PO_PARTY, SLD_PARTY],
75
+ [PIS_PARTY],
76
+ [PO_PARTY]].freeze
77
+
78
+ # Voter turnout on 25 October 2015
79
+ # Source: Web page with the official results of the elections of 25 October
80
+ # 2015, downloaded on 17 July 2019,
81
+ # https://en.wikipedia.org/wiki/2015_Polish_parliamentary_election
82
+ POPULATION_SIZE = 15_200_671
83
+
84
+ SEAT_DISTRIBUTION = { 'Legnica' => 12, 'Wałbrzych' => 8, 'Wrocław' => 14,
85
+ 'Bydgoszcz' => 12, 'Toruń' => 13, 'Lublin' => 15,
86
+ 'Chełm' => 12, 'Zielona Góra' => 12, 'Łódź' => 10,
87
+ 'Piotrków Trybunalski' => 9, 'Sieradz' => 12,
88
+ 'Kraków I (południe)' => 8,
89
+ 'Kraków II (północ)' => 14, 'Nowy Sącz' => 10,
90
+ 'Tarnów' => 9, 'Płock' => 10, 'Radom' => 9,
91
+ 'Siedlce' => 12, 'Warszawa I (miasto)' => 20,
92
+ 'Warszawa II (okręg)' => 12, 'Opole' => 12,
93
+ 'Krosno' => 11, 'Rzeszów' => 15, 'Białystok' => 14,
94
+ 'Gdańsk' => 12, 'Gdynia' => 14, 'Bielsko-Biała' => 9,
95
+ 'Częstochowa' => 7, 'Gliwice' => 9, 'Rybnik' => 9,
96
+ 'Katowice' => 12, 'Sosnowiec' => 9, 'Kielce' => 16,
97
+ 'Elbląg' => 8, 'Olsztyn' => 10, 'Kalisz' => 12,
98
+ 'Konin' => 9, 'Piła' => 9, 'Poznań' => 10,
99
+ 'Koszalin' => 8, 'Szczecin' => 12 }.freeze
100
+
101
+ PARTY_LIST_THRESHOLD = 0.05
102
+ COALITION_LIST_THRESHOLD = 0.08
103
+ COALITION_LISTS = [].freeze
104
+ MINORITY_LISTS = [MN_PARTY].freeze
105
+
106
+ def election_results_of_2015
107
+ if @election_results_of_2015.nil?
108
+ @election_results_of_2015 = load_election_results(
109
+ 'poland-20151025-with-sld-and-wi-without-zl.psv'
110
+ )
111
+ end
112
+ @election_results_of_2015
113
+ end
114
+
115
+ def electoral_system
116
+ if @electoral_system.nil?
117
+ @electoral_system = MultiDistrictVariableThresholdProportional.new( \
118
+ overall_election_results_of_2015, election_results_of_2015,
119
+ SEAT_DISTRIBUTION, DhondtDenominators, PARTY_LIST_THRESHOLD,
120
+ COALITION_LIST_THRESHOLD, COALITION_LISTS, MINORITY_LISTS
121
+ )
122
+ end
123
+ @electoral_system
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,126 @@
1
+ #
2
+ # Statistical Analysis of Polling Results (SAPoR)
3
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
4
+ #
5
+ # This file is part of SAPoR.
6
+ #
7
+ # SAPoR is free software: you can redistribute it and/or modify it under the
8
+ # terms of the GNU General Public License as published by the Free Software
9
+ # Foundation, either version 3 of the License, or (at your option) any later
10
+ # version.
11
+ #
12
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
13
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15
+ #
16
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
17
+ #
18
+
19
+ module Sapor
20
+ #
21
+ # The regional data for Poland, without Zjednoczona Lewica but with Sojusz
22
+ # Lewicy Demokratycznej.
23
+ #
24
+ class PolandWithSldWithoutZL < Area
25
+ include Singleton
26
+
27
+ def area_code
28
+ 'PL∪{SLD}\{ZL}'
29
+ end
30
+
31
+ def coalitions
32
+ COALITIONS
33
+ end
34
+
35
+ def no_of_seats
36
+ SEAT_DISTRIBUTION.values.inject(:+)
37
+ end
38
+
39
+ def overall_election_results_of_2015
40
+ if @overall_election_results_of_2015.nil?
41
+ @overall_election_results_of_2015 = \
42
+ summarize_election_results(election_results_of_2015)
43
+ end
44
+ @overall_election_results_of_2015
45
+ end
46
+
47
+ def population_size
48
+ POPULATION_SIZE
49
+ end
50
+
51
+ def seats(simulation)
52
+ electoral_system.project(simulation)
53
+ end
54
+
55
+ def threshold
56
+ PARTY_LIST_THRESHOLD
57
+ end
58
+
59
+ private
60
+
61
+ MN_PARTY = 'Mniejszość Niemiecka'.freeze
62
+ N_PARTY = '.Nowoczesna'.freeze
63
+ PIS_PARTY = 'Prawo i Sprawiedliwość'.freeze
64
+ PO_PARTY = 'Platforma Obywatelska'.freeze
65
+ PSL_PARTY = 'Polskie Stronnictwo Ludowe'.freeze
66
+ R_PARTY = 'Lewica Razem'.freeze
67
+ SLD_PARTY = 'Sojusz Lewicy Demokratycznej'.freeze
68
+ ZL_PARTY = 'Zjednoczona Lewica'.freeze
69
+
70
+ COALITIONS = [[N_PARTY, PO_PARTY],
71
+ [N_PARTY, PO_PARTY, PSL_PARTY],
72
+ [N_PARTY, PO_PARTY, PSL_PARTY, R_PARTY, SLD_PARTY],
73
+ [N_PARTY, PO_PARTY, PSL_PARTY, SLD_PARTY],
74
+ [N_PARTY, PO_PARTY, SLD_PARTY],
75
+ [PIS_PARTY],
76
+ [PO_PARTY]].freeze
77
+
78
+ # Voter turnout on 25 October 2015
79
+ # Source: Web page with the official results of the elections of 25 October
80
+ # 2015, downloaded on 17 July 2019,
81
+ # https://en.wikipedia.org/wiki/2015_Polish_parliamentary_election
82
+ POPULATION_SIZE = 15_200_671
83
+
84
+ SEAT_DISTRIBUTION = { 'Legnica' => 12, 'Wałbrzych' => 8, 'Wrocław' => 14,
85
+ 'Bydgoszcz' => 12, 'Toruń' => 13, 'Lublin' => 15,
86
+ 'Chełm' => 12, 'Zielona Góra' => 12, 'Łódź' => 10,
87
+ 'Piotrków Trybunalski' => 9, 'Sieradz' => 12,
88
+ 'Kraków I (południe)' => 8,
89
+ 'Kraków II (północ)' => 14, 'Nowy Sącz' => 10,
90
+ 'Tarnów' => 9, 'Płock' => 10, 'Radom' => 9,
91
+ 'Siedlce' => 12, 'Warszawa I (miasto)' => 20,
92
+ 'Warszawa II (okręg)' => 12, 'Opole' => 12,
93
+ 'Krosno' => 11, 'Rzeszów' => 15, 'Białystok' => 14,
94
+ 'Gdańsk' => 12, 'Gdynia' => 14, 'Bielsko-Biała' => 9,
95
+ 'Częstochowa' => 7, 'Gliwice' => 9, 'Rybnik' => 9,
96
+ 'Katowice' => 12, 'Sosnowiec' => 9, 'Kielce' => 16,
97
+ 'Elbląg' => 8, 'Olsztyn' => 10, 'Kalisz' => 12,
98
+ 'Konin' => 9, 'Piła' => 9, 'Poznań' => 10,
99
+ 'Koszalin' => 8, 'Szczecin' => 12 }.freeze
100
+
101
+ PARTY_LIST_THRESHOLD = 0.05
102
+ COALITION_LIST_THRESHOLD = 0.08
103
+ COALITION_LISTS = [].freeze
104
+ MINORITY_LISTS = [MN_PARTY].freeze
105
+
106
+ def election_results_of_2015
107
+ if @election_results_of_2015.nil?
108
+ @election_results_of_2015 = load_election_results(
109
+ 'poland-20151025-with-sld-without-zl.psv'
110
+ )
111
+ end
112
+ @election_results_of_2015
113
+ end
114
+
115
+ def electoral_system
116
+ if @electoral_system.nil?
117
+ @electoral_system = MultiDistrictVariableThresholdProportional.new( \
118
+ overall_election_results_of_2015, election_results_of_2015,
119
+ SEAT_DISTRIBUTION, DhondtDenominators, PARTY_LIST_THRESHOLD,
120
+ COALITION_LIST_THRESHOLD, COALITION_LISTS, MINORITY_LISTS
121
+ )
122
+ end
123
+ @electoral_system
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,438 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: "Tabela de resultados por círculos eleitorais". Retrieved on 1
19
+ # January 2019.
20
+ # URL: https://pt.wikipedia.org/wiki/Elei%C3%A7%C3%B5es_legislativas_portuguesas_de_2015#Tabela_de_resultados_por_c%C3%ADrculos_eleitorais
21
+ #
22
+ # Source: "Legislativas 2015 – Resultados Globais". Retrieved on 5 January 2019.
23
+ # URL: https://www.eleicoes.mai.gov.pt/legislativas2015/resultados-globais.html
24
+
25
+ # Replaced Portugal à Frente with Partido Social Democrata and CDS–Partido Popular
26
+ # Added Aliança using the distribution of Partido Social Democrata
27
+ # Added Chega using the distribution of Partido Social Democrata
28
+
29
+ Açores | Partido Socialista | 37,869
30
+ Açores | Partido Social Democrata | 33,826
31
+ Açores | Aliança | 33,826
32
+ Açores | Chega | 33,826
33
+ Açores | Bloco de Esquerda | 7,330
34
+ Açores | Aliança Açores | 3,654
35
+ Açores | Coligação Democrática Unitária | 2,320
36
+ Açores | Pessoas–Animais–Natureza | 815
37
+ Açores | Nós, Cidadãos! | 766
38
+ Açores | Partido Comunista dos Trabalhadores Portugueses | 601
39
+ Açores | Partido Democrático Republicano | 511
40
+ Açores | Partido Unido dos Reformados e Pensionistas | 346
41
+ Açores | LIVRE | 332
42
+ Açores | AGIR | 319
43
+ Açores | Partido da Terra | 299
44
+ Açores | Partido Nacional Renovador | 185
45
+
46
+ Aveiro | Partido Social Democrata | 177,185
47
+ Aveiro | Aliança | 177,185
48
+ Aveiro | Chega | 177,185
49
+ Aveiro | CDS–Partido Popular | 177,185
50
+ Aveiro | Partido Socialista | 102,726
51
+ Aveiro | Bloco de Esquerda | 35,327
52
+ Aveiro | Coligação Democrática Unitária | 16,038
53
+ Aveiro | Partido Democrático Republicano | 4,548
54
+ Aveiro | Pessoas–Animais–Natureza | 3,573
55
+ Aveiro | Partido Comunista dos Trabalhadores Portugueses | 3,280
56
+ Aveiro | Partido Nacional Renovador | 1,698
57
+ Aveiro | LIVRE | 1,660
58
+ Aveiro | Partido da Terra | 1,325
59
+ Aveiro | Partido Popular Monárquico | 1,292
60
+ Aveiro | AGIR | 1,253
61
+ Aveiro | Nós, Cidadãos! | 1,006
62
+ Aveiro | Partido Cidadania e Democracia Cristã | 785
63
+ Aveiro | Partido Unido dos Reformados e Pensionistas | 634
64
+ Aveiro | Juntos pelo Povo | 448
65
+
66
+ Beja | Partido Socialista | 27,775
67
+ Beja | Coligação Democrática Unitária | 18,592
68
+ Beja | Partido Social Democrata | 14,980
69
+ Beja | Aliança | 14,980
70
+ Beja | Chega | 14,980
71
+ Beja | CDS–Partido Popular | 14,980
72
+ Beja | Bloco de Esquerda | 6,105
73
+ Beja | Partido Comunista dos Trabalhadores Portugueses | 1,945
74
+ Beja | Pessoas–Animais–Natureza | 608
75
+ Beja | Partido Democrático Republicano | 351
76
+ Beja | Partido Unido dos Reformados e Pensionistas | 340
77
+ Beja | Partido Nacional Renovador | 275
78
+ Beja | LIVRE | 271
79
+ Beja | Partido da Terra | 248
80
+ Beja | AGIR | 193
81
+ Beja | Partido Popular Monárquico | 192
82
+ Beja | Nós, Cidadãos! | 160
83
+ Beja | Juntos pelo Povo | 88
84
+
85
+ Braga | Partido Social Democrata | 216,357
86
+ Braga | Aliança | 216,357
87
+ Braga | Chega | 216,357
88
+ Braga | CDS–Partido Popular | 216,357
89
+ Braga | Partido Socialista | 146,412
90
+ Braga | Bloco de Esquerda | 41,745
91
+ Braga | Coligação Democrática Unitária | 24,632
92
+ Braga | Partido Democrático Republicano | 7,500
93
+ Braga | Partido Comunista dos Trabalhadores Portugueses | 5,436
94
+ Braga | Pessoas–Animais–Natureza | 3,682
95
+ Braga | LIVRE | 2,333
96
+ Braga | Partido Nacional Renovador | 1,836
97
+ Braga | AGIR | 1,620
98
+ Braga | Partido da Terra | 1,604
99
+ Braga | Partido Cidadania e Democracia Cristã | 993
100
+ Braga | Nós, Cidadãos! | 972
101
+ Braga | Partido Popular Monárquico | 884
102
+ Braga | Partido Unido dos Reformados e Pensionistas | 878
103
+ Braga | Juntos pelo Povo | 637
104
+
105
+ Bragança | Partido Social Democrata | 34,408
106
+ Bragança | Aliança | 34,408
107
+ Bragança | Chega | 34,408
108
+ Bragança | CDS–Partido Popular | 34,408
109
+ Bragança | Partido Socialista | 23,718
110
+ Bragança | Bloco de Esquerda | 3,858
111
+ Bragança | Coligação Democrática Unitária | 2,136
112
+ Bragança | Partido Democrático Republicano | 546
113
+ Bragança | Partido Comunista dos Trabalhadores Portugueses | 537
114
+ Bragança | Pessoas–Animais–Natureza | 386
115
+ Bragança | AGIR | 284
116
+ Bragança | LIVRE | 251
117
+ Bragança | Partido Popular Monárquico | 229
118
+ Bragança | Partido da Terra | 223
119
+ Bragança | Partido Nacional Renovador | 190
120
+ Bragança | Nós, Cidadãos! | 160
121
+ Bragança | Juntos pelo Povo | 121
122
+
123
+ Castelo Branco | Partido Socialista | 40,502
124
+ Castelo Branco | Partido Social Democrata | 36,803
125
+ Castelo Branco | Aliança | 36,803
126
+ Castelo Branco | Chega | 36,803
127
+ Castelo Branco | CDS–Partido Popular | 36,803
128
+ Castelo Branco | Bloco de Esquerda | 10,450
129
+ Castelo Branco | Coligação Democrática Unitária | 6,286
130
+ Castelo Branco | Partido Democrático Republicano | 1,086
131
+ Castelo Branco | Partido Comunista dos Trabalhadores Portugueses | 1,080
132
+ Castelo Branco | Pessoas–Animais–Natureza | 860
133
+ Castelo Branco | Partido Nacional Renovador | 508
134
+ Castelo Branco | LIVRE | 507
135
+ Castelo Branco | Partido Popular Monárquico | 496
136
+ Castelo Branco | Partido da Terra | 474
137
+ Castelo Branco | AGIR | 374
138
+ Castelo Branco | Partido Unido dos Reformados e Pensionistas | 272
139
+ Castelo Branco | Nós, Cidadãos! | 267
140
+
141
+ Coimbra | Partido Social Democrata | 81,882
142
+ Coimbra | Aliança | 81,882
143
+ Coimbra | Chega | 81,882
144
+ Coimbra | CDS–Partido Popular | 81,882
145
+ Coimbra | Partido Socialista | 77,684
146
+ Coimbra | Bloco de Esquerda | 21,780
147
+ Coimbra | Coligação Democrática Unitária | 15,476
148
+ Coimbra | Partido Democrático Republicano | 3,615
149
+ Coimbra | Pessoas–Animais–Natureza | 2,165
150
+ Coimbra | Partido Comunista dos Trabalhadores Portugueses | 1,889
151
+ Coimbra | LIVRE | 1,292
152
+ Coimbra | Partido Nacional Renovador | 1,097
153
+ Coimbra | AGIR | 1,081
154
+ Coimbra | Partido da Terra | 854
155
+ Coimbra | Nós, Cidadãos! | 683
156
+ Coimbra | Partido Popular Monárquico | 525
157
+ Coimbra | Partido Unido dos Reformados e Pensionistas | 451
158
+ Coimbra | Juntos pelo Povo | 272
159
+
160
+ Évora | Partido Socialista | 31,705
161
+ Évora | Partido Social Democrata | 20,275
162
+ Évora | Aliança | 20,275
163
+ Évora | Chega | 20,275
164
+ Évora | CDS–Partido Popular | 20,275
165
+ Évora | Coligação Democrática Unitária | 18,567
166
+ Évora | Bloco de Esquerda | 7,312
167
+ Évora | Partido Comunista dos Trabalhadores Portugueses | 1,245
168
+ Évora | Pessoas–Animais–Natureza | 723
169
+ Évora | Partido Democrático Republicano | 443
170
+ Évora | Partido Popular Monárquico | 363
171
+ Évora | LIVRE | 356
172
+ Évora | Partido Nacional Renovador | 280
173
+ Évora | Partido da Terra | 242
174
+ Évora | AGIR | 224
175
+ Évora | Nós, Cidadãos! | 216
176
+ Évora | Partido Unido dos Reformados e Pensionistas | 166
177
+
178
+ Faro | Partido Socialista | 62,422
179
+ Faro | Partido Social Democrata | 59,950
180
+ Faro | Aliança | 59,950
181
+ Faro | Chega | 59,950
182
+ Faro | CDS–Partido Popular | 59,950
183
+ Faro | Bloco de Esquerda | 26,922
184
+ Faro | Coligação Democrática Unitária | 16,539
185
+ Faro | Pessoas–Animais–Natureza | 3,783
186
+ Faro | Partido Comunista dos Trabalhadores Portugueses | 3,012
187
+ Faro | Partido Democrático Republicano | 2,293
188
+ Faro | LIVRE | 1,435
189
+ Faro | Partido Nacional Renovador | 1,343
190
+ Faro | Nós, Cidadãos! | 1,337
191
+ Faro | Partido da Terra | 1,222
192
+ Faro | AGIR | 1,220
193
+ Faro | Partido Unido dos Reformados e Pensionistas | 886
194
+ Faro | Partido Popular Monárquico | 755
195
+
196
+ Guarda | Partido Social Democrata | 38,964
197
+ Guarda | Aliança | 38,964
198
+ Guarda | Chega | 38,964
199
+ Guarda | CDS–Partido Popular | 38,964
200
+ Guarda | Partido Socialista | 28,868
201
+ Guarda | Bloco de Esquerda | 6,341
202
+ Guarda | Coligação Democrática Unitária | 3,379
203
+ Guarda | Partido Democrático Republicano | 958
204
+ Guarda | Pessoas–Animais–Natureza | 725
205
+ Guarda | Partido Comunista dos Trabalhadores Portugueses | 689
206
+ Guarda | Partido Nacional Renovador | 389
207
+ Guarda | Partido da Terra | 298
208
+ Guarda | LIVRE | 287
209
+ Guarda | AGIR | 277
210
+ Guarda | Partido Popular Monárquico | 211
211
+ Guarda | Nós, Cidadãos! | 180
212
+ Guarda | Partido Unido dos Reformados e Pensionistas | 144
213
+ Guarda | Juntos pelo Povo | 83
214
+
215
+ Leiria | Partido Social Democrata | 115,453
216
+ Leiria | Aliança | 115,453
217
+ Leiria | Chega | 115,453
218
+ Leiria | CDS–Partido Popular | 115,453
219
+ Leiria | Partido Socialista | 59,184
220
+ Leiria | Bloco de Esquerda | 23,034
221
+ Leiria | Coligação Democrática Unitária | 12,181
222
+ Leiria | Partido Democrático Republicano | 4,067
223
+ Leiria | Pessoas–Animais–Natureza | 2,908
224
+ Leiria | Partido Comunista dos Trabalhadores Portugueses | 2,517
225
+ Leiria | LIVRE | 1,786
226
+ Leiria | Partido da Terra | 1,189
227
+ Leiria | Partido Nacional Renovador | 1,073
228
+ Leiria | AGIR | 916
229
+ Leiria | Nós, Cidadãos! | 840
230
+ Leiria | Partido Popular Monárquico | 701
231
+ Leiria | Partido Unido dos Reformados e Pensionistas | 612
232
+ Leiria | Juntos pelo Povo | 371
233
+
234
+ Lisboa | Partido Social Democrata | 399,520
235
+ Lisboa | Aliança | 399,520
236
+ Lisboa | Chega | 399,520
237
+ Lisboa | CDS–Partido Popular | 399,520
238
+ Lisboa | Partido Socialista | 386,354
239
+ Lisboa | Bloco de Esquerda | 125,438
240
+ Lisboa | Coligação Democrática Unitária | 113,406
241
+ Lisboa | Pessoas–Animais–Natureza | 22,628
242
+ Lisboa | LIVRE | 14,683
243
+ Lisboa | Partido Comunista dos Trabalhadores Portugueses | 11,083
244
+ Lisboa | Partido Democrático Republicano | 10,249
245
+ Lisboa | Partido Nacional Renovador | 7,188
246
+ Lisboa | Partido da Terra | 5,078
247
+ Lisboa | AGIR | 5,026
248
+ Lisboa | Partido Unido dos Reformados e Pensionistas | 3,999
249
+ Lisboa | Nós, Cidadãos! | 3,737
250
+ Lisboa | Partido Popular Monárquico | 2,820
251
+ Lisboa | Juntos pelo Povo | 1,553
252
+
253
+ Madeira | Partido Social Democrata | 47,228
254
+ Madeira | Aliança | 47,228
255
+ Madeira | Chega | 47,228
256
+ Madeira | Partido Socialista | 26,152
257
+ Madeira | Bloco de Esquerda | 13,342
258
+ Madeira | Juntos pelo Povo | 8,671
259
+ Madeira | CDS–Partido Popular | 7,536
260
+ Madeira | Coligação Democrática Unitária | 4,468
261
+ Madeira | Pessoas–Animais–Natureza | 2,206
262
+ Madeira | Partido Democrático Republicano | 2,144
263
+ Madeira | Partido Trabalhista Português | 1,748
264
+ Madeira | Partido da Terra | 1,705
265
+ Madeira | Partido Comunista dos Trabalhadores Portugueses | 1,592
266
+ Madeira | LIVRE | 1,260
267
+ Madeira | Nós, Cidadãos! | 1,125
268
+ Madeira | Partido Nacional Renovador | 784
269
+ Madeira | Partido Popular Monárquico | 528
270
+
271
+ Portalegre | Partido Socialista | 25,037
272
+ Portalegre | Partido Social Democrata | 16,303
273
+ Portalegre | Aliança | 16,303
274
+ Portalegre | Chega | 16,303
275
+ Portalegre | CDS–Partido Popular | 16,303
276
+ Portalegre | Coligação Democrática Unitária | 7,184
277
+ Portalegre | Bloco de Esquerda | 5,427
278
+ Portalegre | Partido Comunista dos Trabalhadores Portugueses | 1,001
279
+ Portalegre | Pessoas–Animais–Natureza | 464
280
+ Portalegre | Partido Democrático Republicano | 326
281
+ Portalegre | Partido Nacional Renovador | 217
282
+ Portalegre | AGIR | 198
283
+ Portalegre | LIVRE | 189
284
+ Portalegre | Partido Popular Monárquico | 187
285
+ Portalegre | Partido da Terra | 154
286
+ Portalegre | Partido Unido dos Reformados e Pensionistas | 147
287
+ Portalegre | Nós, Cidadãos! | 144
288
+
289
+ Porto | Partido Social Democrata | 380,043
290
+ Porto | Aliança | 380,043
291
+ Porto | Chega | 380,043
292
+ Porto | CDS–Partido Popular | 380,043
293
+ Porto | Partido Socialista | 314,084
294
+ Porto | Bloco de Esquerda | 106,954
295
+ Porto | Coligação Democrática Unitária | 65,560
296
+ Porto | Pessoas–Animais–Natureza | 15,295
297
+ Porto | Partido Democrático Republicano | 10,702
298
+ Porto | Partido Comunista dos Trabalhadores Portugueses | 10,290
299
+ Porto | LIVRE | 5,014
300
+ Porto | Partido Nacional Renovador | 4,750
301
+ Porto | Partido da Terra | 3,449
302
+ Porto | AGIR | 2,788
303
+ Porto | Nós, Cidadãos! | 2,773
304
+ Porto | Partido Popular Monárquico | 2,392
305
+ Porto | Partido Unido dos Reformados e Pensionistas | 1,611
306
+ Porto | Juntos pelo Povo | 1,239
307
+
308
+ Santarém | Partido Social Democrata | 81,544
309
+ Santarém | Aliança | 81,544
310
+ Santarém | Chega | 81,544
311
+ Santarém | CDS–Partido Popular | 81,544
312
+ Santarém | Partido Socialista | 74,905
313
+ Santarém | Bloco de Esquerda | 24,489
314
+ Santarém | Coligação Democrática Unitária | 21,941
315
+ Santarém | Partido Comunista dos Trabalhadores Portugueses | 3,060
316
+ Santarém | Pessoas–Animais–Natureza | 2,715
317
+ Santarém | Partido Democrático Republicano | 2,377
318
+ Santarém | LIVRE | 1,236
319
+ Santarém | Partido Nacional Renovador | 1,206
320
+ Santarém | Partido da Terra | 1,038
321
+ Santarém | Nós, Cidadãos! | 932
322
+ Santarém | AGIR | 928
323
+ Santarém | Partido Unido dos Reformados e Pensionistas | 827
324
+ Santarém | Partido Popular Monárquico | 822
325
+ Santarém | Partido Cidadania e Democracia Cristã | 491
326
+
327
+ Setúbal | Partido Socialista | 145,302
328
+ Setúbal | Partido Social Democrata | 95,659
329
+ Setúbal | Aliança | 95,659
330
+ Setúbal | Chega | 95,659
331
+ Setúbal | CDS–Partido Popular | 95,659
332
+ Setúbal | Coligação Democrática Unitária | 79,606
333
+ Setúbal | Bloco de Esquerda | 55,276
334
+ Setúbal | Pessoas–Animais–Natureza | 8,167
335
+ Setúbal | Partido Comunista dos Trabalhadores Portugueses | 6,721
336
+ Setúbal | LIVRE | 4,277
337
+ Setúbal | Partido Democrático Republicano | 4,124
338
+ Setúbal | Partido Nacional Renovador | 2,676
339
+ Setúbal | AGIR | 1,807
340
+ Setúbal | Partido Unido dos Reformados e Pensionistas | 1,700
341
+ Setúbal | Partido da Terra | 1,584
342
+ Setúbal | Nós, Cidadãos! | 1,572
343
+ Setúbal | Partido Popular Monárquico | 1,024
344
+ Setúbal | Juntos pelo Povo | 561
345
+
346
+ Viana do Castelo | Partido Social Democrata | 58,509
347
+ Viana do Castelo | Aliança | 58,509
348
+ Viana do Castelo | Chega | 58,509
349
+ Viana do Castelo | CDS–Partido Popular | 58,509
350
+ Viana do Castelo | Partido Socialista | 38,309
351
+ Viana do Castelo | Bloco de Esquerda | 10,225
352
+ Viana do Castelo | Coligação Democrática Unitária | 6,726
353
+ Viana do Castelo | Partido Democrático Republicano | 2,400
354
+ Viana do Castelo | Partido Comunista dos Trabalhadores Portugueses | 1,113
355
+ Viana do Castelo | Pessoas–Animais–Natureza | 1,086
356
+ Viana do Castelo | Nós, Cidadãos! | 1,037
357
+ Viana do Castelo | AGIR | 959
358
+ Viana do Castelo | Partido Nacional Renovador | 559
359
+ Viana do Castelo | Partido Popular Monárquico | 535
360
+ Viana do Castelo | LIVRE | 453
361
+ Viana do Castelo | Partido da Terra | 445
362
+ Viana do Castelo | Partido Cidadania e Democracia Cristã | 390
363
+ Viana do Castelo | Partido Unido dos Reformados e Pensionistas | 213
364
+ Viana do Castelo | Juntos pelo Povo | 160
365
+
366
+ Vila Real | Partido Social Democrata | 56,262
367
+ Vila Real | Aliança | 56,262
368
+ Vila Real | Chega | 56,262
369
+ Vila Real | CDS–Partido Popular | 56,262
370
+ Vila Real | Partido Socialista | 36,461
371
+ Vila Real | Bloco de Esquerda | 5,707
372
+ Vila Real | Coligação Democrática Unitária | 3,250
373
+ Vila Real | Partido Comunista dos Trabalhadores Portugueses | 1,004
374
+ Vila Real | Partido Democrático Republicano | 806
375
+ Vila Real | Pessoas–Animais–Natureza | 667
376
+ Vila Real | AGIR | 521
377
+ Vila Real | LIVRE | 383
378
+ Vila Real | Partido Popular Monárquico | 316
379
+ Vila Real | Partido da Terra | 306
380
+ Vila Real | Nós, Cidadãos! | 281
381
+ Vila Real | Partido Nacional Renovador | 279
382
+ Vila Real | Partido Unido dos Reformados e Pensionistas | 151
383
+
384
+ Viseu | Partido Social Democrata | 97,362
385
+ Viseu | Aliança | 97,362
386
+ Viseu | Chega | 97,362
387
+ Viseu | CDS–Partido Popular | 97,362
388
+ Viseu | Partido Socialista | 56,543
389
+ Viseu | Bloco de Esquerda | 12,816
390
+ Viseu | Coligação Democrática Unitária | 6,668
391
+ Viseu | Partido Democrático Republicano | 1,952
392
+ Viseu | Partido Comunista dos Trabalhadores Portugueses | 1,743
393
+ Viseu | Pessoas–Animais–Natureza | 1,296
394
+ Viseu | LIVRE | 1,003
395
+ Viseu | AGIR | 721
396
+ Viseu | Partido da Terra | 679
397
+ Viseu | Partido Nacional Renovador | 608
398
+ Viseu | Nós, Cidadãos! | 534
399
+ Viseu | Partido Popular Monárquico | 533
400
+ Viseu | Partido Unido dos Reformados e Pensionistas | 387
401
+
402
+ Europa | Partido Social Democrata | 5,340
403
+ Europa | Aliança | 5,340
404
+ Europa | Chega | 5,340
405
+ Europa | CDS–Partido Popular | 5,340
406
+ Europa | Partido Socialista | 4,081
407
+ Europa | Coligação Democrática Unitária | 811
408
+ Europa | Bloco de Esquerda | 785
409
+ Europa | LIVRE | 249
410
+ Europa | Partido Democrático Republicano | 169
411
+ Europa | Pessoas–Animais–Natureza | 128
412
+ Europa | Partido Comunista dos Trabalhadores Portugueses | 98
413
+ Europa | Partido Unido dos Reformados e Pensionistas | 96
414
+ Europa | Nós, Cidadãos! | 86
415
+ Europa | Partido da Terra | 82
416
+ Europa | Partido Nacional Renovador | 45
417
+ Europa | Partido Popular Monárquico | 40
418
+ Europa | Juntos pelo Povo | 28
419
+ Europa | AGIR | 23
420
+
421
+ Fora da Europa | Partido Social Democrata | 7,122
422
+ Fora da Europa | Aliança | 7,122
423
+ Fora da Europa | Chega | 7,122
424
+ Fora da Europa | CDS–Partido Popular | 7,122
425
+ Fora da Europa | Nós, Cidadãos! | 2,631
426
+ Fora da Europa | Partido Socialista | 1,592
427
+ Fora da Europa | Partido Democrático Republicano | 465
428
+ Fora da Europa | Pessoas–Animais–Natureza | 260
429
+ Fora da Europa | Bloco de Esquerda | 229
430
+ Fora da Europa | Coligação Democrática Unitária | 214
431
+ Fora da Europa | Partido Unido dos Reformados e Pensionistas | 119
432
+ Fora da Europa | Partido da Terra | 98
433
+ Fora da Europa | LIVRE | 83
434
+ Fora da Europa | Partido Nacional Renovador | 83
435
+ Fora da Europa | Juntos pelo Povo | 53
436
+ Fora da Europa | Partido Popular Monárquico | 52
437
+ Fora da Europa | Partido Comunista dos Trabalhadores Portugueses | 19
438
+ Fora da Europa | AGIR | 17