Mesa 3.2.0__tar.gz → 3.3.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.
- mesa-3.3.0/.coderabbit.yaml +137 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/workflows/benchmarks.yml +3 -3
- mesa-3.3.0/.github/workflows/build_lint.yml +89 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/workflows/release.yml +1 -1
- {mesa-3.2.0 → mesa-3.3.0}/.pre-commit-config.yaml +2 -2
- {mesa-3.2.0 → mesa-3.3.0}/CONTRIBUTING.md +1 -1
- {mesa-3.2.0 → mesa-3.3.0}/HISTORY.md +64 -0
- {mesa-3.2.0 → mesa-3.3.0}/PKG-INFO +13 -4
- {mesa-3.2.0 → mesa-3.3.0}/README.md +3 -3
- mesa-3.3.0/benchmarks/README.md +99 -0
- mesa-3.3.0/docs/apis/visualization.md +130 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/getting_started.md +10 -6
- {mesa-3.2.0 → mesa-3.3.0}/docs/index.md +13 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/overview.md +8 -9
- {mesa-3.2.0 → mesa-3.3.0}/docs/tutorials/0_first_model.ipynb +2 -2
- {mesa-3.2.0 → mesa-3.3.0}/docs/tutorials/4_visualization_basic.ipynb +74 -12
- {mesa-3.2.0 → mesa-3.3.0}/docs/tutorials/5_visualization_dynamic_agents.ipynb +62 -15
- mesa-3.3.0/docs/tutorials/6_visualization_rendering_with_space_renderer.ipynb +572 -0
- mesa-3.3.0/docs/tutorials/7_visualization_propertylayer_visualization.ipynb +535 -0
- mesa-3.2.0/docs/tutorials/6_visualization_custom.ipynb → mesa-3.3.0/docs/tutorials/8_visualization_custom.ipynb +40 -3
- mesa-3.2.0/docs/tutorials/7_batch_run.ipynb → mesa-3.3.0/docs/tutorials/9_batch_run.ipynb +1 -1
- mesa-3.3.0/flake.lock +133 -0
- mesa-3.3.0/flake.nix +236 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/__init__.py +1 -1
- {mesa-3.2.0 → mesa-3.3.0}/mesa/agent.py +3 -3
- {mesa-3.2.0 → mesa-3.3.0}/mesa/datacollection.py +1 -1
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/epstein_civil_violence/app.py +11 -11
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/pd_grid/app.py +10 -11
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/sugarscape_g1mt/app.py +34 -16
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/wolf_sheep/app.py +21 -18
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boid_flockers/app.py +15 -11
- mesa-3.3.0/mesa/examples/basic/boltzmann_wealth_model/app.py +84 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/conways_game_of_life/app.py +13 -16
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/schelling/Readme.md +2 -2
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/schelling/agents.py +9 -3
- mesa-3.3.0/mesa/examples/basic/schelling/app.py +94 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/schelling/model.py +2 -0
- mesa-3.3.0/mesa/examples/basic/schelling/resources/blue_happy.png +0 -0
- mesa-3.3.0/mesa/examples/basic/schelling/resources/blue_unhappy.png +0 -0
- mesa-3.3.0/mesa/examples/basic/schelling/resources/orange_happy.png +0 -0
- mesa-3.3.0/mesa/examples/basic/schelling/resources/orange_unhappy.png +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/virus_on_network/app.py +31 -14
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/continuous_space/continuous_space.py +1 -1
- {mesa-3.2.0 → mesa-3.3.0}/mesa/space.py +4 -1
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/__init__.py +2 -0
- mesa-3.3.0/mesa/visualization/backends/__init__.py +23 -0
- mesa-3.3.0/mesa/visualization/backends/abstract_renderer.py +97 -0
- mesa-3.3.0/mesa/visualization/backends/altair_backend.py +440 -0
- mesa-3.3.0/mesa/visualization/backends/matplotlib_backend.py +419 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/components/__init__.py +28 -8
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/components/altair_components.py +86 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/components/matplotlib_components.py +4 -2
- mesa-3.3.0/mesa/visualization/components/portrayal_components.py +120 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/mpl_space_drawing.py +292 -129
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/solara_viz.py +274 -32
- mesa-3.3.0/mesa/visualization/space_drawers.py +797 -0
- mesa-3.3.0/mesa/visualization/space_renderer.py +399 -0
- {mesa-3.2.0 → mesa-3.3.0}/pyproject.toml +8 -2
- mesa-3.3.0/tests/test_backends.py +332 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_components_matplotlib.py +1 -3
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_discrete_space.py +3 -15
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_examples.py +11 -11
- mesa-3.3.0/tests/test_examples_viz.py +347 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_import_namespace.py +4 -4
- mesa-3.3.0/tests/test_portrayal_components.py +139 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_solara_viz.py +32 -1
- mesa-3.3.0/tests/test_solara_viz_updated.py +320 -0
- mesa-3.3.0/tests/test_space_drawer.py +312 -0
- mesa-3.3.0/tests/test_space_renderer.py +175 -0
- mesa-3.3.0/uv.lock +2514 -0
- mesa-3.2.0/.github/workflows/build_lint.yml +0 -87
- mesa-3.2.0/docs/apis/visualization.md +0 -64
- mesa-3.2.0/mesa/examples/advanced/sugarscape_g1mt/tests.py +0 -69
- mesa-3.2.0/mesa/examples/basic/boltzmann_wealth_model/app.py +0 -77
- mesa-3.2.0/mesa/examples/basic/schelling/app.py +0 -47
- {mesa-3.2.0 → mesa-3.3.0}/.codespellignore +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.coveragerc +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/PULL_REQUEST_TEMPLATE/bug.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/dependabot.yml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/pull_request_template.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.github/release.yml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.gitignore +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/.readthedocs.yml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/CITATION.cff +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/CODE_OF_CONDUCT.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/Dockerfile +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/LICENSE +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/NOTICE +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/benchmarks/compare_timings.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/benchmarks/configurations.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/benchmarks/global_benchmark.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/binder/environment.yml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/codecov.yaml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docker-compose.yml +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/Makefile +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/README.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/agent.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/api_main.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/batchrunner.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/datacollection.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/discrete_space.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/experimental.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/mesa_logging.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/model.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/apis/space.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/best-practices.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/conf.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/example_template.txt +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/examples_overview_template.txt +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/images/Discrete_Space.drawio.png +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/images/mesa_logo.ico +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/images/mesa_logo.png +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/images/wolf_sheep.png +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/make.bat +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/mesa.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/mesa_extension.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/migration_guide.md +0 -0
- /mesa-3.2.0/docs/tutorials/8_comparing_scenarios.ipynb → /mesa-3.3.0/docs/tutorials/10_comparing_scenarios.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/tutorials/1_adding_space.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/tutorials/2_collecting_data.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/docs/tutorials/3_agentset.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/maintenance/fetch_unlabeled_prs.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/batchrunner.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/cell.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/cell_agent.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/cell_collection.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/discrete_space.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/grid.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/network.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/property_layer.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/discrete_space/voronoi.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/README.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/alliance_formation/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/alliance_formation/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/alliance_formation/app.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/alliance_formation/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/epstein_civil_violence/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/epstein_civil_violence/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/epstein_civil_violence/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/epstein_civil_violence/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/pd_grid/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/pd_grid/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/pd_grid/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/pd_grid/analysis.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/pd_grid/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/sugarscape_g1mt/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/sugarscape_g1mt/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/sugarscape_g1mt/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/sugarscape_g1mt/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/wolf_sheep/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/wolf_sheep/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/wolf_sheep/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/advanced/wolf_sheep/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boid_flockers/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boid_flockers/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boid_flockers/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boid_flockers/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boltzmann_wealth_model/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boltzmann_wealth_model/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boltzmann_wealth_model/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boltzmann_wealth_model/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/boltzmann_wealth_model/st_app.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/conways_game_of_life/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/conways_game_of_life/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/conways_game_of_life/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/conways_game_of_life/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/conways_game_of_life/st_app.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/schelling/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/schelling/analysis.ipynb +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/virus_on_network/Readme.md +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/virus_on_network/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/virus_on_network/agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/examples/basic/virus_on_network/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/cell_space/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/continuous_space/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/continuous_space/continuous_space_agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/devs/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/devs/eventlist.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/devs/simulator.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/mesa_signals/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/mesa_signals/mesa_signal.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/mesa_signals/observable_collections.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/mesa_signals/signals_util.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/meta_agents/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/experimental/meta_agents/meta_agent.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/mesa_logging.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/command_console.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/user_param.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mesa/visualization/utils.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/mypy.ini +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/__init__.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/read_requirements.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_agent.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_batch_run.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_continuous_space.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_datacollector.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_devs.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_end_to_end_viz.sh +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_grid.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_lifespan.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_mesa_logging.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_mesa_signals.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_meta_agents.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_model.py +0 -0
- {mesa-3.2.0 → mesa-3.3.0}/tests/test_space.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: []
|
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
run: uv pip install --system numpy pandas tqdm tabulate matplotlib solara networkx scipy
|
|
35
35
|
# Benchmarks on the projectmesa main branch
|
|
36
36
|
- name: Checkout main branch
|
|
37
|
-
uses: actions/checkout@
|
|
37
|
+
uses: actions/checkout@v5
|
|
38
38
|
with:
|
|
39
39
|
ref: main
|
|
40
40
|
repository: projectmesa/mesa
|
|
@@ -50,7 +50,7 @@ jobs:
|
|
|
50
50
|
name: timings-main
|
|
51
51
|
path: benchmarks/timings_1.pickle
|
|
52
52
|
- name: Checkout PR branch
|
|
53
|
-
uses: actions/checkout@
|
|
53
|
+
uses: actions/checkout@v5
|
|
54
54
|
if: github.event_name == 'pull_request_target'
|
|
55
55
|
with:
|
|
56
56
|
ref: ${{ github.event.pull_request.head.ref }}
|
|
@@ -61,7 +61,7 @@ jobs:
|
|
|
61
61
|
- name: Install Mesa of the PR branch
|
|
62
62
|
run: pip install --no-deps .
|
|
63
63
|
- name: Download benchmark results
|
|
64
|
-
uses: actions/download-artifact@
|
|
64
|
+
uses: actions/download-artifact@v5
|
|
65
65
|
with:
|
|
66
66
|
name: timings-main
|
|
67
67
|
path: benchmarks
|
|
@@ -0,0 +1,89 @@
|
|
|
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.13"]
|
|
35
|
+
include:
|
|
36
|
+
- os: ubuntu
|
|
37
|
+
python-version: "3.12"
|
|
38
|
+
- os: ubuntu
|
|
39
|
+
python-version: "3.11"
|
|
40
|
+
# Disabled for now. See https://github.com/projectmesa/mesa/issues/1253
|
|
41
|
+
#- os: ubuntu
|
|
42
|
+
# python-version: 'pypy-3.8'
|
|
43
|
+
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v5
|
|
46
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
47
|
+
uses: actions/setup-python@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: ${{ matrix.python-version }}
|
|
50
|
+
allow-prereleases: true
|
|
51
|
+
cache: "pip"
|
|
52
|
+
- name: Install uv
|
|
53
|
+
run: pip install uv
|
|
54
|
+
- name: Install Mesa and dependencies
|
|
55
|
+
run: uv pip install --system .[dev]
|
|
56
|
+
- name: Setup Playwright
|
|
57
|
+
run: playwright install
|
|
58
|
+
- name: Test with pytest
|
|
59
|
+
run: pytest --durations=10 --cov=mesa tests/ --cov-report=xml
|
|
60
|
+
- if: matrix.os == 'ubuntu'
|
|
61
|
+
name: Codecov
|
|
62
|
+
uses: codecov/codecov-action@v5
|
|
63
|
+
with:
|
|
64
|
+
fail_ci_if_error: true
|
|
65
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
66
|
+
|
|
67
|
+
examples:
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@v5
|
|
71
|
+
- name: Set up Python
|
|
72
|
+
uses: actions/setup-python@v5
|
|
73
|
+
with:
|
|
74
|
+
python-version: "3.13"
|
|
75
|
+
allow-prereleases: true
|
|
76
|
+
cache: "pip"
|
|
77
|
+
- name: Install uv
|
|
78
|
+
run: pip install uv
|
|
79
|
+
- name: Install Mesa
|
|
80
|
+
run: uv pip install --system .[examples]
|
|
81
|
+
- name: Checkout mesa-examples
|
|
82
|
+
uses: actions/checkout@v5
|
|
83
|
+
with:
|
|
84
|
+
repository: projectmesa/mesa-examples
|
|
85
|
+
path: mesa-examples
|
|
86
|
+
- name: Test examples
|
|
87
|
+
run: |
|
|
88
|
+
cd mesa-examples
|
|
89
|
+
pytest -rA -Werror -Wdefault::FutureWarning -Wi::DeprecationWarning test_examples.py
|
|
@@ -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.
|
|
7
|
+
rev: v0.12.7
|
|
8
8
|
hooks:
|
|
9
9
|
# Run the linter.
|
|
10
10
|
- id: ruff
|
|
@@ -14,7 +14,7 @@ repos:
|
|
|
14
14
|
- id: ruff-format
|
|
15
15
|
types_or: [ python, pyi, jupyter ]
|
|
16
16
|
- repo: https://github.com/asottile/pyupgrade
|
|
17
|
-
rev: v3.
|
|
17
|
+
rev: v3.20.0
|
|
18
18
|
hooks:
|
|
19
19
|
- id: pyupgrade
|
|
20
20
|
args: [--py311-plus]
|
|
@@ -112,7 +112,7 @@ pre-commit install
|
|
|
112
112
|
You should no longer have to worry about code formatting. If still in doubt you may run the following command. If the command generates errors, fix all errors that are returned.
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
|
-
ruff .
|
|
115
|
+
ruff check . --fix
|
|
116
116
|
```
|
|
117
117
|
|
|
118
118
|
## Licensing
|
|
@@ -1,6 +1,70 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Release History
|
|
3
3
|
---
|
|
4
|
+
# 3.3.0 (2025-09-06)
|
|
5
|
+
## Highlights
|
|
6
|
+
|
|
7
|
+
The major highlight of release 3.3.0 is the introduction of a new and improved visualization module. This effort was @Sahil-Chhoker's Google Summer of Code project . The new module is backwards compatible and continues to use Solara. It has several new and improved features to include:
|
|
8
|
+
- `AgentPortrayalStyle`: a more user-friendly way to specify agent portrayal
|
|
9
|
+
- `PropertyLayerStyle`: Makes propertlayer and agent portrayal consistent.
|
|
10
|
+
- `SpaceRender`: a new component for drawing spaces, agents and property layers with extensive customization
|
|
11
|
+
- Improved support for Altair and Maplotlib
|
|
12
|
+
- Multipage support (e.g., users can display simulation on one page and charts of the model on another)
|
|
13
|
+
- Updated tutorials for visualization
|
|
14
|
+
|
|
15
|
+
[You can read more about the update here](https://gist.github.com/Sahil-Chhoker/470d78683664dffc05725bd858beb494)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
In addition, there were many other improvements to mesa, from bug fixes to improved CI/CD pipelines. Thanks to the PyCON sprints and the developers who supported Mesa!
|
|
19
|
+
|
|
20
|
+
## What's Changed
|
|
21
|
+
### 🧪 Experimental features
|
|
22
|
+
* Introduction of Space Renderer by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2803
|
|
23
|
+
### 🎉 New features added
|
|
24
|
+
* docs/nix flake by @hussainsultan in https://github.com/projectmesa/mesa/pull/2788
|
|
25
|
+
### 🛠 Enhancements made
|
|
26
|
+
* Added `AgentPortrayalStyle` and `PropertyLayerStyle` by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2786
|
|
27
|
+
* Allow image markers to plot agents by @Holzhauer in https://github.com/projectmesa/mesa/pull/2799
|
|
28
|
+
* Renderer null check fix in solaraviz by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2809
|
|
29
|
+
* Add Altair plotting functionality by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2810
|
|
30
|
+
* Fix: Grid not showing in altair if both draw_structure and draw_agnets are called. by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2817
|
|
31
|
+
* Allowing color mapping to integers in AgentPortrayalStyle by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2818
|
|
32
|
+
* Added multipage functionality by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2827
|
|
33
|
+
### 🐛 Bugs fixed
|
|
34
|
+
* Bugfix ModelCreator for required model parameters and user adjusted model parameters by @Holzhauer in https://github.com/projectmesa/mesa/pull/2780
|
|
35
|
+
* Remove unneeded int cast by @derkweijers in https://github.com/projectmesa/mesa/pull/2791
|
|
36
|
+
* Add quotes to readme to insure multi-terminal compliance. by @jackiekazil in https://github.com/projectmesa/mesa/pull/2787
|
|
37
|
+
* Fix broken docs link - Fix issue 2792 by @catherinedevlin in https://github.com/projectmesa/mesa/pull/2793
|
|
38
|
+
* Bug fixes for portrayal components by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2798
|
|
39
|
+
* fix : prevent breakdown when citizen_density (Initial Agent Density s… by @colinfrisch in https://github.com/projectmesa/mesa/pull/2806
|
|
40
|
+
* Fix issue #2812 by @Tosiekdev in https://github.com/projectmesa/mesa/pull/2821
|
|
41
|
+
### 📜 Documentation improvements
|
|
42
|
+
* Benchmarks documentation by @colinfrisch in https://github.com/projectmesa/mesa/pull/2764
|
|
43
|
+
* minor corrections in tutorials by @Holzhauer in https://github.com/projectmesa/mesa/pull/2778
|
|
44
|
+
* Correct example code in "Overview of the MESA library" by @Holzhauer in https://github.com/projectmesa/mesa/pull/2781
|
|
45
|
+
* Updating Examples and Docs inline with the new API. by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2819
|
|
46
|
+
### 🔧 Maintenance
|
|
47
|
+
* Add `.coderabbit.yaml` file to allow reviewing and updating our CodeRabbit configuration by @EwoutH in https://github.com/projectmesa/mesa/pull/2761
|
|
48
|
+
* add nix flake by @hussainsultan in https://github.com/projectmesa/mesa/pull/2785
|
|
49
|
+
* Removing Deprecations Warnings from `agent_portrayal` and `propertylayer_portrayal` until next release. by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2797
|
|
50
|
+
* Added Basic Visualization tests by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2767
|
|
51
|
+
### Other changes
|
|
52
|
+
* Update __init__.py by @tpike3 in https://github.com/projectmesa/mesa/pull/2770
|
|
53
|
+
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/projectmesa/mesa/pull/2751
|
|
54
|
+
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/projectmesa/mesa/pull/2802
|
|
55
|
+
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/projectmesa/mesa/pull/2808
|
|
56
|
+
* Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in https://github.com/projectmesa/mesa/pull/2826
|
|
57
|
+
* Bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/projectmesa/mesa/pull/2825
|
|
58
|
+
* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/projectmesa/mesa/pull/2823
|
|
59
|
+
|
|
60
|
+
## New Contributors
|
|
61
|
+
* @derkweijers made their first contribution in https://github.com/projectmesa/mesa/pull/2791
|
|
62
|
+
* @hussainsultan made their first contribution in https://github.com/projectmesa/mesa/pull/2785
|
|
63
|
+
* @catherinedevlin made their first contribution in https://github.com/projectmesa/mesa/pull/2793
|
|
64
|
+
* @Tosiekdev made their first contribution in https://github.com/projectmesa/mesa/pull/2821
|
|
65
|
+
|
|
66
|
+
**Full Changelog**: https://github.com/projectmesa/mesa/compare/v3.2.0...v3.3.0
|
|
67
|
+
|
|
4
68
|
# 3.2.0 (2025-05-04)
|
|
5
69
|
## Highlights
|
|
6
70
|
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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Mesa
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.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
|
|
@@ -24,19 +24,24 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Life
|
|
|
24
24
|
Requires-Python: >=3.11
|
|
25
25
|
Requires-Dist: numpy
|
|
26
26
|
Requires-Dist: pandas
|
|
27
|
+
Requires-Dist: pythran>=0.17.0; sys_platform == 'darwin'
|
|
27
28
|
Requires-Dist: scipy
|
|
28
29
|
Requires-Dist: tqdm
|
|
29
30
|
Provides-Extra: all
|
|
30
31
|
Requires-Dist: altair; extra == 'all'
|
|
31
32
|
Requires-Dist: ipython; extra == 'all'
|
|
33
|
+
Requires-Dist: ipython>=9.2.0; extra == 'all'
|
|
32
34
|
Requires-Dist: matplotlib; extra == 'all'
|
|
33
35
|
Requires-Dist: myst-nb; extra == 'all'
|
|
34
36
|
Requires-Dist: myst-parser; extra == 'all'
|
|
35
37
|
Requires-Dist: networkx; extra == 'all'
|
|
38
|
+
Requires-Dist: playwright; extra == 'all'
|
|
36
39
|
Requires-Dist: pydata-sphinx-theme; extra == 'all'
|
|
37
40
|
Requires-Dist: pytest; extra == 'all'
|
|
38
41
|
Requires-Dist: pytest-cov; extra == 'all'
|
|
42
|
+
Requires-Dist: pytest-ipywidgets; extra == 'all'
|
|
39
43
|
Requires-Dist: pytest-mock; extra == 'all'
|
|
44
|
+
Requires-Dist: pytest-playwright; extra == 'all'
|
|
40
45
|
Requires-Dist: ruff; extra == 'all'
|
|
41
46
|
Requires-Dist: scipy; extra == 'all'
|
|
42
47
|
Requires-Dist: seaborn; extra == 'all'
|
|
@@ -45,11 +50,15 @@ Requires-Dist: sphinx; extra == 'all'
|
|
|
45
50
|
Requires-Dist: sphinx-copybutton; extra == 'all'
|
|
46
51
|
Provides-Extra: dev
|
|
47
52
|
Requires-Dist: altair; extra == 'dev'
|
|
53
|
+
Requires-Dist: ipython>=9.2.0; extra == 'dev'
|
|
48
54
|
Requires-Dist: matplotlib; extra == 'dev'
|
|
49
55
|
Requires-Dist: networkx; extra == 'dev'
|
|
56
|
+
Requires-Dist: playwright; extra == 'dev'
|
|
50
57
|
Requires-Dist: pytest; extra == 'dev'
|
|
51
58
|
Requires-Dist: pytest-cov; extra == 'dev'
|
|
59
|
+
Requires-Dist: pytest-ipywidgets; extra == 'dev'
|
|
52
60
|
Requires-Dist: pytest-mock; extra == 'dev'
|
|
61
|
+
Requires-Dist: pytest-playwright; extra == 'dev'
|
|
53
62
|
Requires-Dist: ruff; extra == 'dev'
|
|
54
63
|
Requires-Dist: solara; extra == 'dev'
|
|
55
64
|
Requires-Dist: sphinx; extra == 'dev'
|
|
@@ -125,13 +134,13 @@ pip install -U mesa
|
|
|
125
134
|
Starting with Mesa 3.0, we don't install all our dependencies anymore by default.
|
|
126
135
|
```bash
|
|
127
136
|
# You can customize the additional dependencies you need, if you want. Available are:
|
|
128
|
-
pip install -U mesa[network,viz]
|
|
137
|
+
pip install -U "mesa[network,viz]"
|
|
129
138
|
|
|
130
139
|
# This is equivalent to our recommended dependencies:
|
|
131
|
-
pip install -U mesa[rec]
|
|
140
|
+
pip install -U "mesa[rec]"
|
|
132
141
|
|
|
133
142
|
# To install all, including developer, dependencies:
|
|
134
|
-
pip install -U mesa[all]
|
|
143
|
+
pip install -U "mesa[all]"
|
|
135
144
|
```
|
|
136
145
|
|
|
137
146
|
You can also use `pip` to install the latest GitHub version:
|
|
@@ -38,13 +38,13 @@ pip install -U mesa
|
|
|
38
38
|
Starting with Mesa 3.0, we don't install all our dependencies anymore by default.
|
|
39
39
|
```bash
|
|
40
40
|
# You can customize the additional dependencies you need, if you want. Available are:
|
|
41
|
-
pip install -U mesa[network,viz]
|
|
41
|
+
pip install -U "mesa[network,viz]"
|
|
42
42
|
|
|
43
43
|
# This is equivalent to our recommended dependencies:
|
|
44
|
-
pip install -U mesa[rec]
|
|
44
|
+
pip install -U "mesa[rec]"
|
|
45
45
|
|
|
46
46
|
# To install all, including developer, dependencies:
|
|
47
|
-
pip install -U mesa[all]
|
|
47
|
+
pip install -U "mesa[all]"
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
You can also use `pip` to install the latest GitHub version:
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Mesa Performance Benchmarks
|
|
2
|
+
|
|
3
|
+
The `/benchmarks` directory contains tools for benchmarking the Mesa library performance on the included example models. This allows to track and compare model initialisation time and runtime between different Mesa versions.
|
|
4
|
+
|
|
5
|
+
MESA uses several example base models for benchmarking performance (BoltzmannWealth, Schelling, BoidFlockers, and WolfSheep) by calculating the initialization time and run time for each of these models. These example models can be found in the `/mesa/examples` directory.
|
|
6
|
+
|
|
7
|
+
## Available Files
|
|
8
|
+
|
|
9
|
+
- `configurations.py`: Contains model configurations for benchmarking
|
|
10
|
+
- `global_benchmark.py`: Main script for running benchmarks
|
|
11
|
+
- `compare_timings.py`: Tool to compare results between benchmark runs
|
|
12
|
+
|
|
13
|
+
## How to Use
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### 1. Benchmark Configuration
|
|
17
|
+
|
|
18
|
+
The `configurations.py` file defines which models to benchmark and their parameters. Each model has:
|
|
19
|
+
|
|
20
|
+
- `small` and `large` configurations for testing different scales
|
|
21
|
+
- Parameters for:
|
|
22
|
+
- `seeds`: Number of different random seeds to use
|
|
23
|
+
- `replications`: Number of times to repeat the benchmark for each seed
|
|
24
|
+
- `steps`: Number of model steps to run
|
|
25
|
+
- `parameters`: Model-specific parameters
|
|
26
|
+
|
|
27
|
+
### 2. Running Benchmarks
|
|
28
|
+
|
|
29
|
+
To run the benchmarks:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install tabulate # if you don't have it yet
|
|
33
|
+
python global_benchmark.py
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
This will:
|
|
37
|
+
- Run all models defined in `configurations.py` with their respective configurations
|
|
38
|
+
- Measure initialization time and run time for each model
|
|
39
|
+
- Save results to a pickle file named `timings_X.pickle` (where X is an incremental number)
|
|
40
|
+
- Display a summary of results in the terminal
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
>**Noteworthy :** the pickle file created by the benchmark is not under git control. So you can run the benchmark on the master branch first, switch to your development branch, and run the benchmarks again.
|
|
44
|
+
|
|
45
|
+
#### What's being measured:
|
|
46
|
+
|
|
47
|
+
- **Initialization time**: How long it takes to create model instances
|
|
48
|
+
- **Run time**: How long it takes to run the model for the specified number of steps
|
|
49
|
+
|
|
50
|
+
### 3. Comparing Results
|
|
51
|
+
|
|
52
|
+
After running benchmarks at different times (e.g., before and after code changes), you can compare the results:
|
|
53
|
+
|
|
54
|
+
1. Rename your benchmark files to distinguish them (e.g., `timings_before.pickle` and `timings_after.pickle`)
|
|
55
|
+
2. Edit `compare_timings.py` to use your file names:
|
|
56
|
+
```python
|
|
57
|
+
filename1 = "timings_1" # Or the name of your 1st timings file
|
|
58
|
+
filename2 = "timings_2" # Or the name of your 2nd timings file
|
|
59
|
+
```
|
|
60
|
+
3. Run the comparison:
|
|
61
|
+
```bash
|
|
62
|
+
python compare_timings.py
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
The output will show:
|
|
66
|
+
- Percentage changes in initialization and run times
|
|
67
|
+
- 95% confidence intervals for the changes
|
|
68
|
+
- Emojis indicate performance changes:
|
|
69
|
+
- 🟢 Faster performance (>3% improvement)
|
|
70
|
+
- 🔴 Slower performance (>3% regression)
|
|
71
|
+
- 🔵 Insignificant change (within ±3%)
|
|
72
|
+
|
|
73
|
+
> Some care is required in the interpretation since it only shows percentage changes and not the absolute changes. The init times in general are tiny so slower performance here is not necissarily as much of an issue.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## Example Workflow
|
|
77
|
+
|
|
78
|
+
1. Run benchmarks on your current Mesa version:
|
|
79
|
+
```bash
|
|
80
|
+
python global_benchmark.py
|
|
81
|
+
# Results saved as timings_1.pickle
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
2. Make code changes (add a feature in mesa, optimize a method, etc.) **OR** switch to development branch - you can do that without duplicating your pickle file in the new branch as it is not under git control
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
3. Run benchmarks again:
|
|
88
|
+
```bash
|
|
89
|
+
python global_benchmark.py
|
|
90
|
+
# Results saved as timings_2.pickle
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
4. Compare results:
|
|
94
|
+
```bash
|
|
95
|
+
python compare_timings.py
|
|
96
|
+
# Shows performance change table
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
5. Use the results to validate your optimizations or identify regressions
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Visualization
|
|
2
|
+
|
|
3
|
+
For detailed tutorials, please refer to:
|
|
4
|
+
|
|
5
|
+
- [Basic Visualization](../tutorials/4_visualization_basic)
|
|
6
|
+
- [Dynamic Agent Visualization](../tutorials/5_visualization_dynamic_agents)
|
|
7
|
+
- [Custom Agent Visualization](../tutorials/6_visualization_custom)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Jupyter Visualization
|
|
11
|
+
|
|
12
|
+
```{eval-rst}
|
|
13
|
+
.. automodule:: mesa.visualization.solara_viz
|
|
14
|
+
:members:
|
|
15
|
+
:undoc-members:
|
|
16
|
+
:show-inheritance:
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```{eval-rst}
|
|
20
|
+
.. automodule:: mesa.visualization.components.__init__
|
|
21
|
+
:members:
|
|
22
|
+
:undoc-members:
|
|
23
|
+
:show-inheritance:
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## User Parameters
|
|
27
|
+
|
|
28
|
+
```{eval-rst}
|
|
29
|
+
.. automodule:: mesa.visualization.user_param
|
|
30
|
+
:members:
|
|
31
|
+
:undoc-members:
|
|
32
|
+
:show-inheritance:
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## Matplotlib-based visualizations
|
|
37
|
+
|
|
38
|
+
```{eval-rst}
|
|
39
|
+
.. automodule:: mesa.visualization.components.matplotlib_components
|
|
40
|
+
:members:
|
|
41
|
+
:undoc-members:
|
|
42
|
+
:show-inheritance:
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```{eval-rst}
|
|
46
|
+
.. automodule:: mesa.visualization.mpl_space_drawing
|
|
47
|
+
:members:
|
|
48
|
+
:undoc-members:
|
|
49
|
+
:show-inheritance:
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
## Altair-based visualizations
|
|
54
|
+
|
|
55
|
+
```{eval-rst}
|
|
56
|
+
.. automodule:: mesa.visualization.components.altair_components
|
|
57
|
+
:members:
|
|
58
|
+
:undoc-members:
|
|
59
|
+
:show-inheritance:
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
## Command Console
|
|
64
|
+
|
|
65
|
+
```{eval-rst}
|
|
66
|
+
.. automodule:: mesa.visualization.command_console
|
|
67
|
+
:members:
|
|
68
|
+
:undoc-members:
|
|
69
|
+
:show-inheritance:
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
## Portrayal Components
|
|
74
|
+
```{eval-rst}
|
|
75
|
+
.. automodule:: mesa.visualization.components.portrayal_components
|
|
76
|
+
:members:
|
|
77
|
+
:undoc-members:
|
|
78
|
+
:show-inheritance:
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## Backends
|
|
83
|
+
|
|
84
|
+
```{eval-rst}
|
|
85
|
+
.. automodule:: mesa.visualization.backends.__init__
|
|
86
|
+
:members:
|
|
87
|
+
:undoc-members:
|
|
88
|
+
:show-inheritance:
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
```{eval-rst}
|
|
92
|
+
.. automodule:: mesa.visualization.backends.abstract_renderer
|
|
93
|
+
:members:
|
|
94
|
+
:undoc-members:
|
|
95
|
+
:show-inheritance:
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```{eval-rst}
|
|
99
|
+
.. automodule:: mesa.visualization.backends.altair_backend
|
|
100
|
+
:members:
|
|
101
|
+
:undoc-members:
|
|
102
|
+
:show-inheritance:
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```{eval-rst}
|
|
106
|
+
.. automodule:: mesa.visualization.backends.matplotlib_backend
|
|
107
|
+
:members:
|
|
108
|
+
:undoc-members:
|
|
109
|
+
:show-inheritance:
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## Space Renderer
|
|
114
|
+
|
|
115
|
+
```{eval-rst}
|
|
116
|
+
.. automodule:: mesa.visualization.space_renderer
|
|
117
|
+
:members:
|
|
118
|
+
:undoc-members:
|
|
119
|
+
:show-inheritance:
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
## Space Drawers
|
|
124
|
+
|
|
125
|
+
```{eval-rst}
|
|
126
|
+
.. automodule:: mesa.visualization.space_drawers
|
|
127
|
+
:members:
|
|
128
|
+
:undoc-members:
|
|
129
|
+
:show-inheritance:
|
|
130
|
+
```
|