Mesa 3.1.4__tar.gz → 3.1.5__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.1.4 → mesa-3.1.5}/CONTRIBUTING.md +57 -1
- {mesa-3.1.4 → mesa-3.1.5}/HISTORY.md +18 -1
- {mesa-3.1.4 → mesa-3.1.5}/PKG-INFO +1 -1
- mesa-3.1.5/docs/getting_started.md +54 -0
- mesa-3.1.5/docs/images/wolf_sheep.png +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/index.md +3 -1
- mesa-3.1.4/docs/getting_started.md → mesa-3.1.5/docs/overview.md +92 -60
- {mesa-3.1.4 → mesa-3.1.5}/mesa/__init__.py +1 -1
- {mesa-3.1.4 → mesa-3.1.5}/mesa/batchrunner.py +6 -3
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/README.md +9 -4
- mesa-3.1.4/docs/_static/switcher.json +0 -12
- mesa-3.1.4/docs/images/tutorial/br_ginis.png +0 -0
- mesa-3.1.4/docs/images/tutorial/dc_endwealth.png +0 -0
- mesa-3.1.4/docs/images/tutorial/dc_gini.png +0 -0
- mesa-3.1.4/docs/images/tutorial/dc_oneagent.png +0 -0
- mesa-3.1.4/docs/images/tutorial/first_hist.png +0 -0
- mesa-3.1.4/docs/images/tutorial/multirun_hist.png +0 -0
- mesa-3.1.4/docs/images/tutorial/numpy_grid.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_chart.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_empty.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_greycircles.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_histogram.png +0 -0
- mesa-3.1.4/docs/images/tutorial/viz_redcircles.png +0 -0
- mesa-3.1.4/docs/images/wolf_sheep.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_chart.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_empty.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_greycircles.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_histogram.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_redcircles.png +0 -0
- mesa-3.1.4/docs/tutorials/files/viz_slider.png +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.codespellignore +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.coveragerc +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/ISSUE_TEMPLATE/bug-report.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/ISSUE_TEMPLATE/feature-request.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/PULL_REQUEST_TEMPLATE/bug.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/dependabot.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/pull_request_template.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/release.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/workflows/benchmarks.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/workflows/build_lint.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.github/workflows/release.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.gitignore +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.pre-commit-config.yaml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/.readthedocs.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/CITATION.bib +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/CODE_OF_CONDUCT.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/Dockerfile +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/LICENSE +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/NOTICE +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/README.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/benchmarks/compare_timings.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/benchmarks/configurations.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/benchmarks/global_benchmark.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/binder/environment.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/codecov.yaml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docker-compose.yml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/Makefile +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/README.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/agent.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/api_main.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/batchrunner.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/datacollection.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/experimental.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/mesa_logging.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/model.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/space.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/apis/visualization.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/best-practices.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/conf.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/example_template.txt +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/examples_overview_template.txt +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/images/mesa_logo.ico +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/images/mesa_logo.png +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/make.bat +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/mesa.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/mesa_extension.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/migration_guide.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/tutorials/MoneyModel.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/tutorials/intro_tutorial.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/docs/tutorials/visualization_tutorial.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/maintenance/fetch_unlabeled_prs.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/agent.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/datacollection.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/pd_grid/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/pd_grid/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/pd_grid/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/pd_grid/analysis.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/pd_grid/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/pd_grid/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/sugarscape_g1mt/tests.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/wolf_sheep/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/wolf_sheep/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/wolf_sheep/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/wolf_sheep/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/wolf_sheep/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boid_flockers/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boid_flockers/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boid_flockers/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boid_flockers/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boid_flockers/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boltzmann_wealth_model/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boltzmann_wealth_model/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boltzmann_wealth_model/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boltzmann_wealth_model/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boltzmann_wealth_model/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/boltzmann_wealth_model/st_app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/conways_game_of_life/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/conways_game_of_life/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/conways_game_of_life/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/conways_game_of_life/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/conways_game_of_life/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/conways_game_of_life/st_app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/schelling/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/schelling/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/schelling/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/schelling/analysis.ipynb +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/schelling/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/schelling/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/virus_on_network/Readme.md +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/virus_on_network/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/virus_on_network/agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/virus_on_network/app.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/examples/basic/virus_on_network/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/cell.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/cell_agent.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/cell_collection.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/discrete_space.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/grid.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/network.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/property_layer.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/cell_space/voronoi.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/continuous_space/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/continuous_space/continuous_space.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/continuous_space/continuous_space_agents.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/devs/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/devs/eventlist.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/devs/simulator.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/mesa_signals/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/mesa_signals/mesa_signal.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/mesa_signals/observable_collections.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/experimental/mesa_signals/signals_util.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/mesa_logging.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/space.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/components/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/components/altair_components.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/components/matplotlib_components.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/mpl_space_drawing.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/solara_viz.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/user_param.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mesa/visualization/utils.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/mypy.ini +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/pyproject.toml +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/__init__.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/read_requirements.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_agent.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_batch_run.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_cell_space.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_components_matplotlib.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_continuous_space.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_datacollector.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_devs.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_end_to_end_viz.sh +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_examples.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_grid.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_import_namespace.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_lifespan.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_mesa_logging.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_mesa_signals.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_model.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_solara_viz.py +0 -0
- {mesa-3.1.4 → mesa-3.1.5}/tests/test_space.py +0 -0
|
@@ -119,7 +119,63 @@ ruff .
|
|
|
119
119
|
|
|
120
120
|
The license of this project is located in [LICENSE]. By submitting a contribution to this project, you are agreeing that your contribution will be released under the terms of this license.
|
|
121
121
|
|
|
122
|
-
##
|
|
122
|
+
## Roles in Mesa
|
|
123
|
+
Mesa has several roles to help structure our collaboration and recognize great work. They also form a progression path for community members to that want to take on increasing responsibility in the project. Since we're all volunteers, everyone contributes what they can when they can - there are no minimum time commitments. Also, the best ideas and contributions can come from anyone, these roles are just a way to coordinate our efforts.
|
|
124
|
+
|
|
125
|
+
Feel free to reach out to us anytime to discuss your interests and ambitions in the project. We're always happy to chat about how you can grow your involvement in Mesa!
|
|
126
|
+
|
|
127
|
+
### Contributor
|
|
128
|
+
Contributors help improve Mesa through:
|
|
129
|
+
- Code contributions
|
|
130
|
+
- Documentation improvements
|
|
131
|
+
- Bug reports and fixes
|
|
132
|
+
- Example models
|
|
133
|
+
- Tutorial improvements
|
|
134
|
+
- Answering questions
|
|
135
|
+
- Participating in discussions
|
|
136
|
+
- Testing pre-releases
|
|
137
|
+
- Sharing Mesa with others
|
|
138
|
+
|
|
139
|
+
Everyone can contribute what they can, when they can. No contribution is too small! Contributors who have a PR successfully merged receive the "Contributor" label on GitHub.
|
|
140
|
+
|
|
141
|
+
### Collaborator
|
|
142
|
+
When contributors consistently demonstrate technical skills and community mindset through their contributions, they may be invited to become collaborators. Collaborators help coordinate by:
|
|
143
|
+
|
|
144
|
+
- Reviewing pull requests
|
|
145
|
+
- Triaging issues and discussions
|
|
146
|
+
- Coordinating between contributors
|
|
147
|
+
- Leading specific areas of development
|
|
148
|
+
- Helping new contributors
|
|
149
|
+
- Participating in project planning
|
|
150
|
+
- Building community
|
|
151
|
+
|
|
152
|
+
The collaborator role recognizes people who help Mesa grow through both their technical contributions and community involvement. Collaborators receive GitHub triage permissions and the "Collaborator" label.
|
|
153
|
+
|
|
154
|
+
### Maintainer
|
|
155
|
+
Maintainers help guide Mesa's overall development while ensuring the project remains sustainable and welcoming. They focus on:
|
|
156
|
+
- Project vision and roadmap
|
|
157
|
+
- Major architectural decisions
|
|
158
|
+
- Release management
|
|
159
|
+
- Community governance
|
|
160
|
+
- Mentoring collaborators
|
|
161
|
+
- Setting community standards
|
|
162
|
+
- Long-term sustainability
|
|
163
|
+
|
|
164
|
+
Maintainers are selected based on their technical expertise, project understanding, and community leadership. Maintainers receive full repository permissions and the "Member" label.
|
|
165
|
+
|
|
166
|
+
### Special Roles
|
|
167
|
+
In some cases, special roles may be created for specific purposes, such as leading particular initiatives or components within Mesa. These roles are created as needed based on project requirements and may come with specific permissions and labels.
|
|
168
|
+
|
|
169
|
+
All roles are expected to:
|
|
170
|
+
- Follow Mesa's code of conduct
|
|
171
|
+
- Communicate respectfully
|
|
172
|
+
- Work collaboratively
|
|
173
|
+
- Help maintain a welcoming community
|
|
174
|
+
- Make decisions transparently
|
|
175
|
+
|
|
176
|
+
Mesa grows through good ideas and contributions. We're all volunteers working together to make Mesa better. Don't hesitate to reach out to any maintainer to discuss your interests and potential growth within the project!
|
|
177
|
+
|
|
178
|
+
## Maintainers' notes
|
|
123
179
|
Some notes useful for Mesa maintainers.
|
|
124
180
|
|
|
125
181
|
### Releases
|
|
@@ -1,11 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Release History
|
|
3
3
|
---
|
|
4
|
+
# 3.1.5 (2025-03-26)
|
|
5
|
+
## Highlights
|
|
6
|
+
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.
|
|
7
|
+
|
|
8
|
+
The documentation improvements include enhanced explanations for batch run parallel processing, a significantly expanded overview section covering spaces, property layers and time advancement methods with practical code examples, and a clearer installation guide detailing what the optional `[rec]` dependencies provide. We've also improved our examples documentation to better distinguish between core and user-contributed examples, and added a new "Roles" section to the contributing guide that outlines the project's community structure and progression paths.
|
|
9
|
+
|
|
10
|
+
On the maintenance side, we've cleaned up unused images and compressed existing ones, reducing the repository size by over 2MB and distribution size from 3.2MB to 1.2MB.
|
|
11
|
+
|
|
12
|
+
## What's Changed
|
|
13
|
+
### 📜 Documentation improvements
|
|
14
|
+
* docs: Split off the overview page, extend with spaces/activation by @EwoutH in https://github.com/projectmesa/mesa/pull/2673
|
|
15
|
+
* docs: Add Roles section to CONTRIBUTING.md by @EwoutH in https://github.com/projectmesa/mesa/pull/2694
|
|
16
|
+
* [JOSS] Docs: Clarify difference between core and user examples by @EwoutH in https://github.com/projectmesa/mesa/pull/2706
|
|
17
|
+
* [JOSS] docs: Improve batch_run documentation for parallel processing by @EwoutH in https://github.com/projectmesa/mesa/pull/2707
|
|
18
|
+
* Clean-up old images, compress wolf-sheep image, remove version switch artifact by @EwoutH in https://github.com/projectmesa/mesa/pull/2717
|
|
19
|
+
|
|
20
|
+
**Full Changelog**: https://github.com/projectmesa/mesa/compare/v3.1.4...v3.1.5
|
|
21
|
+
|
|
4
22
|
# 3.1.4 (2025-02-09)
|
|
5
23
|
## Highlights
|
|
6
24
|
This release contains various improvements and bugfixes to the matplotlib-based visualization of spaces. Hexgrids are now fully supported, including property layers. In making this possible, various minor bugs were encountered and also fixed. In addition to the visualization improvements, there are various minor convenience improvements to the docs.
|
|
7
25
|
|
|
8
|
-
|
|
9
26
|
## What's Changed
|
|
10
27
|
### 🛠 Enhancements made
|
|
11
28
|
* Fixed hex-space draw function to avoid overlaps by @Sahil-Chhoker in https://github.com/projectmesa/mesa/pull/2609
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Getting started
|
|
2
|
+
Mesa is a modular framework for building, analyzing and visualizing agent-based models.
|
|
3
|
+
|
|
4
|
+
**Agent-based models** are computer simulations involving multiple entities (the agents) acting and interacting with one another based on their programmed behavior. Agents can be used to represent living cells, animals, individual humans, even entire organizations or abstract entities. Sometimes, we may have an understanding of how the individual components of a system behave, and want to see what system-level behaviors and effects emerge from their interaction. Other times, we may have a good idea of how the system overall behaves, and want to figure out what individual behaviors explain it. Or we may want to see how to get agents to cooperate or compete most effectively. Or we may just want to build a cool toy with colorful little dots moving around.
|
|
5
|
+
|
|
6
|
+
## Tutorials
|
|
7
|
+
If you want to get a quick start on how to build agent based models with MESA, check the overview and tutorials:
|
|
8
|
+
|
|
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.
|
|
12
|
+
|
|
13
|
+
## Examples
|
|
14
|
+
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).
|
|
15
|
+
|
|
16
|
+
## Further resources
|
|
17
|
+
To further explore Mesa and its features, we have the following resources available:
|
|
18
|
+
|
|
19
|
+
### Best practices
|
|
20
|
+
- [Mesa best practices](best-practices): an overview of tips and guidelines for using MESA.
|
|
21
|
+
|
|
22
|
+
### API documentation
|
|
23
|
+
- [Mesa API reference](apis): Detailed documentation of Mesa's classes and functions.
|
|
24
|
+
|
|
25
|
+
### Repository of models built using MESA
|
|
26
|
+
- [Mesa Examples repository](https://github.com/projectmesa/mesa-examples): A collection of example models demonstrating various Mesa features and modeling techniques.
|
|
27
|
+
|
|
28
|
+
### Migration guide
|
|
29
|
+
- [Mesa 3.0 Migration guide](migration_guide): If you're upgrading from an earlier version of Mesa, this guide will help you navigate the changes in Mesa 3.0.
|
|
30
|
+
|
|
31
|
+
### Source Ccode and development
|
|
32
|
+
- [Mesa GitHub repository](https://github.com/projectmesa/mesa): Access the full source code of Mesa, contribute to its development, or report issues.
|
|
33
|
+
- [Mesa release notes](https://github.com/projectmesa/mesa/releases): View the detailed changelog of Mesa, including all past releases and their features.
|
|
34
|
+
|
|
35
|
+
### Community and support
|
|
36
|
+
- [Mesa GitHub Discussions](https://github.com/projectmesa/mesa/discussions): Join discussions, ask questions, and connect with other Mesa users.
|
|
37
|
+
- [Matrix Chat](https://matrix.to/#/#project-mesa:matrix.org): Real-time chat for quick questions and community interaction.
|
|
38
|
+
|
|
39
|
+
Enjoy modelling with Mesa, and feel free to reach out!
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
```{toctree}
|
|
46
|
+
:hidden: true
|
|
47
|
+
:maxdepth: 7
|
|
48
|
+
|
|
49
|
+
tutorials/intro_tutorial
|
|
50
|
+
tutorials/visualization_tutorial
|
|
51
|
+
Best Practices <best-practices>
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
```
|
|
Binary file
|
|
@@ -43,10 +43,11 @@ To also install our recommended dependencies:
|
|
|
43
43
|
pip install -U mesa[rec]
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
+
The `[rec]` option installs additional recommended dependencies needed for visualization, plotting, and network modeling capabilities.
|
|
47
|
+
|
|
46
48
|
On a Mac, this command might cause an error stating `zsh: no matches found: mesa[all]`.
|
|
47
49
|
In that case, change the command to `pip install -U "mesa[rec]"`.
|
|
48
50
|
|
|
49
|
-
|
|
50
51
|
### Resources
|
|
51
52
|
|
|
52
53
|
For help getting started with Mesa, check out these resources:
|
|
@@ -73,6 +74,7 @@ The original Mesa conference paper is [available here](http://conference.scipy.o
|
|
|
73
74
|
:maxdepth: 7
|
|
74
75
|
|
|
75
76
|
Getting started <getting_started>
|
|
77
|
+
Overview <overview>
|
|
76
78
|
Examples <examples>
|
|
77
79
|
Migration guide <migration_guide>
|
|
78
80
|
API Documentation <apis/api_main>
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
# Getting started
|
|
2
|
-
Mesa is a modular framework for building, analyzing and visualizing agent-based models.
|
|
3
|
-
|
|
4
|
-
**Agent-based models** are computer simulations involving multiple entities (the agents) acting and interacting with one another based on their programmed behavior. Agents can be used to represent living cells, animals, individual humans, even entire organizations or abstract entities. Sometimes, we may have an understanding of how the individual components of a system behave, and want to see what system-level behaviors and effects emerge from their interaction. Other times, we may have a good idea of how the system overall behaves, and want to figure out what individual behaviors explain it. Or we may want to see how to get agents to cooperate or compete most effectively. Or we may just want to build a cool toy with colorful little dots moving around.
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## Tutorials
|
|
8
|
-
If you want to get a quick start on how to build agent based models with MESA, check the tutorials:
|
|
9
|
-
|
|
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.
|
|
12
|
-
|
|
13
|
-
## Examples
|
|
14
|
-
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).
|
|
15
|
-
|
|
16
|
-
|
|
17
1
|
## Overview of the MESA library
|
|
18
2
|
|
|
19
3
|
Mesa is modular, meaning that its modeling, analysis and visualization components are kept separate but intended to work together. The modules are grouped into three categories:
|
|
@@ -59,15 +43,102 @@ class MyModel(mesa.Model):
|
|
|
59
43
|
self.agents.shuffle_do("step")
|
|
60
44
|
```
|
|
61
45
|
|
|
62
|
-
|
|
46
|
+
### Spaces in Mesa
|
|
47
|
+
|
|
48
|
+
Mesa provides several types of spaces where agents can exist and interact:
|
|
49
|
+
|
|
50
|
+
#### Discrete Spaces
|
|
51
|
+
Mesa implements discrete spaces using a doubly-linked structure where each cell maintains connections to its neighbors. Available variants include:
|
|
52
|
+
|
|
53
|
+
1. **Grid-based Spaces:**
|
|
54
|
+
```python
|
|
55
|
+
# Create a Von Neumann grid (4 neighbors per cell)
|
|
56
|
+
grid = mesa.space.OrthogonalVonNeumannGrid((width, height), torus=False)
|
|
57
|
+
|
|
58
|
+
# Create a Moore grid (8 neighbors per cell)
|
|
59
|
+
grid = mesa.space.OrthogonalMooreGrid((width, height), torus=True)
|
|
60
|
+
|
|
61
|
+
# Create a hexagonal grid
|
|
62
|
+
grid = mesa.space.HexGrid((width, height), torus=False)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
2. **Network Space:**
|
|
66
|
+
```python
|
|
67
|
+
# Create a network-based space
|
|
68
|
+
network = mesa.space.NetworkGrid(network)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
3. **Voronoi Space:**
|
|
72
|
+
```python
|
|
73
|
+
# Create an irregular tessellation
|
|
74
|
+
mesh = mesa.space.VoronoiMesh(points)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Property Layers
|
|
78
|
+
Discrete spaces support PropertyLayers - efficient numpy-based arrays for storing cell-level properties:
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
# Create and use a property layer
|
|
82
|
+
grid.create_property_layer("elevation", default_value=10)
|
|
83
|
+
high_ground = grid.elevation.select_cells(lambda x: x > 50)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
#### Continuous Space
|
|
87
|
+
For models requiring continuous movement:
|
|
63
88
|
|
|
64
89
|
```python
|
|
65
|
-
|
|
66
|
-
|
|
90
|
+
# Create a continuous space
|
|
91
|
+
space = mesa.space.ContinuousSpace(x_max, y_max, torus=True)
|
|
92
|
+
|
|
93
|
+
# Move an agent to specific coordinates
|
|
94
|
+
space.move_agent(agent, (new_x, new_y))
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Time Advancement and Agent Activation
|
|
98
|
+
|
|
99
|
+
Mesa supports multiple approaches to advancing time and activating agents:
|
|
100
|
+
|
|
101
|
+
#### Basic Time Steps
|
|
102
|
+
The simplest approach runs the model for a specified number of steps:
|
|
103
|
+
|
|
104
|
+
```python
|
|
105
|
+
model = MyModel(seed=42)
|
|
106
|
+
for _ in range(100):
|
|
107
|
+
model.step()
|
|
67
108
|
```
|
|
68
109
|
|
|
69
|
-
|
|
110
|
+
#### Agent Activation Patterns
|
|
111
|
+
Mesa 3.0 provides flexible agent activation through the AgentSet API:
|
|
70
112
|
|
|
113
|
+
```python
|
|
114
|
+
# Sequential activation
|
|
115
|
+
model.agents.do("step")
|
|
116
|
+
|
|
117
|
+
# Random activation
|
|
118
|
+
model.agents.shuffle_do("step")
|
|
119
|
+
|
|
120
|
+
# Multi-stage activation
|
|
121
|
+
for stage in ["move", "eat", "reproduce"]:
|
|
122
|
+
model.agents.do(stage)
|
|
123
|
+
|
|
124
|
+
# Activation by agent type
|
|
125
|
+
for klass in model.agent_types:
|
|
126
|
+
model.agents_by_type[klass].do("step")
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Event-Based Scheduling
|
|
130
|
+
Mesa also supports event-based time progression (experimental):
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
# Pure event-based
|
|
134
|
+
simulator = mesa.experimental.DiscreteEventSimulator()
|
|
135
|
+
model = MyModel(seed=42, simulator=simulator)
|
|
136
|
+
simulator.schedule_event_relative(some_function, 3.1415)
|
|
137
|
+
|
|
138
|
+
# Hybrid time-step and event scheduling
|
|
139
|
+
model = MyModel(seed=42, simulator=mesa.experimental.ABMSimulator())
|
|
140
|
+
model.simulator.schedule_event_next_tick(some_function)
|
|
141
|
+
```
|
|
71
142
|
|
|
72
143
|
### AgentSet and model.agents
|
|
73
144
|
Mesa 3.0 makes `model.agents` and the AgentSet class central in managing and activating agents.
|
|
@@ -169,6 +240,7 @@ results = mesa.batch_run(
|
|
|
169
240
|
iterations=5,
|
|
170
241
|
max_steps=100,
|
|
171
242
|
data_collection_period=1,
|
|
243
|
+
number_processes=1 # Change to use multiple CPU cores for parallel execution
|
|
172
244
|
)
|
|
173
245
|
```
|
|
174
246
|
|
|
@@ -228,43 +300,3 @@ This will create an interactive visualization of your model, including:
|
|
|
228
300
|
- A slider to adjust the number of agents
|
|
229
301
|
|
|
230
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).
|
|
231
|
-
|
|
232
|
-
## Further resources
|
|
233
|
-
To further explore Mesa and its features, we have the following resources available:
|
|
234
|
-
|
|
235
|
-
### Best practices
|
|
236
|
-
- [Mesa best practices](best-practices): an overview of tips and guidelines for using MESA.
|
|
237
|
-
|
|
238
|
-
### API documentation
|
|
239
|
-
- [Mesa API reference](apis): Detailed documentation of Mesa's classes and functions.
|
|
240
|
-
|
|
241
|
-
### Repository of models built using MESA
|
|
242
|
-
- [Mesa Examples repository](https://github.com/projectmesa/mesa-examples): A collection of example models demonstrating various Mesa features and modeling techniques.
|
|
243
|
-
|
|
244
|
-
### Migration guide
|
|
245
|
-
- [Mesa 3.0 Migration guide](migration_guide): If you're upgrading from an earlier version of Mesa, this guide will help you navigate the changes in Mesa 3.0.
|
|
246
|
-
|
|
247
|
-
### Source Ccode and development
|
|
248
|
-
- [Mesa GitHub repository](https://github.com/projectmesa/mesa): Access the full source code of Mesa, contribute to its development, or report issues.
|
|
249
|
-
- [Mesa release notes](https://github.com/projectmesa/mesa/releases): View the detailed changelog of Mesa, including all past releases and their features.
|
|
250
|
-
|
|
251
|
-
### Community and support
|
|
252
|
-
- [Mesa GitHub Discussions](https://github.com/projectmesa/mesa/discussions): Join discussions, ask questions, and connect with other Mesa users.
|
|
253
|
-
- [Matrix Chat](https://matrix.to/#/#project-mesa:matrix.org): Real-time chat for quick questions and community interaction.
|
|
254
|
-
|
|
255
|
-
Enjoy modelling with Mesa, and feel free to reach out!
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
```{toctree}
|
|
262
|
-
:hidden: true
|
|
263
|
-
:maxdepth: 7
|
|
264
|
-
|
|
265
|
-
tutorials/intro_tutorial
|
|
266
|
-
tutorials/visualization_tutorial
|
|
267
|
-
Best Practices <best-practices>
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
```
|
|
@@ -3,7 +3,12 @@
|
|
|
3
3
|
To take advantage of parallel execution of experiments, `batch_run` uses
|
|
4
4
|
multiprocessing if ``number_processes`` is larger than 1. It is strongly advised
|
|
5
5
|
to only run in parallel using a normal python file (so don't try to do it in a
|
|
6
|
-
jupyter notebook).
|
|
6
|
+
jupyter notebook). This is because Jupyter notebooks have a different execution
|
|
7
|
+
model that can cause issues with Python's multiprocessing module, especially on
|
|
8
|
+
Windows. The main problems include the lack of a traditional __main__ entry
|
|
9
|
+
point, serialization issues, and potential deadlocks.
|
|
10
|
+
|
|
11
|
+
Moreover, best practice when using multiprocessing is to
|
|
7
12
|
put the code inside an ``if __name__ == '__main__':`` code black as shown below::
|
|
8
13
|
|
|
9
14
|
from mesa.batchrunner import batch_run
|
|
@@ -21,8 +26,6 @@ put the code inside an ``if __name__ == '__main__':`` code black as shown below:
|
|
|
21
26
|
display_progress=True,
|
|
22
27
|
)
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
26
29
|
"""
|
|
27
30
|
|
|
28
31
|
import itertools
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
# Mesa
|
|
2
|
-
|
|
1
|
+
# Mesa Core Examples
|
|
2
|
+
This repository contains a curated set of classic agent-based models implemented using Mesa. These core examples are maintained by the Mesa development team and serve as both demonstrations of Mesa's capabilities and starting points for your own models.
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
## Overview
|
|
5
|
+
The examples are categorized into two groups:
|
|
6
|
+
1. **Basic Examples** - Simpler models that use only stable Mesa features; ideal for beginners
|
|
7
|
+
2. **Advanced Examples** - More complex models that demonstrate additional concepts and may use some experimental features
|
|
8
|
+
|
|
9
|
+
> **Note:** Looking for more examples? Visit the [mesa-examples](https://github.com/projectmesa/mesa-examples) repository for user-contributed models and showcases.
|
|
5
10
|
|
|
6
11
|
## Basic Examples
|
|
7
12
|
The basic examples are relatively simple and only use stable Mesa features. They are good starting points for learning how to use Mesa.
|
|
@@ -34,4 +39,4 @@ Grid-based demographic prisoner's dilemma model, demonstrating how simple rules
|
|
|
34
39
|
This is Epstein & Axtell's Sugarscape model with Traders, a detailed description is in Chapter four of *Growing Artificial Societies: Social Science from the Bottom Up (1996)*. The model shows how emergent price equilibrium can happen via decentralized dynamics.
|
|
35
40
|
|
|
36
41
|
### [Wolf-Sheep Predation Model](examples/advanced/wolf_sheep)
|
|
37
|
-
Implementation of an ecological model of predation and reproduction, based on the NetLogo [Wolf Sheep Predation](http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation) model.
|
|
42
|
+
Implementation of an ecological model of predation and reproduction, based on the NetLogo [Wolf Sheep Predation](http://ccl.northwestern.edu/netlogo/models/WolfSheepPredation) model.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mesa-3.1.4 → mesa-3.1.5}/NOTICE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mesa-3.1.4 → mesa-3.1.5}/mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|