Mesa 3.1.4__tar.gz → 3.2.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.

Potentially problematic release.


This version of Mesa might be problematic. Click here for more details.

Files changed (216) hide show
  1. {mesa-3.1.4 → mesa-3.2.0}/.github/workflows/build_lint.yml +1 -1
  2. {mesa-3.1.4 → mesa-3.2.0}/.gitignore +1 -0
  3. {mesa-3.1.4 → mesa-3.2.0}/.pre-commit-config.yaml +1 -1
  4. mesa-3.2.0/CITATION.cff +62 -0
  5. {mesa-3.1.4 → mesa-3.2.0}/CONTRIBUTING.md +58 -2
  6. {mesa-3.1.4 → mesa-3.2.0}/HISTORY.md +115 -2
  7. {mesa-3.1.4 → mesa-3.2.0}/PKG-INFO +12 -8
  8. {mesa-3.1.4 → mesa-3.2.0}/README.md +10 -6
  9. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/api_main.md +1 -0
  10. mesa-3.2.0/docs/apis/discrete_space.md +41 -0
  11. mesa-3.2.0/docs/apis/experimental.md +39 -0
  12. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/visualization.md +9 -0
  13. {mesa-3.1.4 → mesa-3.2.0}/docs/conf.py +44 -19
  14. mesa-3.2.0/docs/getting_started.md +69 -0
  15. mesa-3.2.0/docs/images/Discrete_Space.drawio.png +0 -0
  16. mesa-3.2.0/docs/images/wolf_sheep.png +0 -0
  17. {mesa-3.1.4 → mesa-3.2.0}/docs/index.md +16 -3
  18. mesa-3.1.4/docs/getting_started.md → mesa-3.2.0/docs/overview.md +102 -53
  19. mesa-3.2.0/docs/tutorials/0_first_model.ipynb +612 -0
  20. mesa-3.2.0/docs/tutorials/1_adding_space.ipynb +391 -0
  21. mesa-3.2.0/docs/tutorials/2_collecting_data.ipynb +535 -0
  22. mesa-3.2.0/docs/tutorials/3_agentset.ipynb +338 -0
  23. mesa-3.2.0/docs/tutorials/4_visualization_basic.ipynb +317 -0
  24. mesa-3.2.0/docs/tutorials/5_visualization_dynamic_agents.ipynb +334 -0
  25. mesa-3.2.0/docs/tutorials/6_visualization_custom.ipynb +396 -0
  26. mesa-3.2.0/docs/tutorials/7_batch_run.ipynb +422 -0
  27. mesa-3.2.0/docs/tutorials/8_comparing_scenarios.ipynb +484 -0
  28. {mesa-3.1.4 → mesa-3.2.0}/mesa/__init__.py +3 -1
  29. {mesa-3.1.4 → mesa-3.2.0}/mesa/agent.py +26 -9
  30. {mesa-3.1.4 → mesa-3.2.0}/mesa/batchrunner.py +6 -3
  31. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/__init__.py +8 -8
  32. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell.py +29 -10
  33. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_agent.py +1 -1
  34. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_collection.py +3 -3
  35. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/discrete_space.py +65 -3
  36. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/grid.py +2 -2
  37. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/network.py +22 -2
  38. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/property_layer.py +1 -10
  39. {mesa-3.1.4/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/voronoi.py +2 -2
  40. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/README.md +10 -5
  41. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/__init__.py +2 -0
  42. mesa-3.2.0/mesa/examples/advanced/alliance_formation/Readme.md +50 -0
  43. mesa-3.2.0/mesa/examples/advanced/alliance_formation/agents.py +20 -0
  44. mesa-3.2.0/mesa/examples/advanced/alliance_formation/app.py +71 -0
  45. mesa-3.2.0/mesa/examples/advanced/alliance_formation/model.py +184 -0
  46. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/agents.py +1 -1
  47. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/model.py +1 -1
  48. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/Readme.md +4 -6
  49. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/agents.py +1 -1
  50. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/model.py +1 -1
  51. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/Readme.md +4 -5
  52. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/agents.py +1 -1
  53. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/model.py +2 -2
  54. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/Readme.md +2 -17
  55. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/agents.py +1 -1
  56. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/app.py +2 -1
  57. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/model.py +1 -1
  58. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/Readme.md +6 -1
  59. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/agents.py +1 -0
  60. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/app.py +17 -2
  61. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/model.py +12 -0
  62. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/Readme.md +2 -12
  63. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/agents.py +6 -11
  64. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/app.py +2 -2
  65. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/model.py +7 -11
  66. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/Readme.md +1 -9
  67. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/agents.py +13 -5
  68. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/model.py +10 -7
  69. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/Readme.md +0 -8
  70. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/agents.py +13 -8
  71. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/model.py +6 -9
  72. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/Readme.md +0 -4
  73. mesa-3.2.0/mesa/examples/basic/virus_on_network/__init__.py +0 -0
  74. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/agents.py +13 -17
  75. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/model.py +20 -24
  76. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/__init__.py +2 -2
  77. mesa-3.2.0/mesa/experimental/cell_space/__init__.py +60 -0
  78. mesa-3.2.0/mesa/experimental/meta_agents/__init__.py +25 -0
  79. mesa-3.2.0/mesa/experimental/meta_agents/meta_agent.py +387 -0
  80. {mesa-3.1.4 → mesa-3.2.0}/mesa/model.py +3 -3
  81. {mesa-3.1.4 → mesa-3.2.0}/mesa/space.py +1 -12
  82. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/__init__.py +2 -0
  83. mesa-3.2.0/mesa/visualization/command_console.py +482 -0
  84. mesa-3.2.0/mesa/visualization/components/altair_components.py +450 -0
  85. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/mpl_space_drawing.py +17 -9
  86. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/solara_viz.py +150 -21
  87. {mesa-3.1.4 → mesa-3.2.0}/pyproject.toml +6 -7
  88. {mesa-3.1.4 → mesa-3.2.0}/tests/test_agent.py +12 -0
  89. mesa-3.1.4/tests/test_cell_space.py → mesa-3.2.0/tests/test_discrete_space.py +54 -1
  90. {mesa-3.1.4 → mesa-3.2.0}/tests/test_examples.py +14 -0
  91. mesa-3.2.0/tests/test_meta_agents.py +307 -0
  92. {mesa-3.1.4 → mesa-3.2.0}/tests/test_solara_viz.py +35 -10
  93. mesa-3.1.4/CITATION.bib +0 -19
  94. mesa-3.1.4/docs/_static/switcher.json +0 -12
  95. mesa-3.1.4/docs/apis/experimental.md +0 -68
  96. mesa-3.1.4/docs/images/tutorial/br_ginis.png +0 -0
  97. mesa-3.1.4/docs/images/tutorial/dc_endwealth.png +0 -0
  98. mesa-3.1.4/docs/images/tutorial/dc_gini.png +0 -0
  99. mesa-3.1.4/docs/images/tutorial/dc_oneagent.png +0 -0
  100. mesa-3.1.4/docs/images/tutorial/first_hist.png +0 -0
  101. mesa-3.1.4/docs/images/tutorial/multirun_hist.png +0 -0
  102. mesa-3.1.4/docs/images/tutorial/numpy_grid.png +0 -0
  103. mesa-3.1.4/docs/images/tutorial/viz_chart.png +0 -0
  104. mesa-3.1.4/docs/images/tutorial/viz_empty.png +0 -0
  105. mesa-3.1.4/docs/images/tutorial/viz_greycircles.png +0 -0
  106. mesa-3.1.4/docs/images/tutorial/viz_histogram.png +0 -0
  107. mesa-3.1.4/docs/images/tutorial/viz_redcircles.png +0 -0
  108. mesa-3.1.4/docs/images/wolf_sheep.png +0 -0
  109. mesa-3.1.4/docs/tutorials/MoneyModel.py +0 -81
  110. mesa-3.1.4/docs/tutorials/files/viz_chart.png +0 -0
  111. mesa-3.1.4/docs/tutorials/files/viz_empty.png +0 -0
  112. mesa-3.1.4/docs/tutorials/files/viz_greycircles.png +0 -0
  113. mesa-3.1.4/docs/tutorials/files/viz_histogram.png +0 -0
  114. mesa-3.1.4/docs/tutorials/files/viz_redcircles.png +0 -0
  115. mesa-3.1.4/docs/tutorials/files/viz_slider.png +0 -0
  116. mesa-3.1.4/docs/tutorials/intro_tutorial.ipynb +0 -1903
  117. mesa-3.1.4/docs/tutorials/visualization_tutorial.ipynb +0 -437
  118. mesa-3.1.4/mesa/visualization/components/altair_components.py +0 -190
  119. {mesa-3.1.4 → mesa-3.2.0}/.codespellignore +0 -0
  120. {mesa-3.1.4 → mesa-3.2.0}/.coveragerc +0 -0
  121. {mesa-3.1.4 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  122. {mesa-3.1.4 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  123. {mesa-3.1.4 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  124. {mesa-3.1.4 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/bug.md +0 -0
  125. {mesa-3.1.4 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
  126. {mesa-3.1.4 → mesa-3.2.0}/.github/dependabot.yml +0 -0
  127. {mesa-3.1.4 → mesa-3.2.0}/.github/pull_request_template.md +0 -0
  128. {mesa-3.1.4 → mesa-3.2.0}/.github/release.yml +0 -0
  129. {mesa-3.1.4 → mesa-3.2.0}/.github/workflows/benchmarks.yml +0 -0
  130. {mesa-3.1.4 → mesa-3.2.0}/.github/workflows/release.yml +0 -0
  131. {mesa-3.1.4 → mesa-3.2.0}/.readthedocs.yml +0 -0
  132. {mesa-3.1.4 → mesa-3.2.0}/CODE_OF_CONDUCT.md +0 -0
  133. {mesa-3.1.4 → mesa-3.2.0}/Dockerfile +0 -0
  134. {mesa-3.1.4 → mesa-3.2.0}/LICENSE +0 -0
  135. {mesa-3.1.4 → mesa-3.2.0}/NOTICE +0 -0
  136. {mesa-3.1.4 → mesa-3.2.0}/benchmarks/compare_timings.py +0 -0
  137. {mesa-3.1.4 → mesa-3.2.0}/benchmarks/configurations.py +0 -0
  138. {mesa-3.1.4 → mesa-3.2.0}/benchmarks/global_benchmark.py +0 -0
  139. {mesa-3.1.4 → mesa-3.2.0}/binder/environment.yml +0 -0
  140. {mesa-3.1.4 → mesa-3.2.0}/codecov.yaml +0 -0
  141. {mesa-3.1.4 → mesa-3.2.0}/docker-compose.yml +0 -0
  142. {mesa-3.1.4 → mesa-3.2.0}/docs/Makefile +0 -0
  143. {mesa-3.1.4 → mesa-3.2.0}/docs/README.md +0 -0
  144. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/agent.md +0 -0
  145. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/batchrunner.md +0 -0
  146. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/datacollection.md +0 -0
  147. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/mesa_logging.md +0 -0
  148. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/model.md +0 -0
  149. {mesa-3.1.4 → mesa-3.2.0}/docs/apis/space.md +0 -0
  150. {mesa-3.1.4 → mesa-3.2.0}/docs/best-practices.md +0 -0
  151. {mesa-3.1.4 → mesa-3.2.0}/docs/example_template.txt +0 -0
  152. {mesa-3.1.4 → mesa-3.2.0}/docs/examples_overview_template.txt +0 -0
  153. {mesa-3.1.4 → mesa-3.2.0}/docs/images/mesa_logo.ico +0 -0
  154. {mesa-3.1.4 → mesa-3.2.0}/docs/images/mesa_logo.png +0 -0
  155. {mesa-3.1.4 → mesa-3.2.0}/docs/make.bat +0 -0
  156. {mesa-3.1.4 → mesa-3.2.0}/docs/mesa.md +0 -0
  157. {mesa-3.1.4 → mesa-3.2.0}/docs/mesa_extension.md +0 -0
  158. {mesa-3.1.4 → mesa-3.2.0}/docs/migration_guide.md +0 -0
  159. {mesa-3.1.4 → mesa-3.2.0}/maintenance/fetch_unlabeled_prs.py +0 -0
  160. {mesa-3.1.4 → mesa-3.2.0}/mesa/datacollection.py +0 -0
  161. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/__init__.py +0 -0
  162. /mesa-3.1.4/mesa/examples/advanced/epstein_civil_violence/__init__.py → /mesa-3.2.0/mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
  163. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +0 -0
  164. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Readme.md +0 -0
  165. {mesa-3.1.4/mesa/examples/advanced/pd_grid → mesa-3.2.0/mesa/examples/advanced/epstein_civil_violence}/__init__.py +0 -0
  166. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/app.py +0 -0
  167. {mesa-3.1.4/mesa/examples/advanced/sugarscape_g1mt → mesa-3.2.0/mesa/examples/advanced/pd_grid}/__init__.py +0 -0
  168. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/analysis.ipynb +0 -0
  169. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/app.py +0 -0
  170. {mesa-3.1.4/mesa/examples/advanced/wolf_sheep → mesa-3.2.0/mesa/examples/advanced/sugarscape_g1mt}/__init__.py +0 -0
  171. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/app.py +0 -0
  172. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +0 -0
  173. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/tests.py +0 -0
  174. {mesa-3.1.4/mesa/examples/basic → mesa-3.2.0/mesa/examples/advanced/wolf_sheep}/__init__.py +0 -0
  175. {mesa-3.1.4/mesa/examples/basic/boid_flockers → mesa-3.2.0/mesa/examples/basic}/__init__.py +0 -0
  176. {mesa-3.1.4/mesa/examples/basic/boltzmann_wealth_model → mesa-3.2.0/mesa/examples/basic/boid_flockers}/__init__.py +0 -0
  177. {mesa-3.1.4/mesa/examples/basic/conways_game_of_life → mesa-3.2.0/mesa/examples/basic/boltzmann_wealth_model}/__init__.py +0 -0
  178. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/st_app.py +0 -0
  179. {mesa-3.1.4/mesa/examples/basic/schelling → mesa-3.2.0/mesa/examples/basic/conways_game_of_life}/__init__.py +0 -0
  180. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/app.py +0 -0
  181. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/st_app.py +0 -0
  182. {mesa-3.1.4/mesa/examples/basic/virus_on_network → mesa-3.2.0/mesa/examples/basic/schelling}/__init__.py +0 -0
  183. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/analysis.ipynb +0 -0
  184. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/schelling/app.py +0 -0
  185. {mesa-3.1.4 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/app.py +0 -0
  186. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/continuous_space/__init__.py +0 -0
  187. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space.py +0 -0
  188. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space_agents.py +0 -0
  189. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/devs/__init__.py +0 -0
  190. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/devs/eventlist.py +0 -0
  191. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/devs/simulator.py +0 -0
  192. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/__init__.py +0 -0
  193. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/mesa_signal.py +0 -0
  194. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/observable_collections.py +0 -0
  195. {mesa-3.1.4 → mesa-3.2.0}/mesa/experimental/mesa_signals/signals_util.py +0 -0
  196. {mesa-3.1.4 → mesa-3.2.0}/mesa/mesa_logging.py +0 -0
  197. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/components/__init__.py +0 -0
  198. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/components/matplotlib_components.py +0 -0
  199. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/user_param.py +0 -0
  200. {mesa-3.1.4 → mesa-3.2.0}/mesa/visualization/utils.py +0 -0
  201. {mesa-3.1.4 → mesa-3.2.0}/mypy.ini +0 -0
  202. {mesa-3.1.4 → mesa-3.2.0}/tests/__init__.py +0 -0
  203. {mesa-3.1.4 → mesa-3.2.0}/tests/read_requirements.py +0 -0
  204. {mesa-3.1.4 → mesa-3.2.0}/tests/test_batch_run.py +0 -0
  205. {mesa-3.1.4 → mesa-3.2.0}/tests/test_components_matplotlib.py +0 -0
  206. {mesa-3.1.4 → mesa-3.2.0}/tests/test_continuous_space.py +0 -0
  207. {mesa-3.1.4 → mesa-3.2.0}/tests/test_datacollector.py +0 -0
  208. {mesa-3.1.4 → mesa-3.2.0}/tests/test_devs.py +0 -0
  209. {mesa-3.1.4 → mesa-3.2.0}/tests/test_end_to_end_viz.sh +0 -0
  210. {mesa-3.1.4 → mesa-3.2.0}/tests/test_grid.py +0 -0
  211. {mesa-3.1.4 → mesa-3.2.0}/tests/test_import_namespace.py +0 -0
  212. {mesa-3.1.4 → mesa-3.2.0}/tests/test_lifespan.py +0 -0
  213. {mesa-3.1.4 → mesa-3.2.0}/tests/test_mesa_logging.py +0 -0
  214. {mesa-3.1.4 → mesa-3.2.0}/tests/test_mesa_signals.py +0 -0
  215. {mesa-3.1.4 → mesa-3.2.0}/tests/test_model.py +0 -0
  216. {mesa-3.1.4 → mesa-3.2.0}/tests/test_space.py +0 -0
@@ -84,4 +84,4 @@ jobs:
84
84
  - name: Test examples
85
85
  run: |
86
86
  cd mesa-examples
87
- pytest -rA -Werror -Wdefault::FutureWarning test_examples.py
87
+ pytest -rA -Werror -Wdefault::FutureWarning -Wi::DeprecationWarning test_examples.py
@@ -69,6 +69,7 @@ target/
69
69
 
70
70
  # Jupyter and iPython notebook checkpoints
71
71
  *.ipynb_checkpoints
72
+ *.virtual_documents
72
73
 
73
74
  # Spyder app workspace config file
74
75
  .spyderworkspace
@@ -4,7 +4,7 @@ ci:
4
4
  repos:
5
5
  - repo: https://github.com/astral-sh/ruff-pre-commit
6
6
  # Ruff version.
7
- rev: v0.9.4
7
+ rev: v0.9.9
8
8
  hooks:
9
9
  # Run the linter.
10
10
  - id: ruff
@@ -0,0 +1,62 @@
1
+ cff-version: "1.2.0"
2
+ authors:
3
+ - family-names: Hoeven
4
+ given-names: Ewout
5
+ name-particle: ter
6
+ orcid: "https://orcid.org/0009-0002-0805-3425"
7
+ - family-names: Kwakkel
8
+ given-names: Jan
9
+ orcid: "https://orcid.org/0000-0001-9447-2954"
10
+ - family-names: Hess
11
+ given-names: Vincent
12
+ orcid: "https://orcid.org/0000-0002-9242-8500"
13
+ - family-names: Pike
14
+ given-names: Thomas
15
+ orcid: "https://orcid.org/0000-0003-1576-0283"
16
+ - family-names: Wang
17
+ given-names: Boyu
18
+ orcid: "https://orcid.org/0000-0001-9879-2138"
19
+ - family-names: rht
20
+ orcid: "https://orcid.org/0009-0002-6902-111X"
21
+ - family-names: Kazil
22
+ given-names: Jackie
23
+ orcid: "https://orcid.org/0000-0002-8300-7384"
24
+ doi: 10.5281/zenodo.15090710
25
+ message: If you use this software, please cite our article in the
26
+ Journal of Open Source Software.
27
+ preferred-citation:
28
+ authors:
29
+ - family-names: Hoeven
30
+ given-names: Ewout
31
+ name-particle: ter
32
+ orcid: "https://orcid.org/0009-0002-0805-3425"
33
+ - family-names: Kwakkel
34
+ given-names: Jan
35
+ orcid: "https://orcid.org/0000-0001-9447-2954"
36
+ - family-names: Hess
37
+ given-names: Vincent
38
+ orcid: "https://orcid.org/0000-0002-9242-8500"
39
+ - family-names: Pike
40
+ given-names: Thomas
41
+ orcid: "https://orcid.org/0000-0003-1576-0283"
42
+ - family-names: Wang
43
+ given-names: Boyu
44
+ orcid: "https://orcid.org/0000-0001-9879-2138"
45
+ - family-names: rht
46
+ orcid: "https://orcid.org/0009-0002-6902-111X"
47
+ - family-names: Kazil
48
+ given-names: Jackie
49
+ orcid: "https://orcid.org/0000-0002-8300-7384"
50
+ date-published: 2025-03-28
51
+ doi: 10.21105/joss.07668
52
+ issn: 2475-9066
53
+ issue: 107
54
+ journal: Journal of Open Source Software
55
+ publisher:
56
+ name: Open Journals
57
+ start: 7668
58
+ title: "Mesa 3: Agent-based modeling with Python in 2025"
59
+ type: article
60
+ url: "https://joss.theoj.org/papers/10.21105/joss.07668"
61
+ volume: 10
62
+ title: "Mesa 3: Agent-based modeling with Python in 2025"
@@ -53,7 +53,7 @@ Learn the tools, talk to us about what you want to change, and open a small PR.
53
53
  Awesome! You have the basics of open-source software development (if not check above), but not much modelling experience.
54
54
 
55
55
  First step is to start thinking like a modeller. To understand the fine details about our library and contribute meaningfully, get some modelling experience:
56
- - Go though our [Introductory Tutorial](https://mesa.readthedocs.io/latest/tutorials/intro_tutorial.html) and [Visualization Tutorial](https://mesa.readthedocs.io/latest/tutorials/visualization_tutorial.html). While going through them, dive into the source code to really see what everything does.
56
+ - Go though our series of introductory tutorials at [Getting Started](https://mesa.readthedocs.io/latest/getting_started.html). While going through them, dive into the source code to really see what everything does.
57
57
  - Follow an ABM course (if possible). They might be a bit outdated programming language wise, but conceptual they're sound.
58
58
  - This MOOC on ABM concepts: [Agent Based Modeling](https://ocw.tudelft.nl/course-lectures/agent-based-modeling/)
59
59
  - This MOOC on practical ABM modelling: [Agent-Based Models with Python: An Introduction to Mesa](https://www.complexityexplorer.org/courses/172-agent-based-models-with-python-an-introduction-to-mesa)
@@ -119,7 +119,63 @@ ruff .
119
119
 
120
120
  The license of this project is located in [LICENSE]. By submitting a contribution to this project, you are agreeing that your contribution will be released under the terms of this license.
121
121
 
122
- ## Maintainers
122
+ ## Roles in Mesa
123
+ Mesa has several roles to help structure our collaboration and recognize great work. They also form a progression path for community members to that want to take on increasing responsibility in the project. Since we're all volunteers, everyone contributes what they can when they can - there are no minimum time commitments. Also, the best ideas and contributions can come from anyone, these roles are just a way to coordinate our efforts.
124
+
125
+ Feel free to reach out to us anytime to discuss your interests and ambitions in the project. We're always happy to chat about how you can grow your involvement in Mesa!
126
+
127
+ ### Contributor
128
+ Contributors help improve Mesa through:
129
+ - Code contributions
130
+ - Documentation improvements
131
+ - Bug reports and fixes
132
+ - Example models
133
+ - Tutorial improvements
134
+ - Answering questions
135
+ - Participating in discussions
136
+ - Testing pre-releases
137
+ - Sharing Mesa with others
138
+
139
+ Everyone can contribute what they can, when they can. No contribution is too small! Contributors who have a PR successfully merged receive the "Contributor" label on GitHub.
140
+
141
+ ### Collaborator
142
+ When contributors consistently demonstrate technical skills and community mindset through their contributions, they may be invited to become collaborators. Collaborators help coordinate by:
143
+
144
+ - Reviewing pull requests
145
+ - Triaging issues and discussions
146
+ - Coordinating between contributors
147
+ - Leading specific areas of development
148
+ - Helping new contributors
149
+ - Participating in project planning
150
+ - Building community
151
+
152
+ The collaborator role recognizes people who help Mesa grow through both their technical contributions and community involvement. Collaborators receive GitHub triage permissions and the "Collaborator" label.
153
+
154
+ ### Maintainer
155
+ Maintainers help guide Mesa's overall development while ensuring the project remains sustainable and welcoming. They focus on:
156
+ - Project vision and roadmap
157
+ - Major architectural decisions
158
+ - Release management
159
+ - Community governance
160
+ - Mentoring collaborators
161
+ - Setting community standards
162
+ - Long-term sustainability
163
+
164
+ Maintainers are selected based on their technical expertise, project understanding, and community leadership. Maintainers receive full repository permissions and the "Member" label.
165
+
166
+ ### Special Roles
167
+ In some cases, special roles may be created for specific purposes, such as leading particular initiatives or components within Mesa. These roles are created as needed based on project requirements and may come with specific permissions and labels.
168
+
169
+ All roles are expected to:
170
+ - Follow Mesa's code of conduct
171
+ - Communicate respectfully
172
+ - Work collaboratively
173
+ - Help maintain a welcoming community
174
+ - Make decisions transparently
175
+
176
+ Mesa grows through good ideas and contributions. We're all volunteers working together to make Mesa better. Don't hesitate to reach out to any maintainer to discuss your interests and potential growth within the project!
177
+
178
+ ## Maintainers' notes
123
179
  Some notes useful for Mesa maintainers.
124
180
 
125
181
  ### Releases
@@ -1,11 +1,124 @@
1
1
  ---
2
2
  title: Release History
3
3
  ---
4
+ # 3.2.0 (2025-05-04)
5
+ ## Highlights
6
+ Mesa 3.2.0 is a feature-packed release, which stabilizes our discrete space, improves many of our visualisation capabilities, improves our tutorial organization, adds the experimental meta-agents, and includes other quality of life enhancements.
7
+
8
+ We also celebrate the publication of our peer-reviewed [Mesa 3 paper](https://doi.org/10.21105/joss.07668) in JOSS. See the updated [Citing Mesa](https://github.com/projectmesa/mesa?tab=readme-ov-file#citing-mesa) section on how to cite us.
9
+
10
+ ### Stabilization of Discrete Space
11
+ The experimental Cell Space system has been stabilized and is now available as `mesa.discrete_space` ([#2610](https://github.com/projectmesa/mesa/pull/2610)). This powerful spatial modeling framework enables cell-centric simulations with integrated PropertyLayers and improved agent movement capabilities. Key improvements include:
12
+
13
+ - Support for dynamic modifications to discrete spaces during simulation ([#2755](https://github.com/projectmesa/mesa/pull/2755))
14
+ - Methods to add/remove cells and connections in real-time
15
+ - Full integration with PropertyLayers ([#2440](https://github.com/projectmesa/mesa/pull/2440)) for representing environmental variables
16
+ - Compatible with all examples and existing visualizations
17
+
18
+ The PropertyLayer itself has also been stabilized, allowing for efficient management of spatial environmental properties like terrain, resources, or any grid-based variables. Core examples including [Schelling](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/schelling), [Game of Life](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/conways_game_of_life), [Boltzmann Wealth](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/boltzmann_wealth_model), and [Virus on Network](https://github.com/projectmesa/mesa/tree/main/mesa/examples/basic/virus_on_network) have been updated to use the new discrete space system.
19
+
20
+ ### Enhanced Visualization Experience
21
+ The SolaraViz visualization system has received substantial upgrades:
22
+
23
+ - **Command Console** ([#2697](https://github.com/projectmesa/mesa/pull/2697)): An interactive Python console embedded directly in the visualization, allowing real-time model inspection and manipulation
24
+ - **Asynchronous Updates** ([#2656](https://github.com/projectmesa/mesa/pull/2656)): Visualization now runs in a separate thread, dramatically improving performance for complex models
25
+ - **Dark Mode** ([#2689](https://github.com/projectmesa/mesa/pull/2689)): Support for Solara Dark theme, automatically matching system preferences
26
+ - **Improved Error Handling** ([#2747](https://github.com/projectmesa/mesa/pull/2747), [#2753](https://github.com/projectmesa/mesa/pull/2753)): Better visualization of errors with options to view detailed traceback information
27
+ - **Enhanced UI**: Arrow key navigation ([#2725](https://github.com/projectmesa/mesa/pull/2725)), movable input field with auto-scroll ([#2710](https://github.com/projectmesa/mesa/pull/2710)), and other quality-of-life improvements
28
+ - **PropertyLayer visualisation in Altair** ([#2643](https://github.com/projectmesa/mesa/pull/2643)): Support for visualising PropertyLayers using the Altair frontend in Solara.
29
+
30
+ ### Restructured and updated tutorial
31
+ Our [introduction tutorial](https://mesa.readthedocs.io/latest/overview.html) has been completely restructured ([#2731](https://github.com/projectmesa/mesa/pull/2731)). Instead of one huge notebook, the tutorial is now divided into smaller, focused modules that build progressively:
32
+
33
+ - **Creating Your First Model**: Essential basics to get started
34
+ - **Adding Space**: Learn how to use the new discrete space system
35
+ - **Collecting Data**: Effectively gather model statistics
36
+ - **AgentSet**: Master agent management techniques
37
+ - **Visualization**: Series of modules covering basic to advanced visualization
38
+
39
+
40
+ ### Introducing Meta-Agents
41
+ Complex systems often have multiple levels of components. An organization is not one entity, but is made of departments, sub-departments, and people. A person is not a single entity, but it is made of micro biomes, organs and cells. A city is not a single entity, but it is made of districts, neighborhoods, buildings, and people. A forest comprises an ecosystem of trees, plants, animals, and microorganisms.
42
+
43
+ This reality is the motivation for meta-agents. It allows users to represent these multiple levels, where each level can have meta-agents with constituting agents.
44
+ - **Meta agents** [#2748](https://github.com/projectmesa/mesa/pull/2748)
45
+
46
+ To demonstrate meta-agents capability there are two examples:
47
+
48
+ 1. Dynamic meta-agent creation - [Alliance formation](https://mesa.readthedocs.io/latest/examples/advanced/alliance_formation.html), which shows emergent meta-agent formation through a game theoretic based alliance formation.
49
+ 2. Deliberate meta-agent creation - [Warehouse model](https://github.com/projectmesa/mesa-examples/tree/main/examples/warehouse), which provides a pseudo warehouse model to demonstrate meta-agent functionality.
50
+
51
+ Let us know what you think on our [Matrix Channel](https://matrix.to/#/#project-mesa:matrix.org)
52
+
53
+ ### Other improvements
54
+ - AgentSet's `agg` method now supports multiple aggregation functions in a single call ([#2743](https://github.com/projectmesa/mesa/pull/2743))
55
+ - Many documentation improvements have been made based on feedback by our JOSS reviewers
56
+
57
+ ## What's Changed
58
+ ### 🎉 New features added
59
+ * Stabilize experimental Cell Space as `mesa.discrete_space` by @quaquel in https://github.com/projectmesa/mesa/pull/2610
60
+ * Feat: Added Command Console by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2697
61
+ * Stabilize PropertyLayer by @EwoutH in https://github.com/projectmesa/mesa/pull/2440
62
+ ### 🛠 Enhancements made
63
+ * Visualisation: Add dark mode by @sanika-n in https://github.com/projectmesa/mesa/pull/2689
64
+ * Creating threads to update visualization asynchronously by @HMNS19 in https://github.com/projectmesa/mesa/pull/2656
65
+ * Movable Input Field with auto-scroll by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2710
66
+ * Feat: Added arrow key navigation by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2725
67
+ * added property_layer with altair by @sanika-n in https://github.com/projectmesa/mesa/pull/2643
68
+ * Debug option for errors in visualisation by @colinfrisch in https://github.com/projectmesa/mesa/pull/2747
69
+ * Debug option for errors in visualisation front end by @colinfrisch in https://github.com/projectmesa/mesa/pull/2753
70
+ * Add support for dynamic discrete spaces by @quaquel in https://github.com/projectmesa/mesa/pull/2755
71
+ * Support multiple functions in AgentSet `agg` method by @EwoutH in https://github.com/projectmesa/mesa/pull/2743
72
+ ### 🔍 Examples updated
73
+ * Move boltzmann to cell spaces by @quaquel in https://github.com/projectmesa/mesa/pull/2680
74
+ * Move Game of life to cell space by @quaquel in https://github.com/projectmesa/mesa/pull/2681
75
+ * Move Schelling to discrete space by @quaquel in https://github.com/projectmesa/mesa/pull/2684
76
+ * Move virus_on_a_network to discrete_space by @quaquel in https://github.com/projectmesa/mesa/pull/2688
77
+ * Update boid_flockers example include flight direction by @sanika-n in https://github.com/projectmesa/mesa/pull/2696
78
+ ### 📜 Documentation improvements
79
+ * docs: Split off the overview page, extend with spaces/activation by @EwoutH in https://github.com/projectmesa/mesa/pull/2673
80
+ * docs: Add Roles section to CONTRIBUTING.md by @EwoutH in https://github.com/projectmesa/mesa/pull/2694
81
+ * [JOSS] Docs: Clarify difference between core and user examples by @EwoutH in https://github.com/projectmesa/mesa/pull/2706
82
+ * [JOSS] docs: Improve batch_run documentation for parallel processing by @EwoutH in https://github.com/projectmesa/mesa/pull/2707
83
+ * JOSS Tutorial Fixes by @tpike3 in https://github.com/projectmesa/mesa/pull/2708
84
+ * Clean-up old images, compress wolf-sheep image, remove version switch artifact by @EwoutH in https://github.com/projectmesa/mesa/pull/2717
85
+ * docs: Update citation to JOSS article by @EwoutH in https://github.com/projectmesa/mesa/pull/2740
86
+ * update intro tutorial discrete space by @tpike3 in https://github.com/projectmesa/mesa/pull/2731
87
+ * docs: fix broken links to Readthedocs in example descriptions by @reyan-singh in https://github.com/projectmesa/mesa/pull/2757
88
+ ### 🧪 Experimental features
89
+ * Meta agents by @tpike3 in https://github.com/projectmesa/mesa/pull/2748
90
+ ### 🐛 Bugs fixed
91
+ * Minor (bug) fixes to discrete_space by @quaquel in https://github.com/projectmesa/mesa/pull/2687
92
+ * Fixed Marker in mpl by @sanika-n in https://github.com/projectmesa/mesa/pull/2670
93
+
94
+ ## New Contributors
95
+ * @colinfrisch made their first contribution in https://github.com/projectmesa/mesa/pull/2747
96
+ * @reyan-singh made their first contribution in https://github.com/projectmesa/mesa/pull/2757
97
+
98
+ **Full Changelog**: https://github.com/projectmesa/mesa/compare/v3.1.4...v3.2.0
99
+
100
+ # 3.1.5 (2025-03-26)
101
+ ## Highlights
102
+ Mesa 3.1.5 is a maintenance release focused on improving documentation and cleaning up our resources. This update includes no breaking changes and is compatible with previous 3.1.x releases.
103
+
104
+ The documentation improvements include enhanced explanations for batch run parallel processing, a significantly expanded overview section covering spaces, property layers and time advancement methods with practical code examples, and a clearer installation guide detailing what the optional `[rec]` dependencies provide. We've also improved our examples documentation to better distinguish between core and user-contributed examples, and added a new "Roles" section to the contributing guide that outlines the project's community structure and progression paths.
105
+
106
+ On the maintenance side, we've cleaned up unused images and compressed existing ones, reducing the repository size by over 2MB and distribution size from 3.2MB to 1.2MB.
107
+
108
+ ## What's Changed
109
+ ### 📜 Documentation improvements
110
+ * docs: Split off the overview page, extend with spaces/activation by @EwoutH in https://github.com/projectmesa/mesa/pull/2673
111
+ * docs: Add Roles section to CONTRIBUTING.md by @EwoutH in https://github.com/projectmesa/mesa/pull/2694
112
+ * [JOSS] Docs: Clarify difference between core and user examples by @EwoutH in https://github.com/projectmesa/mesa/pull/2706
113
+ * [JOSS] docs: Improve batch_run documentation for parallel processing by @EwoutH in https://github.com/projectmesa/mesa/pull/2707
114
+ * Clean-up old images, compress wolf-sheep image, remove version switch artifact by @EwoutH in https://github.com/projectmesa/mesa/pull/2717
115
+
116
+ **Full Changelog**: https://github.com/projectmesa/mesa/compare/v3.1.4...v3.1.5
117
+
4
118
  # 3.1.4 (2025-02-09)
5
119
  ## Highlights
6
120
  This release contains various improvements and bugfixes to the matplotlib-based visualization of spaces. Hexgrids are now fully supported, including property layers. In making this possible, various minor bugs were encountered and also fixed. In addition to the visualization improvements, there are various minor convenience improvements to the docs.
7
121
 
8
-
9
122
  ## What's Changed
10
123
  ### 🛠 Enhancements made
11
124
  * Fixed hex-space draw function to avoid overlaps by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2609
@@ -367,7 +480,7 @@ Install Mesa 3.0:
367
480
  pip install --upgrade mesa
368
481
  ```
369
482
 
370
- If building a new model, we recommend checking out the updated [Mesa Overview](https://mesa.readthedocs.io/latest/overview.html) and [Introductory Tutorial](https://mesa.readthedocs.io/latest/tutorials/intro_tutorial.html).
483
+ If building a new model, we recommend checking out the updated [Mesa Overview](https://mesa.readthedocs.io/latest/overview.html) and [Introductory Tutorial](https://mesa.readthedocs.io/latest/tutorials/0_first_model.html).
371
484
 
372
485
  For updating existing models, we recommend upgrading in steps:
373
486
  1. Update to latest Mesa 2.x
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Mesa
3
- Version: 3.1.4
3
+ Version: 3.2.0
4
4
  Summary: Agent-based modeling (ABM) in Python
5
5
  Project-URL: homepage, https://github.com/projectmesa/mesa
6
6
  Project-URL: repository, https://github.com/projectmesa/mesa
7
- Author-email: Project Mesa Team <projectmesa@googlegroups.com>
7
+ Author-email: Project Mesa Team <maintainers@projectmesa.dev>
8
8
  License: Apache 2.0
9
9
  License-File: LICENSE
10
10
  License-File: NOTICE
@@ -87,12 +87,13 @@ Description-Content-Type: text/markdown
87
87
 
88
88
  # Mesa: Agent-based modeling in Python
89
89
 
90
- | | |
91
- | --- | --- |
92
- | CI/CD | [![GitHub Actions build status](https://github.com/projectmesa/mesa/workflows/build/badge.svg)](https://github.com/projectmesa/mesa/actions) [![Coverage status](https://codecov.io/gh/projectmesa/mesa/branch/main/graph/badge.svg)](https://codecov.io/gh/projectmesa/mesa) |
90
+ | | |
91
+ |---------| --- |
92
+ | CI/CD | [![GitHub Actions build status](https://github.com/projectmesa/mesa/workflows/build/badge.svg)](https://github.com/projectmesa/mesa/actions) [![Coverage status](https://codecov.io/gh/projectmesa/mesa/branch/main/graph/badge.svg)](https://codecov.io/gh/projectmesa/mesa) |
93
93
  | Package | [![PyPI - Version](https://img.shields.io/pypi/v/mesa.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/Mesa/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/mesa.svg?color=blue&label=Downloads&logo=pypi&logoColor=gold)](https://pypi.org/project/Mesa/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mesa.svg?logo=python&label=Python&logoColor=gold)](https://pypi.org/project/Mesa/) |
94
- | Meta | [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![SPEC 0 — Minimum Supported Dependencies](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0000/) |
95
- | Chat | [![chat](https://img.shields.io/matrix/project-mesa:matrix.org?label=chat&logo=Matrix)](https://matrix.to/#/#project-mesa:matrix.org) |
94
+ | Meta | [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![SPEC 0 — Minimum Supported Dependencies](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0000/) |
95
+ | Chat | [![chat](https://img.shields.io/matrix/project-mesa:matrix.org?label=chat&logo=Matrix)](https://matrix.to/#/#project-mesa:matrix.org) |
96
+ | Cite | [![DOI](https://joss.theoj.org/papers/10.21105/joss.07668/status.svg)](https://doi.org/10.21105/joss.07668) |
96
97
 
97
98
  Mesa allows users to quickly create agent-based models using built-in
98
99
  core components (such as spatial grids and agent schedulers) or
@@ -220,4 +221,7 @@ Don't forget to checkout the [Contributors guide](https://github.com/projectmesa
220
221
 
221
222
  ## Citing Mesa
222
223
 
223
- To cite Mesa in your publication, you can use the [CITATION.bib](https://github.com/projectmesa/mesa/blob/main/CITATION.bib).
224
+ To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
225
+ - ter Hoeven, E., Kwakkel, J., Hess, V., Pike, T., Wang, B., rht, & Kazil, J. (2025). Mesa 3: Agent-based modeling with Python in 2025. Journal of Open Source Software, 10(107), 7668. https://doi.org/10.21105/joss.07668
226
+
227
+ Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
@@ -1,11 +1,12 @@
1
1
  # Mesa: Agent-based modeling in Python
2
2
 
3
- | | |
4
- | --- | --- |
5
- | CI/CD | [![GitHub Actions build status](https://github.com/projectmesa/mesa/workflows/build/badge.svg)](https://github.com/projectmesa/mesa/actions) [![Coverage status](https://codecov.io/gh/projectmesa/mesa/branch/main/graph/badge.svg)](https://codecov.io/gh/projectmesa/mesa) |
3
+ | | |
4
+ |---------| --- |
5
+ | CI/CD | [![GitHub Actions build status](https://github.com/projectmesa/mesa/workflows/build/badge.svg)](https://github.com/projectmesa/mesa/actions) [![Coverage status](https://codecov.io/gh/projectmesa/mesa/branch/main/graph/badge.svg)](https://codecov.io/gh/projectmesa/mesa) |
6
6
  | Package | [![PyPI - Version](https://img.shields.io/pypi/v/mesa.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/Mesa/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/mesa.svg?color=blue&label=Downloads&logo=pypi&logoColor=gold)](https://pypi.org/project/Mesa/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mesa.svg?logo=python&label=Python&logoColor=gold)](https://pypi.org/project/Mesa/) |
7
- | Meta | [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![SPEC 0 — Minimum Supported Dependencies](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0000/) |
8
- | Chat | [![chat](https://img.shields.io/matrix/project-mesa:matrix.org?label=chat&logo=Matrix)](https://matrix.to/#/#project-mesa:matrix.org) |
7
+ | Meta | [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![SPEC 0 — Minimum Supported Dependencies](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0000/) |
8
+ | Chat | [![chat](https://img.shields.io/matrix/project-mesa:matrix.org?label=chat&logo=Matrix)](https://matrix.to/#/#project-mesa:matrix.org) |
9
+ | Cite | [![DOI](https://joss.theoj.org/papers/10.21105/joss.07668/status.svg)](https://doi.org/10.21105/joss.07668) |
9
10
 
10
11
  Mesa allows users to quickly create agent-based models using built-in
11
12
  core components (such as spatial grids and agent schedulers) or
@@ -133,4 +134,7 @@ Don't forget to checkout the [Contributors guide](https://github.com/projectmesa
133
134
 
134
135
  ## Citing Mesa
135
136
 
136
- To cite Mesa in your publication, you can use the [CITATION.bib](https://github.com/projectmesa/mesa/blob/main/CITATION.bib).
137
+ To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
138
+ - ter Hoeven, E., Kwakkel, J., Hess, V., Pike, T., Wang, B., rht, & Kazil, J. (2025). Mesa 3: Agent-based modeling with Python in 2025. Journal of Open Source Software, 10(107), 7668. https://doi.org/10.21105/joss.07668
139
+
140
+ Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
@@ -7,6 +7,7 @@ model
7
7
  agent
8
8
  time
9
9
  space
10
+ discrete_space
10
11
  datacollection
11
12
  batchrunner
12
13
  visualization
@@ -0,0 +1,41 @@
1
+ ## Discrete Space
2
+
3
+ ```{eval-rst}
4
+ .. automodule:: mesa.discrete_space.__init__
5
+ :members:
6
+ ```
7
+
8
+ ```{eval-rst}
9
+ .. automodule:: mesa.discrete_space.cell
10
+ :members:
11
+ ```
12
+
13
+ ```{eval-rst}
14
+ .. automodule:: mesa.discrete_space.cell_agent
15
+ :members:
16
+ ```
17
+
18
+ ```{eval-rst}
19
+ .. automodule:: mesa.discrete_space.cell_collection
20
+ :members:
21
+ ```
22
+
23
+ ```{eval-rst}
24
+ .. automodule:: mesa.discrete_space.discrete_space
25
+ :members:
26
+ ```
27
+
28
+ ```{eval-rst}
29
+ .. automodule:: mesa.discrete_space.grid
30
+ :members:
31
+ ```
32
+
33
+ ```{eval-rst}
34
+ .. automodule:: mesa.discrete_space.network
35
+ :members:
36
+ ```
37
+
38
+ ```{eval-rst}
39
+ .. automodule:: mesa.discrete_space.voronoi
40
+ :members:
41
+ ```
@@ -0,0 +1,39 @@
1
+ # Experimental
2
+ This namespace contains experimental features. These are under development, and their API is not necessarily stable.
3
+
4
+
5
+ ## Devs
6
+
7
+ ```{eval-rst}
8
+ .. automodule:: experimental.devs.eventlist
9
+ :members:
10
+ ```
11
+
12
+ ```{eval-rst}
13
+ .. automodule:: experimental.devs.simulator
14
+ :members:
15
+ ```
16
+
17
+ ## Continuous Space
18
+
19
+ ```{eval-rst}
20
+ .. automodule:: experimental.continuous_space.continuous_space
21
+ :members:
22
+ ```
23
+
24
+ ```{eval-rst}
25
+ .. automodule:: experimental.continuous_space.continuous_space_agents
26
+ :members:
27
+ ```
28
+
29
+ ## Continuous Space
30
+
31
+ ```{eval-rst}
32
+ .. automodule:: experimental.continuous_space.continuous_space
33
+ :members:
34
+ ```
35
+
36
+ ```{eval-rst}
37
+ .. automodule:: experimental.continuous_space.continuous_space_agents
38
+ :members:
39
+ ```
@@ -52,4 +52,13 @@ For a detailed tutorial, please refer to our [Visualization Tutorial](../tutoria
52
52
  :members:
53
53
  :undoc-members:
54
54
  :show-inheritance:
55
+ ```
56
+
57
+ ## Command Console
58
+
59
+ ```{eval-rst}
60
+ .. automodule:: mesa.visualization.command_console
61
+ :members:
62
+ :undoc-members:
63
+ :show-inheritance:
55
64
  ```
@@ -1,4 +1,3 @@
1
- # noqa: D100
2
1
  #!/usr/bin/env python3
3
2
  #
4
3
  # Mesa documentation build configuration file, created by
@@ -16,8 +15,8 @@
16
15
  import os
17
16
  import os.path as osp
18
17
  import pathlib
19
- import sys
20
18
  import string
19
+ import sys
21
20
  from datetime import date
22
21
 
23
22
  # If extensions (or modules to document with autodoc) are in another directory,
@@ -47,7 +46,7 @@ extensions = [
47
46
  "sphinx.ext.viewcode",
48
47
  "sphinx.ext.napoleon", # for google style docstrings
49
48
  "myst_nb", # For Markdown and Jupyter notebooks
50
- "sphinx_copybutton" # For copying the code in the documentation
49
+ "sphinx_copybutton", # For copying the code in the documentation
51
50
  ]
52
51
 
53
52
  # Add any paths that contain templates here, relative to this directory.
@@ -131,11 +130,7 @@ html_theme = "pydata_sphinx_theme"
131
130
  # further. For a list of options available for each theme, see the
132
131
  # documentation.
133
132
  html_theme_options = {
134
- "navbar_start": ["navbar-logo", "version-switcher"], # Show switcher in navbar
135
- "switcher": {
136
- "json_url": "https://mesa.readthedocs.io/latest/_static/switcher.json", # URL of your switcher.json file
137
- "version_match": version # Automatically matches the current version
138
- }
133
+ "navbar_start": ["navbar-logo"],
139
134
  }
140
135
 
141
136
  # Add any paths that contain custom themes here, relative to this directory.
@@ -177,7 +172,7 @@ html_static_path = ["_static"]
177
172
 
178
173
  # Custom sidebar templates, maps document names to template names.
179
174
  html_sidebars = {
180
- 'migration_guide': [], # No sidebar migration
175
+ "migration_guide": [], # No sidebar migration
181
176
  }
182
177
 
183
178
  # Additional templates that should be rendered to pages, maps page names to
@@ -297,8 +292,9 @@ texinfo_documents = [
297
292
  intersphinx_mapping = {"python": ("https://docs.python.org/3", None)}
298
293
 
299
294
 
300
-
301
- def write_example_md_file(agent_filename, model_filename, readme_filename, app_filename, md_filepath, template):
295
+ def write_example_md_file(
296
+ agent_filename, model_filename, readme_filename, app_filename, md_filepath, template
297
+ ):
302
298
  with open(agent_filename) as content_file:
303
299
  agent_file = content_file.read()
304
300
  with open(model_filename) as content_file:
@@ -310,17 +306,30 @@ def write_example_md_file(agent_filename, model_filename, readme_filename, app_f
310
306
 
311
307
  with open(md_filepath, "w") as fh:
312
308
  content = template.substitute(
313
- dict(agent_file=agent_file, model_file=model_file,
314
- readme_file=readme_file, app_file=app_file)
309
+ dict(
310
+ agent_file=agent_file,
311
+ model_file=model_file,
312
+ readme_file=readme_file,
313
+ app_file=app_file,
314
+ )
315
315
  )
316
316
  fh.write(content)
317
317
 
318
+
318
319
  def setup_examples_pages():
319
320
  # create md files for all examples
320
321
  # check what examples exist
321
322
  examples_folder = osp.abspath(osp.join(HERE, "..", "mesa", "examples"))
322
- basic_examples = [("basic", f.path) for f in os.scandir(osp.join(examples_folder, "basic")) if f.is_dir() and not f.name.startswith("__") ]
323
- advanced_examples = [("advanced", f.path) for f in os.scandir(osp.join(examples_folder, "advanced")) if f.is_dir() and not f.name.startswith("__")]
323
+ basic_examples = [
324
+ ("basic", f.path)
325
+ for f in os.scandir(osp.join(examples_folder, "basic"))
326
+ if f.is_dir() and not f.name.startswith("__")
327
+ ]
328
+ advanced_examples = [
329
+ ("advanced", f.path)
330
+ for f in os.scandir(osp.join(examples_folder, "advanced"))
331
+ if f.is_dir() and not f.name.startswith("__")
332
+ ]
324
333
  examples = basic_examples + advanced_examples
325
334
 
326
335
  with open(os.path.join(HERE, "example_template.txt")) as fh:
@@ -329,7 +338,9 @@ def setup_examples_pages():
329
338
  root_folder = pathlib.Path(os.path.join(HERE, "examples"))
330
339
  root_folder.mkdir(parents=True, exist_ok=True)
331
340
  pathlib.Path(os.path.join(root_folder, "basic")).mkdir(parents=True, exist_ok=True)
332
- pathlib.Path(os.path.join(root_folder, "advanced")).mkdir(parents=True, exist_ok=True)
341
+ pathlib.Path(os.path.join(root_folder, "advanced")).mkdir(
342
+ parents=True, exist_ok=True
343
+ )
333
344
 
334
345
  examples_md = []
335
346
  for kind, example in examples:
@@ -344,7 +355,14 @@ def setup_examples_pages():
344
355
  examples_md.append((base_name, f"{kind}/{base_name}"))
345
356
 
346
357
  md_filepath = os.path.join(HERE, "examples", kind, md_filename)
347
- write_example_md_file(agent_filename, model_filename, readme_filename, app_filename, md_filepath, template)
358
+ write_example_md_file(
359
+ agent_filename,
360
+ model_filename,
361
+ readme_filename,
362
+ app_filename,
363
+ md_filepath,
364
+ template,
365
+ )
348
366
 
349
367
  # create overview of examples.md
350
368
  with open(os.path.join(HERE, "examples_overview_template.txt")) as fh:
@@ -357,14 +375,21 @@ def setup_examples_pages():
357
375
  content = template.substitute(
358
376
  dict(
359
377
  readme=readme_md,
360
- example_paths="\n".join([f"{' '.join(a.split('_'))} </examples/{b}>" for a, b in examples_md]),
378
+ example_paths="\n".join(
379
+ [
380
+ f"{' '.join(a.split('_'))} </examples/{b}>"
381
+ for a, b in examples_md
382
+ ]
383
+ ),
361
384
  )
362
385
  )
363
386
  fh.write(content)
364
387
 
388
+
365
389
  def setup(app):
366
390
  setup_examples_pages()
367
391
 
392
+
368
393
  #
369
394
  if __name__ == "__main__":
370
- setup_examples_pages()
395
+ setup_examples_pages()