Mesa 2.3.0__tar.gz → 3.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. mesa-3.4.0/.coderabbit.yaml +137 -0
  2. {mesa-2.3.0 → mesa-3.4.0}/.github/ISSUE_TEMPLATE/bug-report.md +2 -1
  3. mesa-3.4.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. mesa-3.4.0/.github/PULL_REQUEST_TEMPLATE/bug.md +16 -0
  5. mesa-3.4.0/.github/PULL_REQUEST_TEMPLATE/feature.md +16 -0
  6. mesa-3.4.0/.github/pull_request_template.md +4 -0
  7. {mesa-2.3.0 → mesa-3.4.0}/.github/release.yml +6 -0
  8. {mesa-2.3.0 → mesa-3.4.0}/.github/workflows/benchmarks.yml +12 -10
  9. mesa-3.4.0/.github/workflows/build_lint.yml +106 -0
  10. {mesa-2.3.0 → mesa-3.4.0}/.github/workflows/release.yml +8 -5
  11. {mesa-2.3.0 → mesa-3.4.0}/.gitignore +7 -4
  12. {mesa-2.3.0 → mesa-3.4.0}/.pre-commit-config.yaml +5 -9
  13. {mesa-2.3.0 → mesa-3.4.0}/.readthedocs.yml +3 -3
  14. mesa-3.4.0/CITATION.cff +62 -0
  15. {mesa-2.3.0 → mesa-3.4.0}/CODE_OF_CONDUCT.md +11 -1
  16. mesa-3.4.0/CONTRIBUTING.md +304 -0
  17. mesa-3.4.0/HISTORY.md +2950 -0
  18. mesa-3.4.0/LICENSE +202 -0
  19. mesa-2.3.0/LICENSE → mesa-3.4.0/NOTICE +2 -2
  20. mesa-3.4.0/PKG-INFO +234 -0
  21. mesa-3.4.0/README.md +138 -0
  22. mesa-3.4.0/benchmarks/README.md +99 -0
  23. {mesa-2.3.0 → mesa-3.4.0}/benchmarks/compare_timings.py +13 -2
  24. {mesa-2.3.0 → mesa-3.4.0}/benchmarks/configurations.py +36 -8
  25. {mesa-2.3.0 → mesa-3.4.0}/benchmarks/global_benchmark.py +34 -11
  26. mesa-3.4.0/binder/environment.yml +16 -0
  27. {mesa-2.3.0 → mesa-3.4.0}/codecov.yaml +2 -2
  28. mesa-3.4.0/docs/GSoC.md +52 -0
  29. {mesa-2.3.0 → mesa-3.4.0}/docs/README.md +6 -6
  30. mesa-3.4.0/docs/apis/agent.md +8 -0
  31. {mesa-2.3.0 → mesa-3.4.0}/docs/apis/api_main.md +5 -1
  32. {mesa-2.3.0 → mesa-3.4.0}/docs/apis/batchrunner.md +2 -0
  33. {mesa-2.3.0 → mesa-3.4.0}/docs/apis/datacollection.md +2 -0
  34. mesa-3.4.0/docs/apis/discrete_space.md +41 -0
  35. mesa-3.4.0/docs/apis/experimental.md +39 -0
  36. mesa-3.4.0/docs/apis/mesa_logging.md +7 -0
  37. mesa-2.3.0/docs/apis/time.md → mesa-3.4.0/docs/apis/model.md +3 -1
  38. {mesa-2.3.0 → mesa-3.4.0}/docs/apis/space.md +2 -0
  39. mesa-3.4.0/docs/apis/visualization.md +130 -0
  40. {mesa-2.3.0 → mesa-3.4.0}/docs/best-practices.md +20 -21
  41. {mesa-2.3.0 → mesa-3.4.0}/docs/conf.py +124 -12
  42. mesa-3.4.0/docs/example_template.txt +22 -0
  43. mesa-3.4.0/docs/examples_overview_template.txt +13 -0
  44. mesa-3.4.0/docs/getting_started.md +58 -0
  45. mesa-3.4.0/docs/images/Discrete_Space.drawio.png +0 -0
  46. mesa-3.4.0/docs/images/wolf_sheep.png +0 -0
  47. mesa-3.4.0/docs/index.md +128 -0
  48. {mesa-2.3.0 → mesa-3.4.0}/docs/mesa.md +0 -16
  49. mesa-3.4.0/docs/mesa_extension.md +97 -0
  50. mesa-3.4.0/docs/migration_guide.md +473 -0
  51. mesa-3.4.0/docs/overview.md +320 -0
  52. mesa-3.4.0/docs/tutorials/0_first_model.ipynb +612 -0
  53. mesa-3.4.0/docs/tutorials/10_comparing_scenarios.ipynb +733 -0
  54. mesa-3.4.0/docs/tutorials/1_adding_space.ipynb +389 -0
  55. mesa-3.4.0/docs/tutorials/2_collecting_data.ipynb +531 -0
  56. mesa-3.4.0/docs/tutorials/3_agentset.ipynb +338 -0
  57. mesa-3.4.0/docs/tutorials/4_visualization_basic.ipynb +379 -0
  58. mesa-3.4.0/docs/tutorials/5_visualization_dynamic_agents.ipynb +381 -0
  59. mesa-3.4.0/docs/tutorials/6_visualization_rendering_with_space_renderer.ipynb +572 -0
  60. mesa-3.4.0/docs/tutorials/7_visualization_propertylayer_visualization.ipynb +535 -0
  61. mesa-3.4.0/docs/tutorials/8_visualization_custom.ipynb +433 -0
  62. mesa-3.4.0/docs/tutorials/9_batch_run.ipynb +501 -0
  63. {mesa-2.3.0 → mesa-3.4.0}/mesa/__init__.py +9 -11
  64. mesa-3.4.0/mesa/agent.py +714 -0
  65. mesa-3.4.0/mesa/batchrunner.py +264 -0
  66. mesa-3.4.0/mesa/datacollection.py +451 -0
  67. mesa-3.4.0/mesa/discrete_space/__init__.py +50 -0
  68. mesa-3.4.0/mesa/discrete_space/cell.py +228 -0
  69. mesa-3.4.0/mesa/discrete_space/cell_agent.py +144 -0
  70. mesa-3.4.0/mesa/discrete_space/cell_collection.py +159 -0
  71. mesa-3.4.0/mesa/discrete_space/discrete_space.py +175 -0
  72. {mesa-2.3.0/mesa/experimental/cell_space → mesa-3.4.0/mesa/discrete_space}/grid.py +127 -22
  73. mesa-3.4.0/mesa/discrete_space/network.py +77 -0
  74. mesa-3.4.0/mesa/discrete_space/property_layer.py +441 -0
  75. mesa-3.4.0/mesa/discrete_space/voronoi.py +268 -0
  76. mesa-3.4.0/mesa/examples/README.md +44 -0
  77. mesa-3.4.0/mesa/examples/__init__.py +23 -0
  78. mesa-3.4.0/mesa/examples/advanced/alliance_formation/Readme.md +50 -0
  79. mesa-3.4.0/mesa/examples/advanced/alliance_formation/agents.py +20 -0
  80. mesa-3.4.0/mesa/examples/advanced/alliance_formation/app.py +71 -0
  81. mesa-3.4.0/mesa/examples/advanced/alliance_formation/model.py +184 -0
  82. mesa-3.4.0/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +116 -0
  83. mesa-3.4.0/mesa/examples/advanced/epstein_civil_violence/Readme.md +32 -0
  84. mesa-3.4.0/mesa/examples/advanced/epstein_civil_violence/agents.py +164 -0
  85. mesa-3.4.0/mesa/examples/advanced/epstein_civil_violence/app.py +93 -0
  86. mesa-3.4.0/mesa/examples/advanced/epstein_civil_violence/model.py +137 -0
  87. mesa-3.4.0/mesa/examples/advanced/pd_grid/Readme.md +41 -0
  88. mesa-3.4.0/mesa/examples/advanced/pd_grid/agents.py +51 -0
  89. mesa-3.4.0/mesa/examples/advanced/pd_grid/analysis.ipynb +183 -0
  90. mesa-3.4.0/mesa/examples/advanced/pd_grid/app.py +62 -0
  91. mesa-3.4.0/mesa/examples/advanced/pd_grid/model.py +69 -0
  92. mesa-3.4.0/mesa/examples/advanced/sugarscape_g1mt/Readme.md +63 -0
  93. mesa-3.4.0/mesa/examples/advanced/sugarscape_g1mt/agents.py +291 -0
  94. mesa-3.4.0/mesa/examples/advanced/sugarscape_g1mt/app.py +84 -0
  95. mesa-3.4.0/mesa/examples/advanced/sugarscape_g1mt/model.py +175 -0
  96. mesa-3.4.0/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +50 -0
  97. mesa-3.4.0/mesa/examples/advanced/wolf_sheep/Readme.md +42 -0
  98. mesa-3.4.0/mesa/examples/advanced/wolf_sheep/__init__.py +0 -0
  99. mesa-3.4.0/mesa/examples/advanced/wolf_sheep/agents.py +150 -0
  100. mesa-3.4.0/mesa/examples/advanced/wolf_sheep/app.py +99 -0
  101. mesa-3.4.0/mesa/examples/advanced/wolf_sheep/model.py +132 -0
  102. mesa-3.4.0/mesa/examples/basic/__init__.py +0 -0
  103. mesa-3.4.0/mesa/examples/basic/boid_flockers/Readme.md +27 -0
  104. mesa-3.4.0/mesa/examples/basic/boid_flockers/__init__.py +0 -0
  105. mesa-3.4.0/mesa/examples/basic/boid_flockers/agents.py +92 -0
  106. mesa-3.4.0/mesa/examples/basic/boid_flockers/app.py +88 -0
  107. mesa-3.4.0/mesa/examples/basic/boid_flockers/model.py +110 -0
  108. mesa-3.4.0/mesa/examples/basic/boltzmann_wealth_model/Readme.md +46 -0
  109. mesa-3.4.0/mesa/examples/basic/boltzmann_wealth_model/__init__.py +0 -0
  110. mesa-3.4.0/mesa/examples/basic/boltzmann_wealth_model/agents.py +44 -0
  111. mesa-3.4.0/mesa/examples/basic/boltzmann_wealth_model/app.py +89 -0
  112. mesa-3.4.0/mesa/examples/basic/boltzmann_wealth_model/model.py +74 -0
  113. mesa-3.4.0/mesa/examples/basic/boltzmann_wealth_model/st_app.py +115 -0
  114. mesa-3.4.0/mesa/examples/basic/conways_game_of_life/Readme.md +31 -0
  115. mesa-3.4.0/mesa/examples/basic/conways_game_of_life/__init__.py +0 -0
  116. mesa-3.4.0/mesa/examples/basic/conways_game_of_life/agents.py +55 -0
  117. mesa-3.4.0/mesa/examples/basic/conways_game_of_life/app.py +75 -0
  118. mesa-3.4.0/mesa/examples/basic/conways_game_of_life/model.py +36 -0
  119. mesa-3.4.0/mesa/examples/basic/conways_game_of_life/st_app.py +72 -0
  120. mesa-3.4.0/mesa/examples/basic/schelling/Readme.md +32 -0
  121. mesa-3.4.0/mesa/examples/basic/schelling/__init__.py +0 -0
  122. mesa-3.4.0/mesa/examples/basic/schelling/agents.py +47 -0
  123. mesa-3.4.0/mesa/examples/basic/schelling/analysis.ipynb +211 -0
  124. mesa-3.4.0/mesa/examples/basic/schelling/app.py +93 -0
  125. mesa-3.4.0/mesa/examples/basic/schelling/model.py +80 -0
  126. mesa-3.4.0/mesa/examples/basic/schelling/resources/blue_happy.png +0 -0
  127. mesa-3.4.0/mesa/examples/basic/schelling/resources/blue_unhappy.png +0 -0
  128. mesa-3.4.0/mesa/examples/basic/schelling/resources/orange_happy.png +0 -0
  129. mesa-3.4.0/mesa/examples/basic/schelling/resources/orange_unhappy.png +0 -0
  130. mesa-3.4.0/mesa/examples/basic/virus_on_network/Readme.md +46 -0
  131. mesa-3.4.0/mesa/examples/basic/virus_on_network/__init__.py +0 -0
  132. mesa-3.4.0/mesa/examples/basic/virus_on_network/agents.py +65 -0
  133. mesa-3.4.0/mesa/examples/basic/virus_on_network/app.py +140 -0
  134. mesa-3.4.0/mesa/examples/basic/virus_on_network/model.py +92 -0
  135. mesa-3.4.0/mesa/experimental/__init__.py +19 -0
  136. mesa-3.4.0/mesa/experimental/continuous_space/__init__.py +8 -0
  137. mesa-3.4.0/mesa/experimental/continuous_space/continuous_space.py +273 -0
  138. mesa-3.4.0/mesa/experimental/continuous_space/continuous_space_agents.py +101 -0
  139. mesa-3.4.0/mesa/experimental/devs/__init__.py +24 -0
  140. {mesa-2.3.0 → mesa-3.4.0}/mesa/experimental/devs/eventlist.py +72 -15
  141. {mesa-2.3.0 → mesa-3.4.0}/mesa/experimental/devs/simulator.py +166 -46
  142. mesa-3.4.0/mesa/experimental/mesa_signals/__init__.py +23 -0
  143. mesa-3.4.0/mesa/experimental/mesa_signals/mesa_signal.py +485 -0
  144. mesa-3.4.0/mesa/experimental/mesa_signals/observable_collections.py +133 -0
  145. mesa-3.4.0/mesa/experimental/mesa_signals/signals_util.py +52 -0
  146. mesa-3.4.0/mesa/experimental/meta_agents/__init__.py +25 -0
  147. mesa-3.4.0/mesa/experimental/meta_agents/meta_agent.py +387 -0
  148. mesa-3.4.0/mesa/mesa_logging.py +190 -0
  149. mesa-3.4.0/mesa/model.py +251 -0
  150. {mesa-2.3.0 → mesa-3.4.0}/mesa/space.py +243 -174
  151. mesa-3.4.0/mesa/visualization/__init__.py +29 -0
  152. mesa-3.4.0/mesa/visualization/backends/__init__.py +23 -0
  153. mesa-3.4.0/mesa/visualization/backends/abstract_renderer.py +97 -0
  154. mesa-3.4.0/mesa/visualization/backends/altair_backend.py +444 -0
  155. mesa-3.4.0/mesa/visualization/backends/matplotlib_backend.py +425 -0
  156. mesa-3.4.0/mesa/visualization/command_console.py +482 -0
  157. mesa-3.4.0/mesa/visualization/components/__init__.py +103 -0
  158. mesa-3.4.0/mesa/visualization/components/altair_components.py +553 -0
  159. mesa-3.4.0/mesa/visualization/components/matplotlib_components.py +177 -0
  160. mesa-3.4.0/mesa/visualization/components/portrayal_components.py +120 -0
  161. mesa-3.4.0/mesa/visualization/mpl_space_drawing.py +836 -0
  162. mesa-3.4.0/mesa/visualization/solara_viz.py +952 -0
  163. mesa-3.4.0/mesa/visualization/space_drawers.py +797 -0
  164. mesa-3.4.0/mesa/visualization/space_renderer.py +489 -0
  165. mesa-2.3.0/mesa/experimental/UserParam.py → mesa-3.4.0/mesa/visualization/user_param.py +20 -7
  166. mesa-3.4.0/mesa/visualization/utils.py +9 -0
  167. {mesa-2.3.0 → mesa-3.4.0}/pyproject.toml +54 -24
  168. mesa-3.4.0/tests/__init__.py +1 -0
  169. mesa-3.4.0/tests/discrete_space/test_discrete_space.py +1094 -0
  170. {mesa-2.3.0/tests → mesa-3.4.0/tests/discrete_space}/test_grid.py +38 -88
  171. mesa-3.4.0/tests/discrete_space/test_hexgrid_torus_validation.py +36 -0
  172. {mesa-2.3.0/tests → mesa-3.4.0/tests/examples}/test_end_to_end_viz.sh +0 -0
  173. mesa-3.4.0/tests/examples/test_examples.py +122 -0
  174. mesa-3.4.0/tests/examples/test_examples_viz.py +349 -0
  175. mesa-3.4.0/tests/experimental/test_continuous_space.py +432 -0
  176. {mesa-2.3.0/tests → mesa-3.4.0/tests/experimental}/test_devs.py +71 -11
  177. mesa-3.4.0/tests/experimental/test_mesa_signals.py +290 -0
  178. mesa-3.4.0/tests/experimental/test_meta_agents.py +307 -0
  179. {mesa-2.3.0 → mesa-3.4.0}/tests/read_requirements.py +1 -0
  180. mesa-3.4.0/tests/test_agent.py +712 -0
  181. mesa-3.4.0/tests/test_batch_run.py +362 -0
  182. mesa-3.4.0/tests/test_datacollector.py +418 -0
  183. mesa-3.4.0/tests/test_import_namespace.py +23 -0
  184. {mesa-2.3.0 → mesa-3.4.0}/tests/test_lifespan.py +27 -28
  185. mesa-3.4.0/tests/test_mesa_logging.py +47 -0
  186. mesa-3.4.0/tests/test_model.py +158 -0
  187. {mesa-2.3.0 → mesa-3.4.0}/tests/test_space.py +164 -172
  188. mesa-3.4.0/tests/visualization/test_backends.py +337 -0
  189. mesa-3.4.0/tests/visualization/test_components_matplotlib.py +256 -0
  190. mesa-3.4.0/tests/visualization/test_portrayal_components.py +143 -0
  191. mesa-3.4.0/tests/visualization/test_solara_viz.py +331 -0
  192. mesa-3.4.0/tests/visualization/test_solara_viz_updated.py +354 -0
  193. mesa-3.4.0/tests/visualization/test_space_drawer.py +313 -0
  194. mesa-3.4.0/tests/visualization/test_space_renderer.py +209 -0
  195. mesa-2.3.0/.codespellignore +0 -8
  196. mesa-2.3.0/.coveragerc +0 -8
  197. mesa-2.3.0/.github/ISSUE_TEMPLATE/asking-help.md +0 -9
  198. mesa-2.3.0/.github/workflows/build_lint.yml +0 -82
  199. mesa-2.3.0/CITATION.bib +0 -19
  200. mesa-2.3.0/CONTRIBUTING.md +0 -110
  201. mesa-2.3.0/Dockerfile +0 -38
  202. mesa-2.3.0/HISTORY.md +0 -1772
  203. mesa-2.3.0/PKG-INFO +0 -170
  204. mesa-2.3.0/README.md +0 -121
  205. mesa-2.3.0/benchmarks/Flocking/flocking.py +0 -166
  206. mesa-2.3.0/benchmarks/Schelling/schelling.py +0 -109
  207. mesa-2.3.0/benchmarks/WolfSheep/wolf_sheep.py +0 -254
  208. mesa-2.3.0/docker-compose.yml +0 -21
  209. mesa-2.3.0/docs/apis/init.md +0 -11
  210. mesa-2.3.0/docs/apis/visualization.md +0 -38
  211. mesa-2.3.0/docs/howto.md +0 -83
  212. mesa-2.3.0/docs/images/Mesa_Screenshot.png +0 -0
  213. mesa-2.3.0/docs/images/tutorial/br_ginis.png +0 -0
  214. mesa-2.3.0/docs/images/tutorial/dc_endwealth.png +0 -0
  215. mesa-2.3.0/docs/images/tutorial/dc_gini.png +0 -0
  216. mesa-2.3.0/docs/images/tutorial/dc_oneagent.png +0 -0
  217. mesa-2.3.0/docs/images/tutorial/first_hist.png +0 -0
  218. mesa-2.3.0/docs/images/tutorial/multirun_hist.png +0 -0
  219. mesa-2.3.0/docs/images/tutorial/numpy_grid.png +0 -0
  220. mesa-2.3.0/docs/images/tutorial/viz_chart.png +0 -0
  221. mesa-2.3.0/docs/images/tutorial/viz_empty.png +0 -0
  222. mesa-2.3.0/docs/images/tutorial/viz_greycircles.png +0 -0
  223. mesa-2.3.0/docs/images/tutorial/viz_histogram.png +0 -0
  224. mesa-2.3.0/docs/images/tutorial/viz_redcircles.png +0 -0
  225. mesa-2.3.0/docs/index.md +0 -105
  226. mesa-2.3.0/docs/mesa.visualization.md +0 -46
  227. mesa-2.3.0/docs/mesa.visualization.modules.md +0 -76
  228. mesa-2.3.0/docs/modular-visualization.md +0 -249
  229. mesa-2.3.0/docs/overview.md +0 -146
  230. mesa-2.3.0/docs/packages.md +0 -110
  231. mesa-2.3.0/docs/tutorials/MoneyModel.py +0 -66
  232. mesa-2.3.0/docs/tutorials/adv_tutorial_legacy.ipynb +0 -510
  233. mesa-2.3.0/docs/tutorials/files/viz_chart.png +0 -0
  234. mesa-2.3.0/docs/tutorials/files/viz_empty.png +0 -0
  235. mesa-2.3.0/docs/tutorials/files/viz_greycircles.png +0 -0
  236. mesa-2.3.0/docs/tutorials/files/viz_histogram.png +0 -0
  237. mesa-2.3.0/docs/tutorials/files/viz_redcircles.png +0 -0
  238. mesa-2.3.0/docs/tutorials/files/viz_slider.png +0 -0
  239. mesa-2.3.0/docs/tutorials/intro_tutorial.ipynb +0 -1485
  240. mesa-2.3.0/docs/tutorials/visualization_tutorial.ipynb +0 -271
  241. mesa-2.3.0/mesa/agent.py +0 -362
  242. mesa-2.3.0/mesa/batchrunner.py +0 -191
  243. mesa-2.3.0/mesa/cookiecutter-mesa/cookiecutter.json +0 -8
  244. mesa-2.3.0/mesa/cookiecutter-mesa/hooks/post_gen_project.py +0 -11
  245. mesa-2.3.0/mesa/cookiecutter-mesa/{{cookiecutter.snake}}/README.md +0 -4
  246. mesa-2.3.0/mesa/cookiecutter-mesa/{{cookiecutter.snake}}/run.pytemplate +0 -3
  247. mesa-2.3.0/mesa/cookiecutter-mesa/{{cookiecutter.snake}}/setup.pytemplate +0 -11
  248. mesa-2.3.0/mesa/cookiecutter-mesa/{{cookiecutter.snake}}/{{cookiecutter.snake}}/model.pytemplate +0 -60
  249. mesa-2.3.0/mesa/cookiecutter-mesa/{{cookiecutter.snake}}/{{cookiecutter.snake}}/server.pytemplate +0 -36
  250. mesa-2.3.0/mesa/datacollection.py +0 -280
  251. mesa-2.3.0/mesa/experimental/__init__.py +0 -5
  252. mesa-2.3.0/mesa/experimental/cell_space/__init__.py +0 -23
  253. mesa-2.3.0/mesa/experimental/cell_space/cell.py +0 -152
  254. mesa-2.3.0/mesa/experimental/cell_space/cell_agent.py +0 -37
  255. mesa-2.3.0/mesa/experimental/cell_space/cell_collection.py +0 -81
  256. mesa-2.3.0/mesa/experimental/cell_space/discrete_space.py +0 -64
  257. mesa-2.3.0/mesa/experimental/cell_space/network.py +0 -40
  258. mesa-2.3.0/mesa/experimental/components/altair.py +0 -72
  259. mesa-2.3.0/mesa/experimental/components/matplotlib.py +0 -136
  260. mesa-2.3.0/mesa/experimental/devs/__init__.py +0 -4
  261. mesa-2.3.0/mesa/experimental/devs/examples/epstein_civil_violence.py +0 -273
  262. mesa-2.3.0/mesa/experimental/devs/examples/wolf_sheep.py +0 -250
  263. mesa-2.3.0/mesa/experimental/jupyter_viz.py +0 -400
  264. mesa-2.3.0/mesa/flat/__init__.py +0 -6
  265. mesa-2.3.0/mesa/flat/visualization.py +0 -5
  266. mesa-2.3.0/mesa/main.py +0 -63
  267. mesa-2.3.0/mesa/model.py +0 -163
  268. mesa-2.3.0/mesa/time.py +0 -408
  269. mesa-2.3.0/mesa/visualization/ModularVisualization.py +0 -1
  270. mesa-2.3.0/mesa/visualization/TextVisualization.py +0 -1
  271. mesa-2.3.0/mesa/visualization/UserParam.py +0 -1
  272. mesa-2.3.0/mesa/visualization/__init__.py +0 -7
  273. mesa-2.3.0/mesa/visualization/modules.py +0 -1
  274. mesa-2.3.0/mypy.ini +0 -2
  275. mesa-2.3.0/tests/test_agent.py +0 -284
  276. mesa-2.3.0/tests/test_batch_run.py +0 -200
  277. mesa-2.3.0/tests/test_cell_space.py +0 -465
  278. mesa-2.3.0/tests/test_datacollector.py +0 -234
  279. mesa-2.3.0/tests/test_examples.py +0 -68
  280. mesa-2.3.0/tests/test_import_namespace.py +0 -33
  281. mesa-2.3.0/tests/test_jupyter_viz.py +0 -153
  282. mesa-2.3.0/tests/test_main.py +0 -34
  283. mesa-2.3.0/tests/test_model.py +0 -53
  284. mesa-2.3.0/tests/test_scaffold.py +0 -22
  285. mesa-2.3.0/tests/test_time.py +0 -342
  286. mesa-2.3.0/tests/test_tornado.py +0 -41
  287. mesa-2.3.0/tests/test_usersettableparam.py +0 -57
  288. mesa-2.3.0/tests/test_visualization.py +0 -105
  289. {mesa-2.3.0 → mesa-3.4.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
  290. {mesa-2.3.0 → mesa-3.4.0}/.github/dependabot.yml +0 -0
  291. {mesa-2.3.0 → mesa-3.4.0}/docs/Makefile +0 -0
  292. {mesa-2.3.0 → mesa-3.4.0}/docs/images/mesa_logo.ico +0 -0
  293. {mesa-2.3.0 → mesa-3.4.0}/docs/images/mesa_logo.png +0 -0
  294. {mesa-2.3.0 → mesa-3.4.0}/docs/make.bat +0 -0
  295. {mesa-2.3.0/benchmarks/Flocking → mesa-3.4.0/mesa/examples/advanced}/__init__.py +0 -0
  296. /mesa-2.3.0/benchmarks/Schelling/__init__.py → /mesa-3.4.0/mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
  297. {mesa-2.3.0/benchmarks/WolfSheep → mesa-3.4.0/mesa/examples/advanced/epstein_civil_violence}/__init__.py +0 -0
  298. {mesa-2.3.0/mesa/cookiecutter-mesa/{{cookiecutter.snake}}/{{cookiecutter.snake}} → mesa-3.4.0/mesa/examples/advanced/pd_grid}/__init__.py +0 -0
  299. {mesa-2.3.0/tests → mesa-3.4.0/mesa/examples/advanced/sugarscape_g1mt}/__init__.py +0 -0
@@ -0,0 +1,137 @@
1
+ language: en-US
2
+ tone_instructions: ''
3
+ early_access: false
4
+ enable_free_tier: true
5
+ reviews:
6
+ profile: chill
7
+ request_changes_workflow: false
8
+ high_level_summary: true
9
+ high_level_summary_placeholder: '@coderabbitai summary'
10
+ high_level_summary_in_walkthrough: false
11
+ auto_title_placeholder: '@coderabbitai'
12
+ auto_title_instructions: ''
13
+ review_status: false
14
+ commit_status: true
15
+ fail_commit_status: false
16
+ collapse_walkthrough: false
17
+ changed_files_summary: true
18
+ sequence_diagrams: true
19
+ assess_linked_issues: true
20
+ related_issues: true
21
+ related_prs: true
22
+ suggested_labels: true
23
+ auto_apply_labels: false
24
+ suggested_reviewers: true
25
+ auto_assign_reviewers: false
26
+ poem: true
27
+ labeling_instructions: []
28
+ path_filters: []
29
+ path_instructions: []
30
+ abort_on_close: true
31
+ disable_cache: false
32
+ auto_review:
33
+ enabled: false
34
+ auto_incremental_review: false
35
+ ignore_title_keywords: []
36
+ labels: []
37
+ drafts: false
38
+ base_branches: []
39
+ finishing_touches:
40
+ docstrings:
41
+ enabled: true
42
+ tools:
43
+ ast-grep:
44
+ rule_dirs: []
45
+ util_dirs: []
46
+ essential_rules: true
47
+ packages: []
48
+ shellcheck:
49
+ enabled: true
50
+ ruff:
51
+ enabled: true
52
+ markdownlint:
53
+ enabled: true
54
+ github-checks:
55
+ enabled: true
56
+ timeout_ms: 180000
57
+ languagetool:
58
+ enabled: true
59
+ enabled_rules: []
60
+ disabled_rules: []
61
+ enabled_categories: []
62
+ disabled_categories: []
63
+ enabled_only: false
64
+ level: default
65
+ biome:
66
+ enabled: true
67
+ hadolint:
68
+ enabled: true
69
+ swiftlint:
70
+ enabled: true
71
+ phpstan:
72
+ enabled: true
73
+ level: default
74
+ golangci-lint:
75
+ enabled: true
76
+ yamllint:
77
+ enabled: true
78
+ gitleaks:
79
+ enabled: true
80
+ checkov:
81
+ enabled: true
82
+ detekt:
83
+ enabled: true
84
+ eslint:
85
+ enabled: true
86
+ rubocop:
87
+ enabled: true
88
+ buf:
89
+ enabled: true
90
+ regal:
91
+ enabled: true
92
+ actionlint:
93
+ enabled: true
94
+ pmd:
95
+ enabled: true
96
+ cppcheck:
97
+ enabled: true
98
+ semgrep:
99
+ enabled: true
100
+ circleci:
101
+ enabled: true
102
+ sqlfluff:
103
+ enabled: true
104
+ prismaLint:
105
+ enabled: true
106
+ oxc:
107
+ enabled: true
108
+ shopifyThemeCheck:
109
+ enabled: true
110
+ chat:
111
+ auto_reply: true
112
+ create_issues: true
113
+ integrations:
114
+ jira:
115
+ usage: auto
116
+ linear:
117
+ usage: auto
118
+ knowledge_base:
119
+ opt_out: false
120
+ web_search:
121
+ enabled: true
122
+ learnings:
123
+ scope: auto
124
+ issues:
125
+ scope: auto
126
+ jira:
127
+ usage: auto
128
+ project_keys: []
129
+ linear:
130
+ usage: auto
131
+ team_keys: []
132
+ pull_requests:
133
+ scope: auto
134
+ code_generation:
135
+ docstrings:
136
+ language: en-US
137
+ path_instructions: []
@@ -11,7 +11,8 @@ about: Let us know if something is broken on Mesa
11
11
  <!-- A clear and concise description of what you expected to happen -->
12
12
 
13
13
  **To Reproduce**
14
- <!-- Steps to reproduce the bug, or a link to a project where the bug is visible -->
14
+ <!-- Steps to reproduce the bug, or a link to a project where the bug is visible
15
+ Include a Minimal reproducible example: https://stackoverflow.com/help/minimal-reproducible-example -->
15
16
 
16
17
  **Additional context**
17
18
  <!--
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Questions, ideas, showcases and more
4
+ url: https://github.com/mesa/mesa/discussions
5
+ about: Discuss Mesa, ask questions, share ideas, and showcase your projects
@@ -0,0 +1,16 @@
1
+ ### Summary
2
+ <!-- Provide a brief summary of the bug and its impact. -->
3
+
4
+ ### Bug / Issue
5
+ <!-- Link to the related issue(s) and describe the bug. Include details like the context, what was expected, and what actually happened. -->
6
+
7
+ ### Implementation
8
+ <!-- Describe the changes made to resolve the issue. Highlight any important parts of the code that were modified. -->
9
+
10
+ ### Testing
11
+ <!-- Detail the testing performed to verify the fix. Include information on test cases, steps taken, and any relevant results.
12
+
13
+ If you're fixing the visualisation, add before/after screenshots. -->
14
+
15
+ ### Additional Notes
16
+ <!-- Add any additional information that may be relevant for the reviewers, such as potential side effects, dependencies, or related work.
@@ -0,0 +1,16 @@
1
+ ### Summary
2
+ <!-- Provide a concise summary of the feature and its purpose. -->
3
+
4
+ ### Motive
5
+ <!-- Explain the reasoning behind this feature. Include details on the problem it addresses or the enhancement it provides. -->
6
+
7
+ ### Implementation
8
+ <!-- Describe how the feature was implemented. Include details on the approach taken, important decisions made, and code changes. -->
9
+
10
+ ### Usage Examples
11
+ <!-- Provide code snippets or examples demonstrating how to use the new feature. Highlight key scenarios where this feature will be beneficial.
12
+
13
+ If you're modifying the visualisation, add before/after screenshots. -->
14
+
15
+ ### Additional Notes
16
+ <!-- Add any additional information that may be relevant for the reviewers, such as potential side effects, dependencies, or related work. -->
@@ -0,0 +1,4 @@
1
+ Thanks for opening a PR! Please click the `Preview` tab and select a PR template:
2
+
3
+ - [🐛 Bug fix](?expand=1&template=bug.md)
4
+ - [🛠 Feature/enhancement](?expand=1&template=feature.md)
@@ -7,6 +7,9 @@ changelog:
7
7
  - title: ⚠️ Breaking changes
8
8
  labels:
9
9
  - breaking
10
+ - title: ⏳ Deprecations
11
+ labels:
12
+ - deprecation
10
13
  - title: 🧪 Experimental features
11
14
  labels:
12
15
  - experimental
@@ -19,6 +22,9 @@ changelog:
19
22
  - title: 🐛 Bugs fixed
20
23
  labels:
21
24
  - bug
25
+ - title: 🔍 Examples updated
26
+ labels:
27
+ - example
22
28
  - title: 📜 Documentation improvements
23
29
  labels:
24
30
  - docs
@@ -23,19 +23,21 @@ jobs:
23
23
  steps:
24
24
  # Python and dependency setup
25
25
  - name: Set up Python
26
- uses: actions/setup-python@v5
26
+ uses: actions/setup-python@v6
27
27
  with:
28
- python-version: '3.12'
28
+ python-version: '3.14'
29
29
  - name: Add project directory to PYTHONPATH
30
30
  run: echo "PYTHONPATH=$PYTHONPATH:$(pwd)" >> $GITHUB_ENV
31
+ - name: Install uv
32
+ run: pip install uv
31
33
  - name: Install dependencies
32
- run: pip install numpy pandas tqdm tabulate matplotlib solara networkx
33
- # Benchmarks on the projectmesa main branch
34
+ run: uv pip install --system numpy pandas tqdm tabulate matplotlib solara networkx scipy
35
+ # Benchmarks on the mesa main branch
34
36
  - name: Checkout main branch
35
- uses: actions/checkout@v4
37
+ uses: actions/checkout@v6
36
38
  with:
37
39
  ref: main
38
- repository: projectmesa/mesa
40
+ repository: mesa/mesa
39
41
  - name: Install Mesa
40
42
  run: pip install --no-deps .
41
43
  - name: Run benchmarks on main branch
@@ -43,12 +45,12 @@ jobs:
43
45
  run: python global_benchmark.py
44
46
  # Upload benchmarks, checkout PR branch, download benchmarks
45
47
  - name: Upload benchmark results
46
- uses: actions/upload-artifact@v4
48
+ uses: actions/upload-artifact@v6
47
49
  with:
48
50
  name: timings-main
49
51
  path: benchmarks/timings_1.pickle
50
52
  - name: Checkout PR branch
51
- uses: actions/checkout@v4
53
+ uses: actions/checkout@v6
52
54
  if: github.event_name == 'pull_request_target'
53
55
  with:
54
56
  ref: ${{ github.event.pull_request.head.ref }}
@@ -59,7 +61,7 @@ jobs:
59
61
  - name: Install Mesa of the PR branch
60
62
  run: pip install --no-deps .
61
63
  - name: Download benchmark results
62
- uses: actions/download-artifact@v4
64
+ uses: actions/download-artifact@v7
63
65
  with:
64
66
  name: timings-main
65
67
  path: benchmarks
@@ -74,7 +76,7 @@ jobs:
74
76
  TIMING_COMPARISON=$(python compare_timings.py | base64 -w 0) # Base64 encode the output
75
77
  echo "TIMING_COMPARISON=$TIMING_COMPARISON" >> $GITHUB_ENV
76
78
  - name: Comment PR
77
- uses: actions/github-script@v7
79
+ uses: actions/github-script@v8
78
80
  with:
79
81
  script: |
80
82
  const output = Buffer.from(process.env.TIMING_COMPARISON, 'base64').toString('utf-8');
@@ -0,0 +1,106 @@
1
+ name: build
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ - release**
8
+ paths-ignore:
9
+ - "**.md"
10
+ pull_request:
11
+ paths-ignore:
12
+ - "**.md"
13
+ workflow_dispatch:
14
+ schedule:
15
+ - cron: "0 6 * * 1"
16
+
17
+ # This will cancel previous run if a newer job that obsoletes the said previous
18
+ # run, is started.
19
+ # Based on https://github.com/zulip/zulip/commit/4a11642cee3c8aec976d305d51a86e60e5d70522
20
+ concurrency:
21
+ group: "${{ github.workflow }}-${{ github.head_ref || github.run_id }}"
22
+ cancel-in-progress: true
23
+
24
+ jobs:
25
+ build:
26
+ runs-on: ${{ matrix.os }}-latest
27
+ # We need an explicit timeout because sometimes the batch_runner test never
28
+ # completes.
29
+ timeout-minutes: 6
30
+ strategy:
31
+ fail-fast: False
32
+ matrix:
33
+ os: [windows, ubuntu, macos]
34
+ python-version: ["3.14"]
35
+ pip-pre: [""]
36
+ include:
37
+ - os: ubuntu
38
+ python-version: "3.13"
39
+ - os: ubuntu
40
+ python-version: "3.12"
41
+ - os: ubuntu
42
+ python-version: "3.14"
43
+ pip-pre: "--pre"
44
+ # Disabled for now. See https://github.com/mesa/mesa/issues/1253
45
+ #- os: ubuntu
46
+ # python-version: 'pypy-3.8'
47
+
48
+ steps:
49
+ - uses: actions/checkout@v6
50
+ - name: Set up Python ${{ matrix.python-version }}
51
+ uses: actions/setup-python@v6
52
+ with:
53
+ python-version: ${{ matrix.python-version }}
54
+ allow-prereleases: true
55
+ cache: "pip"
56
+ - name: Install uv
57
+ run: pip install uv
58
+ - name: Install Mesa and dependencies
59
+ run: uv pip install --system .[dev] ${{ matrix.pip-pre }}
60
+ - name: Setup Playwright
61
+ run: playwright install chromium-headless-shell
62
+ - name: Test with pytest
63
+ run: pytest --durations=10 tests/ -Werror -Wdefault::PendingDeprecationWarning
64
+
65
+ coverage:
66
+ runs-on: ubuntu-latest
67
+ timeout-minutes: 6
68
+ steps:
69
+ - uses: actions/checkout@v6
70
+ - uses: actions/setup-python@v6
71
+ with:
72
+ python-version: "3.14"
73
+ - run: pip install uv
74
+ - run: uv pip install --system .[dev]
75
+ - run: playwright install chromium-headless-shell
76
+ - run: |
77
+ coverage run -m pytest tests/
78
+ coverage xml
79
+ - uses: codecov/codecov-action@v5
80
+ with:
81
+ fail_ci_if_error: true
82
+ token: ${{ secrets.CODECOV_TOKEN }}
83
+
84
+ examples:
85
+ runs-on: ubuntu-latest
86
+ steps:
87
+ - uses: actions/checkout@v6
88
+ - name: Set up Python
89
+ uses: actions/setup-python@v6
90
+ with:
91
+ python-version: "3.13"
92
+ allow-prereleases: true
93
+ cache: "pip"
94
+ - name: Install uv
95
+ run: pip install uv
96
+ - name: Install Mesa
97
+ run: uv pip install --system .[examples]
98
+ - name: Checkout mesa-examples
99
+ uses: actions/checkout@v6
100
+ with:
101
+ repository: mesa/mesa-examples
102
+ path: mesa-examples
103
+ - name: Test examples
104
+ run: |
105
+ cd mesa-examples
106
+ pytest -rA -Werror -Wdefault::PendingDeprecationWarning test_examples.py
@@ -14,6 +14,8 @@ on:
14
14
  - '**.md'
15
15
  - '**.rst'
16
16
  workflow_dispatch:
17
+ schedule:
18
+ - cron: '0 6 * * 1'
17
19
 
18
20
  permissions:
19
21
  id-token: write
@@ -26,19 +28,20 @@ jobs:
26
28
  id-token: write
27
29
  steps:
28
30
  - name: Checkout source
29
- uses: actions/checkout@v4
31
+ uses: actions/checkout@v6
30
32
  - name: Set up Python
31
- uses: actions/setup-python@v5
33
+ uses: actions/setup-python@v6
32
34
  with:
33
- python-version: "3.12"
35
+ python-version: "3.14"
36
+ allow-prereleases: true
34
37
  cache: 'pip'
35
38
  - name: Install dependencies
36
39
  run: pip install -U pip hatch
37
40
  - name: Build distributions
38
41
  run: hatch build
39
42
  - name: Upload package as artifact to GitHub
40
- if: github.repository == 'projectmesa/mesa' && startsWith(github.ref, 'refs/tags')
41
- uses: actions/upload-artifact@v4
43
+ if: github.repository == 'mesa/mesa' && startsWith(github.ref, 'refs/tags')
44
+ uses: actions/upload-artifact@v6
42
45
  with:
43
46
  name: package
44
47
  path: dist/
@@ -1,6 +1,10 @@
1
1
  # Benchmarking
2
2
  benchmarks/**/*.pickle
3
3
 
4
+ # exampledocs
5
+ docs/examples/*
6
+ docs/example.md
7
+
4
8
  # Byte-compiled / optimized / DLL files
5
9
  __pycache__/
6
10
  *.py[cod]
@@ -15,6 +19,8 @@ __pycache__/
15
19
  .Python
16
20
  env/
17
21
  venv/
22
+ pythonenv*/
23
+ .venv/
18
24
  build/
19
25
  develop-eggs/
20
26
  dist/
@@ -63,6 +69,7 @@ target/
63
69
 
64
70
  # Jupyter and iPython notebook checkpoints
65
71
  *.ipynb_checkpoints
72
+ *.virtual_documents
66
73
 
67
74
  # Spyder app workspace config file
68
75
  .spyderworkspace
@@ -83,10 +90,6 @@ target/
83
90
  .dmypy.json
84
91
  dmypy.json
85
92
 
86
- # pythonenv
87
- pythonenv*/
88
-
89
93
  # JS dependencies
90
94
  mesa/visualization/templates/external/
91
95
  mesa/visualization/templates/js/external/
92
-
@@ -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.3.5
7
+ rev: v0.14.7
8
8
  hooks:
9
9
  # Run the linter.
10
10
  - id: ruff
@@ -14,21 +14,17 @@ repos:
14
14
  - id: ruff-format
15
15
  types_or: [ python, pyi, jupyter ]
16
16
  - repo: https://github.com/asottile/pyupgrade
17
- rev: v3.15.2
17
+ rev: v3.21.2
18
18
  hooks:
19
19
  - id: pyupgrade
20
- args: [--py38-plus]
20
+ args: [--py312-plus]
21
21
  - repo: https://github.com/pre-commit/pre-commit-hooks
22
- rev: v4.5.0 # Use the ref you want to point at
22
+ rev: v6.0.0 # Use the ref you want to point at
23
23
  hooks:
24
24
  - id: trailing-whitespace
25
25
  - id: check-toml
26
26
  - id: check-yaml
27
27
  - repo: https://github.com/codespell-project/codespell
28
- rev: v2.2.6
28
+ rev: v2.4.1
29
29
  hooks:
30
30
  - id: codespell
31
- args: [
32
- "--ignore-words",
33
- ".codespellignore",
34
- ]
@@ -1,5 +1,5 @@
1
1
  # Read the Docs configuration file
2
- # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
2
+ # See https://docs.readthedocs.io/stable/config-file/v2.html for details
3
3
 
4
4
  # Required
5
5
  version: 2
@@ -13,9 +13,9 @@ formats:
13
13
  - pdf
14
14
 
15
15
  build:
16
- os: "ubuntu-22.04"
16
+ os: ubuntu-lts-latest
17
17
  tools:
18
- python: "3"
18
+ python: latest
19
19
 
20
20
  # Optionally set the version of Python and requirements required to build your docs
21
21
  python:
@@ -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"
@@ -5,7 +5,7 @@
5
5
  We as members, contributors, and leaders pledge to make participation in our
6
6
  community a harassment-free experience for everyone, regardless of age, body
7
7
  size, visible or invisible disability, ethnicity, sex characteristics, gender
8
- identity and expression, level of experience, education, socio-economic status,
8
+ identity and expression, level of experience, education, socioeconomic status,
9
9
  nationality, personal appearance, race, caste, color, religion, or sexual
10
10
  identity and orientation.
11
11
 
@@ -36,6 +36,16 @@ Examples of unacceptable behavior include:
36
36
  * Other conduct which could reasonably be considered inappropriate in a
37
37
  professional setting
38
38
 
39
+ ### AI and LLM Use
40
+
41
+ AI tools can be valuable for learning, exploring ideas, and accelerating work. We welcome their thoughtful use. To ensure contributions remain meaningful and contributors continue to grow, we ask that you:
42
+
43
+ * Understand what you submit. Be able to explain and defend any contribution you make. If you cannot, it is not ready to submit.
44
+ * Stay in the driver's seat. Use AI to support your learning and work, not to replace the effort and critical thinking that make you a better developer.
45
+ * Engage meaningfully. Low-effort, AI-generated submissions (issues, PRs, or proposals) without genuine personal engagement are not acceptable.
46
+
47
+ Maintainers may ask contributors to explain their work. This is part of our commitment to learning and quality—not a test of whether you used AI, but whether you understood and own what you contributed.
48
+
39
49
  ## Enforcement Responsibilities
40
50
 
41
51
  Community leaders are responsible for clarifying and enforcing our standards of