Skip to content

v2.3.0

Latest
Compare
Choose a tag to compare
@EwoutH EwoutH released this 23 Apr 19:35
· 11 commits to main since this release
ed2cadf

Highlights

Mesa 2.3.0 is a big feature release and the last feature release before 3.0.

There are two main new features:

  • The experimental cell-centric discrete spaces, as added in #1994. It allows having cells with not only properties but also active behaviors: the CellAgent. Its inspired by NetLogo's patches but extend and generalize this concept further.
  • Full support for discrete event scheduling, as added in #2066. It allows scheduling events (like Agent actions) at any time, including non-integer timesteps.

There are a lot of other features: The Jupyter visualisation now supports easier way to specify sliders, NetworkGrid.get_neighbors() supports a radius, AgentSet.get() can retrieve multiple attributes and there are now benchmarks to track Mesa performance during development.

Finally, 2.3.0 stabilizes the AgentSet (including model.agents), making it the first experimental Mesa feature that is taken out of it's experimental phase.

Install this release with:

pip install --upgrade mesa

The Mesa 2.3.x-series supports Python 3.9 to 3.12. The next major release will require Python 3.10.

What's Changed

🧪 Experimental features

  • Add cell-centric discrete spaces (experimental) by @Corvince in #1994

🎉 New features added

🛠 Enhancements made

  • JupyterViz: Automatically deduce display name from model class by @rht in #1975
  • Add radius argument to NetworkGrid.get_neighbors() by @EwoutH in #1973
  • Speedup of Agentset.shuffle by @quaquel in #2010
  • feat: Let mesa runserver detect server.py as fallback by @rht in #2015
  • JupyterViz: {Convert make_plot & prepare ColorCard} to become Solara component by @rht in #2020
  • new feature: AgentSet.get can retrieve one or more then one attribute by @quaquel in #2044
  • Update CODE_OF_CONDUCT.md to version 2+ of contrib covenant by @jackiekazil in #2052
  • Improve flocking benchmark by @coderbeta1 in #2054
  • Remove JupyterViz Altair marker overlap for huge grid size by @rht in #2062
  • Add tooltip option to Altair chart by @FoFFolo in #2082
  • feat: Display model seed & allow user to specify it in JupyterViz by @rht in #2069
  • warn if placing already placed agent by @puer-robustus in #2083

🐛 Bugs fixed

  • fix: Apply default value to slider by @rht in #2016
  • fix: Initialize model _steps and _time during new by @rht in #2026
  • fix: Use model.schedule only when it is not None by @rht in #2050
  • fix: Remove JupyterViz grid marker overlap for huge grid size by @rht in #2049
  • Make agent move to actual random closest position by @EwoutH in #2119

📜 Documentation improvements

  • Improve readability of badges by @rht in #2009
  • More pythonic implementation of wolf sheep by @quaquel in #2011
  • Adding super().init() to MoneyModel tutorial by @sw23 in #2025
  • docs: Convert howto.rst -> howto.md via rst2myst by @rht in #2033
  • docs: Convert best-practices,overview,packages,mesa,index to .md via rst2myst by @rht in #2034
  • docs: Convert api/.rst -> api/.md via rst2myst by @rht in #2035
  • docs: Rewrite howto.md using ChatGPT for clarity and conciseness by @rht in #2037
  • docs: Corrected Contributing Guide Link to Ensure Accessibility by @sahusiddharth in #2057
  • Rename links to internal .rst files to .md by @rht in #2058
  • docs: improve introductory tutorial by @puer-robustus in #2087

🔧 Maintenance

  • Quality of Life: Make codecov less meticulous by @Corvince in #1966
  • Add CI workflow for performance benchmarks by @EwoutH in #1983
  • tests: Resolve warnings by defining PropertyLayer dtypes by @EwoutH in #1987
  • benchmarks.yml: Fix PR branch checkout when triggered by comment by @EwoutH in #1998
  • Quality of life: automatically fix ruff errors by @Corvince in #2004
  • benchmarks.yml: Run on addition of label instead of comment by @EwoutH in #2002
  • ci: Move codespell to pre-commit by @rht in #2040
  • Schelling by @coderbeta1 in #2053
  • Move ruff lint settings into dedicated section by @Corvince in #2073
  • ci: Use uv pip for faster build by @rht in #2038
  • test: Remove place_agent duplicate warnings by @rht in #2086

Other changes

New Contributors

Full Changelog: v2.2.4...2.3.0