Mesa 3.1.5__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 (196) hide show
  1. {mesa-3.1.5 → mesa-3.2.0}/.github/workflows/build_lint.yml +1 -1
  2. {mesa-3.1.5 → mesa-3.2.0}/.gitignore +1 -0
  3. {mesa-3.1.5 → mesa-3.2.0}/.pre-commit-config.yaml +1 -1
  4. mesa-3.2.0/CITATION.cff +62 -0
  5. {mesa-3.1.5 → mesa-3.2.0}/CONTRIBUTING.md +1 -1
  6. {mesa-3.1.5 → mesa-3.2.0}/HISTORY.md +97 -1
  7. {mesa-3.1.5 → mesa-3.2.0}/PKG-INFO +12 -8
  8. {mesa-3.1.5 → mesa-3.2.0}/README.md +10 -6
  9. {mesa-3.1.5 → 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.5 → mesa-3.2.0}/docs/apis/visualization.md +9 -0
  13. {mesa-3.1.5 → mesa-3.2.0}/docs/conf.py +44 -19
  14. {mesa-3.1.5 → mesa-3.2.0}/docs/getting_started.md +19 -4
  15. mesa-3.2.0/docs/images/Discrete_Space.drawio.png +0 -0
  16. {mesa-3.1.5 → mesa-3.2.0}/docs/index.md +13 -2
  17. {mesa-3.1.5 → mesa-3.2.0}/docs/overview.md +18 -1
  18. mesa-3.2.0/docs/tutorials/0_first_model.ipynb +612 -0
  19. mesa-3.2.0/docs/tutorials/1_adding_space.ipynb +391 -0
  20. mesa-3.2.0/docs/tutorials/2_collecting_data.ipynb +535 -0
  21. mesa-3.2.0/docs/tutorials/3_agentset.ipynb +338 -0
  22. mesa-3.2.0/docs/tutorials/4_visualization_basic.ipynb +317 -0
  23. mesa-3.2.0/docs/tutorials/5_visualization_dynamic_agents.ipynb +334 -0
  24. mesa-3.2.0/docs/tutorials/6_visualization_custom.ipynb +396 -0
  25. mesa-3.2.0/docs/tutorials/7_batch_run.ipynb +422 -0
  26. mesa-3.2.0/docs/tutorials/8_comparing_scenarios.ipynb +484 -0
  27. {mesa-3.1.5 → mesa-3.2.0}/mesa/__init__.py +3 -1
  28. {mesa-3.1.5 → mesa-3.2.0}/mesa/agent.py +26 -9
  29. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/__init__.py +8 -8
  30. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell.py +29 -10
  31. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_agent.py +1 -1
  32. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/cell_collection.py +3 -3
  33. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/discrete_space.py +65 -3
  34. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/grid.py +2 -2
  35. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/network.py +22 -2
  36. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/property_layer.py +1 -10
  37. {mesa-3.1.5/mesa/experimental/cell_space → mesa-3.2.0/mesa/discrete_space}/voronoi.py +2 -2
  38. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/README.md +1 -1
  39. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/__init__.py +2 -0
  40. mesa-3.2.0/mesa/examples/advanced/alliance_formation/Readme.md +50 -0
  41. mesa-3.2.0/mesa/examples/advanced/alliance_formation/agents.py +20 -0
  42. mesa-3.2.0/mesa/examples/advanced/alliance_formation/app.py +71 -0
  43. mesa-3.2.0/mesa/examples/advanced/alliance_formation/model.py +184 -0
  44. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/agents.py +1 -1
  45. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/model.py +1 -1
  46. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/Readme.md +4 -6
  47. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/agents.py +1 -1
  48. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/model.py +1 -1
  49. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/Readme.md +4 -5
  50. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/agents.py +1 -1
  51. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/model.py +2 -2
  52. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/Readme.md +2 -17
  53. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/agents.py +1 -1
  54. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/app.py +2 -1
  55. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/wolf_sheep/model.py +1 -1
  56. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/Readme.md +6 -1
  57. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/agents.py +1 -0
  58. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/app.py +17 -2
  59. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boid_flockers/model.py +12 -0
  60. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/Readme.md +2 -12
  61. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/agents.py +6 -11
  62. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/app.py +2 -2
  63. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/model.py +7 -11
  64. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/Readme.md +1 -9
  65. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/agents.py +13 -5
  66. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/model.py +10 -7
  67. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/Readme.md +0 -8
  68. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/agents.py +13 -8
  69. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/model.py +6 -9
  70. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/Readme.md +0 -4
  71. mesa-3.2.0/mesa/examples/basic/virus_on_network/__init__.py +0 -0
  72. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/agents.py +13 -17
  73. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/model.py +20 -24
  74. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/__init__.py +2 -2
  75. mesa-3.2.0/mesa/experimental/cell_space/__init__.py +60 -0
  76. mesa-3.2.0/mesa/experimental/meta_agents/__init__.py +25 -0
  77. mesa-3.2.0/mesa/experimental/meta_agents/meta_agent.py +387 -0
  78. {mesa-3.1.5 → mesa-3.2.0}/mesa/model.py +3 -3
  79. {mesa-3.1.5 → mesa-3.2.0}/mesa/space.py +1 -12
  80. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/__init__.py +2 -0
  81. mesa-3.2.0/mesa/visualization/command_console.py +482 -0
  82. mesa-3.2.0/mesa/visualization/components/altair_components.py +450 -0
  83. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/mpl_space_drawing.py +17 -9
  84. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/solara_viz.py +150 -21
  85. {mesa-3.1.5 → mesa-3.2.0}/pyproject.toml +6 -7
  86. {mesa-3.1.5 → mesa-3.2.0}/tests/test_agent.py +12 -0
  87. mesa-3.1.5/tests/test_cell_space.py → mesa-3.2.0/tests/test_discrete_space.py +54 -1
  88. {mesa-3.1.5 → mesa-3.2.0}/tests/test_examples.py +14 -0
  89. mesa-3.2.0/tests/test_meta_agents.py +307 -0
  90. {mesa-3.1.5 → mesa-3.2.0}/tests/test_solara_viz.py +35 -10
  91. mesa-3.1.5/CITATION.bib +0 -19
  92. mesa-3.1.5/docs/apis/experimental.md +0 -68
  93. mesa-3.1.5/docs/tutorials/MoneyModel.py +0 -81
  94. mesa-3.1.5/docs/tutorials/intro_tutorial.ipynb +0 -1903
  95. mesa-3.1.5/docs/tutorials/visualization_tutorial.ipynb +0 -437
  96. mesa-3.1.5/mesa/visualization/components/altair_components.py +0 -190
  97. {mesa-3.1.5 → mesa-3.2.0}/.codespellignore +0 -0
  98. {mesa-3.1.5 → mesa-3.2.0}/.coveragerc +0 -0
  99. {mesa-3.1.5 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
  100. {mesa-3.1.5 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  101. {mesa-3.1.5 → mesa-3.2.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  102. {mesa-3.1.5 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/bug.md +0 -0
  103. {mesa-3.1.5 → mesa-3.2.0}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
  104. {mesa-3.1.5 → mesa-3.2.0}/.github/dependabot.yml +0 -0
  105. {mesa-3.1.5 → mesa-3.2.0}/.github/pull_request_template.md +0 -0
  106. {mesa-3.1.5 → mesa-3.2.0}/.github/release.yml +0 -0
  107. {mesa-3.1.5 → mesa-3.2.0}/.github/workflows/benchmarks.yml +0 -0
  108. {mesa-3.1.5 → mesa-3.2.0}/.github/workflows/release.yml +0 -0
  109. {mesa-3.1.5 → mesa-3.2.0}/.readthedocs.yml +0 -0
  110. {mesa-3.1.5 → mesa-3.2.0}/CODE_OF_CONDUCT.md +0 -0
  111. {mesa-3.1.5 → mesa-3.2.0}/Dockerfile +0 -0
  112. {mesa-3.1.5 → mesa-3.2.0}/LICENSE +0 -0
  113. {mesa-3.1.5 → mesa-3.2.0}/NOTICE +0 -0
  114. {mesa-3.1.5 → mesa-3.2.0}/benchmarks/compare_timings.py +0 -0
  115. {mesa-3.1.5 → mesa-3.2.0}/benchmarks/configurations.py +0 -0
  116. {mesa-3.1.5 → mesa-3.2.0}/benchmarks/global_benchmark.py +0 -0
  117. {mesa-3.1.5 → mesa-3.2.0}/binder/environment.yml +0 -0
  118. {mesa-3.1.5 → mesa-3.2.0}/codecov.yaml +0 -0
  119. {mesa-3.1.5 → mesa-3.2.0}/docker-compose.yml +0 -0
  120. {mesa-3.1.5 → mesa-3.2.0}/docs/Makefile +0 -0
  121. {mesa-3.1.5 → mesa-3.2.0}/docs/README.md +0 -0
  122. {mesa-3.1.5 → mesa-3.2.0}/docs/apis/agent.md +0 -0
  123. {mesa-3.1.5 → mesa-3.2.0}/docs/apis/batchrunner.md +0 -0
  124. {mesa-3.1.5 → mesa-3.2.0}/docs/apis/datacollection.md +0 -0
  125. {mesa-3.1.5 → mesa-3.2.0}/docs/apis/mesa_logging.md +0 -0
  126. {mesa-3.1.5 → mesa-3.2.0}/docs/apis/model.md +0 -0
  127. {mesa-3.1.5 → mesa-3.2.0}/docs/apis/space.md +0 -0
  128. {mesa-3.1.5 → mesa-3.2.0}/docs/best-practices.md +0 -0
  129. {mesa-3.1.5 → mesa-3.2.0}/docs/example_template.txt +0 -0
  130. {mesa-3.1.5 → mesa-3.2.0}/docs/examples_overview_template.txt +0 -0
  131. {mesa-3.1.5 → mesa-3.2.0}/docs/images/mesa_logo.ico +0 -0
  132. {mesa-3.1.5 → mesa-3.2.0}/docs/images/mesa_logo.png +0 -0
  133. {mesa-3.1.5 → mesa-3.2.0}/docs/images/wolf_sheep.png +0 -0
  134. {mesa-3.1.5 → mesa-3.2.0}/docs/make.bat +0 -0
  135. {mesa-3.1.5 → mesa-3.2.0}/docs/mesa.md +0 -0
  136. {mesa-3.1.5 → mesa-3.2.0}/docs/mesa_extension.md +0 -0
  137. {mesa-3.1.5 → mesa-3.2.0}/docs/migration_guide.md +0 -0
  138. {mesa-3.1.5 → mesa-3.2.0}/maintenance/fetch_unlabeled_prs.py +0 -0
  139. {mesa-3.1.5 → mesa-3.2.0}/mesa/batchrunner.py +0 -0
  140. {mesa-3.1.5 → mesa-3.2.0}/mesa/datacollection.py +0 -0
  141. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/__init__.py +0 -0
  142. /mesa-3.1.5/mesa/examples/advanced/epstein_civil_violence/__init__.py → /mesa-3.2.0/mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
  143. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +0 -0
  144. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/Readme.md +0 -0
  145. {mesa-3.1.5/mesa/examples/advanced/pd_grid → mesa-3.2.0/mesa/examples/advanced/epstein_civil_violence}/__init__.py +0 -0
  146. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/epstein_civil_violence/app.py +0 -0
  147. {mesa-3.1.5/mesa/examples/advanced/sugarscape_g1mt → mesa-3.2.0/mesa/examples/advanced/pd_grid}/__init__.py +0 -0
  148. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/analysis.ipynb +0 -0
  149. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/pd_grid/app.py +0 -0
  150. {mesa-3.1.5/mesa/examples/advanced/wolf_sheep → mesa-3.2.0/mesa/examples/advanced/sugarscape_g1mt}/__init__.py +0 -0
  151. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/app.py +0 -0
  152. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +0 -0
  153. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/advanced/sugarscape_g1mt/tests.py +0 -0
  154. {mesa-3.1.5/mesa/examples/basic → mesa-3.2.0/mesa/examples/advanced/wolf_sheep}/__init__.py +0 -0
  155. {mesa-3.1.5/mesa/examples/basic/boid_flockers → mesa-3.2.0/mesa/examples/basic}/__init__.py +0 -0
  156. {mesa-3.1.5/mesa/examples/basic/boltzmann_wealth_model → mesa-3.2.0/mesa/examples/basic/boid_flockers}/__init__.py +0 -0
  157. {mesa-3.1.5/mesa/examples/basic/conways_game_of_life → mesa-3.2.0/mesa/examples/basic/boltzmann_wealth_model}/__init__.py +0 -0
  158. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/boltzmann_wealth_model/st_app.py +0 -0
  159. {mesa-3.1.5/mesa/examples/basic/schelling → mesa-3.2.0/mesa/examples/basic/conways_game_of_life}/__init__.py +0 -0
  160. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/app.py +0 -0
  161. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/conways_game_of_life/st_app.py +0 -0
  162. {mesa-3.1.5/mesa/examples/basic/virus_on_network → mesa-3.2.0/mesa/examples/basic/schelling}/__init__.py +0 -0
  163. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/analysis.ipynb +0 -0
  164. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/schelling/app.py +0 -0
  165. {mesa-3.1.5 → mesa-3.2.0}/mesa/examples/basic/virus_on_network/app.py +0 -0
  166. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/continuous_space/__init__.py +0 -0
  167. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space.py +0 -0
  168. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/continuous_space/continuous_space_agents.py +0 -0
  169. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/devs/__init__.py +0 -0
  170. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/devs/eventlist.py +0 -0
  171. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/devs/simulator.py +0 -0
  172. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/__init__.py +0 -0
  173. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/mesa_signal.py +0 -0
  174. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/observable_collections.py +0 -0
  175. {mesa-3.1.5 → mesa-3.2.0}/mesa/experimental/mesa_signals/signals_util.py +0 -0
  176. {mesa-3.1.5 → mesa-3.2.0}/mesa/mesa_logging.py +0 -0
  177. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/components/__init__.py +0 -0
  178. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/components/matplotlib_components.py +0 -0
  179. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/user_param.py +0 -0
  180. {mesa-3.1.5 → mesa-3.2.0}/mesa/visualization/utils.py +0 -0
  181. {mesa-3.1.5 → mesa-3.2.0}/mypy.ini +0 -0
  182. {mesa-3.1.5 → mesa-3.2.0}/tests/__init__.py +0 -0
  183. {mesa-3.1.5 → mesa-3.2.0}/tests/read_requirements.py +0 -0
  184. {mesa-3.1.5 → mesa-3.2.0}/tests/test_batch_run.py +0 -0
  185. {mesa-3.1.5 → mesa-3.2.0}/tests/test_components_matplotlib.py +0 -0
  186. {mesa-3.1.5 → mesa-3.2.0}/tests/test_continuous_space.py +0 -0
  187. {mesa-3.1.5 → mesa-3.2.0}/tests/test_datacollector.py +0 -0
  188. {mesa-3.1.5 → mesa-3.2.0}/tests/test_devs.py +0 -0
  189. {mesa-3.1.5 → mesa-3.2.0}/tests/test_end_to_end_viz.sh +0 -0
  190. {mesa-3.1.5 → mesa-3.2.0}/tests/test_grid.py +0 -0
  191. {mesa-3.1.5 → mesa-3.2.0}/tests/test_import_namespace.py +0 -0
  192. {mesa-3.1.5 → mesa-3.2.0}/tests/test_lifespan.py +0 -0
  193. {mesa-3.1.5 → mesa-3.2.0}/tests/test_mesa_logging.py +0 -0
  194. {mesa-3.1.5 → mesa-3.2.0}/tests/test_mesa_signals.py +0 -0
  195. {mesa-3.1.5 → mesa-3.2.0}/tests/test_model.py +0 -0
  196. {mesa-3.1.5 → 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)
@@ -1,6 +1,102 @@
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
+
4
100
  # 3.1.5 (2025-03-26)
5
101
  ## Highlights
6
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.
@@ -384,7 +480,7 @@ Install Mesa 3.0:
384
480
  pip install --upgrade mesa
385
481
  ```
386
482
 
387
- 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).
388
484
 
389
485
  For updating existing models, we recommend upgrading in steps:
390
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.5
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()
@@ -7,8 +7,15 @@ Mesa is a modular framework for building, analyzing and visualizing agent-based
7
7
  If you want to get a quick start on how to build agent based models with MESA, check the overview and tutorials:
8
8
 
9
9
  - [Overview of the MESA library](overview): Learn about the core concepts and components of Mesa.
10
- - [Introductory Tutorial](tutorials/intro_tutorial): Learn how to create your first Mesa model.
11
- - [Visualization Tutorial](tutorials/visualization_tutorial): Learn how to create interactive visualizations for your models.
10
+ - [Creating Your First Model](tutorials/0_first_model): Learn how to create your first Mesa model.
11
+ - [Adding Space](tutorials/1_adding_space): Learn how to add space to your Mesa model and understand Mesa's space architecture.
12
+ - [Collecting Data](tutorials/2_collecting_data): Learn how to collect model level and agent level data with Mesa' DataCollector.
13
+ - [AgentSet](tutorials/3_agentset): Learn how to more effectively manage agents with Mesa's AgentSet.
14
+ - [Basic Visualization](tutorials/4_visualization_basic): Learn how to build an interactive dashboard with Mesa's visualization module.
15
+ - [Dynamic Agent Visualization](tutorials/5_visualization_dynamic_agents): Learn how to dynamically represent your agents in your interactive dashboard.
16
+ - [Custom Visualization Components](tutorials/6_visualization_custom): Learn how to add custom visual components to your interactive dashboard.
17
+ - [Parameter Sweeps](tutorials/7_batch_run): Learn how to conduct parameter sweeps on multiple processors with Mesa's BatchRunner.
18
+ - [Comparing Scenarios](tutorials/8_comparing_scenarios): Think through how to analyze your parameter sweep results to find insight in your Mesa simulations.
12
19
 
13
20
  ## Examples
14
21
  Mesa ships with a collection of example models. These are classic ABMs, so if you are familiar with ABMs and want to get a quick sense of how MESA works, these examples are great place to start. You can find them [here](examples).
@@ -46,8 +53,16 @@ Enjoy modelling with Mesa, and feel free to reach out!
46
53
  :hidden: true
47
54
  :maxdepth: 7
48
55
 
49
- tutorials/intro_tutorial
50
- tutorials/visualization_tutorial
56
+ Overview <overview>
57
+ Creating Your First Model <tutorials/0_first_model>
58
+ Adding Space <tutorials/1_adding_space>
59
+ Collecting Data <tutorials/2_collecting_data>
60
+ AgentSet <tutorials/3_agentset>
61
+ Basic Visualization <tutorials/4_visualization_basic>
62
+ Dynamic Agent Visualization <tutorials/5_visualization_dynamic_agents>
63
+ Custom Visualization Components <tutorials/6_visualization_custom>
64
+ Parameter Sweeps <tutorials/7_batch_run>
65
+ Comparing Scenarios <tutorials/8_comparing_scenarios>
51
66
  Best Practices <best-practices>
52
67
 
53
68
 
@@ -1,5 +1,9 @@
1
1
  # Mesa: Agent-based modeling in Python
2
2
 
3
+ ```{image} https://joss.theoj.org/papers/10.21105/joss.07668/status.svg
4
+ :target: https://doi.org/10.21105/joss.07668
5
+ ```
6
+
3
7
  ```{image} https://github.com/projectmesa/mesa/workflows/build/badge.svg
4
8
  :target: https://github.com/projectmesa/mesa/actions
5
9
  ```
@@ -18,7 +22,7 @@
18
22
 
19
23
  [Mesa] is an Apache2 licensed agent-based modeling (or ABM) framework in Python.
20
24
 
21
- Mesa allows users to quickly create agent-based models using built-in core components (such as spatial grids and agent schedulers) or customized implementations; visualize them using a browser-based interface; and analyze their results using Python's data analysis tools. Its goal is to be the Python-based counterpart to NetLogo, Repast, or MASON.
25
+ Mesa allows users to quickly create agent-based models using built-in core components (such as spatial grids and agent schedulers) or customized implementations; visualize them using a browser-based interface; and analyze their results using Python's data analysis tools. Mesa's goal is to make simulations accessible to everyone, so humanity can more effectively understand and solve complex problems.
22
26
 
23
27
  ![A screenshot of the Wolf Sheep model in Mesa|100%](images/wolf_sheep.png)
24
28
  *A visualisation of the Wolf Sheep model build with Mesa.*
@@ -67,7 +71,14 @@ Mesa is an open source project and welcomes contributions:
67
71
  - [Issue Tracker] - Report bugs or suggest features
68
72
  - [Contributors Guide] - Learn how to contribute
69
73
 
70
- The original Mesa conference paper is [available here](http://conference.scipy.org.s3-website-us-east-1.amazonaws.com/proceedings/scipy2015/jacqueline_kazil.html).
74
+ ### Citing Mesa
75
+
76
+ To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
77
+ - 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
78
+
79
+ Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
80
+
81
+ The original Mesa conference paper from 2015 is [available here](http://conference.scipy.org.s3-website-us-east-1.amazonaws.com/proceedings/scipy2015/jacqueline_kazil.html).
71
82
 
72
83
  ```{toctree}
73
84
  :hidden: true
@@ -299,4 +299,21 @@ This will create an interactive visualization of your model, including:
299
299
  - A plot of a model metric over time
300
300
  - A slider to adjust the number of agents
301
301
 
302
- You can also create custom visualization components using Matplotlib. For more advanced usage and customization options, please refer to the [visualization tutorial](tutorials/visualization_tutorial).
302
+ ```{toctree}
303
+ :hidden: true
304
+ :maxdepth: 7
305
+
306
+ Overview <overview>
307
+ Creating Your First Model <tutorials/0_first_model>
308
+ Adding Space <tutorials/1_adding_space>
309
+ Collecting Data <tutorials/2_collecting_data>
310
+ AgentSet <tutorials/3_agentset>
311
+ Basic Visualization <tutorials/4_visualization_basic>
312
+ Dynamic Agent Visualization <tutorials/5_visualization_dynamic_agents>
313
+ Custom Visualization Components <tutorials/6_visualization_custom>
314
+ Parameter Sweeps <tutorials/7_batch_run>
315
+ Comparing Scenarios <tutorials/8_comparing_scenarios>
316
+ Best Practices <best-practices>
317
+
318
+
319
+ ```