Mesa 3.1.5__py3-none-any.whl → 3.2.0__py3-none-any.whl

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 (64) hide show
  1. mesa/__init__.py +3 -1
  2. mesa/agent.py +26 -9
  3. mesa/discrete_space/__init__.py +50 -0
  4. mesa/{experimental/cell_space → discrete_space}/cell.py +29 -10
  5. mesa/{experimental/cell_space → discrete_space}/cell_agent.py +1 -1
  6. mesa/{experimental/cell_space → discrete_space}/cell_collection.py +3 -3
  7. mesa/{experimental/cell_space → discrete_space}/discrete_space.py +65 -3
  8. mesa/{experimental/cell_space → discrete_space}/grid.py +2 -2
  9. mesa/{experimental/cell_space → discrete_space}/network.py +22 -2
  10. mesa/{experimental/cell_space → discrete_space}/property_layer.py +1 -10
  11. mesa/{experimental/cell_space → discrete_space}/voronoi.py +2 -2
  12. mesa/examples/README.md +1 -1
  13. mesa/examples/__init__.py +2 -0
  14. mesa/examples/advanced/alliance_formation/Readme.md +50 -0
  15. mesa/examples/advanced/alliance_formation/__init__ .py +0 -0
  16. mesa/examples/advanced/alliance_formation/agents.py +20 -0
  17. mesa/examples/advanced/alliance_formation/app.py +71 -0
  18. mesa/examples/advanced/alliance_formation/model.py +184 -0
  19. mesa/examples/advanced/epstein_civil_violence/agents.py +1 -1
  20. mesa/examples/advanced/epstein_civil_violence/model.py +1 -1
  21. mesa/examples/advanced/pd_grid/Readme.md +4 -6
  22. mesa/examples/advanced/pd_grid/agents.py +1 -1
  23. mesa/examples/advanced/pd_grid/model.py +1 -1
  24. mesa/examples/advanced/sugarscape_g1mt/Readme.md +4 -5
  25. mesa/examples/advanced/sugarscape_g1mt/agents.py +1 -1
  26. mesa/examples/advanced/sugarscape_g1mt/model.py +2 -2
  27. mesa/examples/advanced/wolf_sheep/Readme.md +2 -17
  28. mesa/examples/advanced/wolf_sheep/agents.py +1 -1
  29. mesa/examples/advanced/wolf_sheep/app.py +2 -1
  30. mesa/examples/advanced/wolf_sheep/model.py +1 -1
  31. mesa/examples/basic/boid_flockers/Readme.md +6 -1
  32. mesa/examples/basic/boid_flockers/agents.py +1 -0
  33. mesa/examples/basic/boid_flockers/app.py +17 -2
  34. mesa/examples/basic/boid_flockers/model.py +12 -0
  35. mesa/examples/basic/boltzmann_wealth_model/Readme.md +2 -12
  36. mesa/examples/basic/boltzmann_wealth_model/agents.py +6 -11
  37. mesa/examples/basic/boltzmann_wealth_model/app.py +2 -2
  38. mesa/examples/basic/boltzmann_wealth_model/model.py +7 -11
  39. mesa/examples/basic/conways_game_of_life/Readme.md +1 -9
  40. mesa/examples/basic/conways_game_of_life/agents.py +13 -5
  41. mesa/examples/basic/conways_game_of_life/model.py +10 -7
  42. mesa/examples/basic/schelling/Readme.md +0 -8
  43. mesa/examples/basic/schelling/agents.py +13 -8
  44. mesa/examples/basic/schelling/model.py +6 -9
  45. mesa/examples/basic/virus_on_network/Readme.md +0 -4
  46. mesa/examples/basic/virus_on_network/agents.py +13 -17
  47. mesa/examples/basic/virus_on_network/model.py +20 -24
  48. mesa/experimental/__init__.py +2 -2
  49. mesa/experimental/cell_space/__init__.py +18 -8
  50. mesa/experimental/meta_agents/__init__.py +25 -0
  51. mesa/experimental/meta_agents/meta_agent.py +387 -0
  52. mesa/model.py +3 -3
  53. mesa/space.py +1 -12
  54. mesa/visualization/__init__.py +2 -0
  55. mesa/visualization/command_console.py +482 -0
  56. mesa/visualization/components/altair_components.py +276 -16
  57. mesa/visualization/mpl_space_drawing.py +17 -9
  58. mesa/visualization/solara_viz.py +150 -21
  59. {mesa-3.1.5.dist-info → mesa-3.2.0.dist-info}/METADATA +12 -8
  60. mesa-3.2.0.dist-info/RECORD +105 -0
  61. mesa-3.1.5.dist-info/RECORD +0 -96
  62. {mesa-3.1.5.dist-info → mesa-3.2.0.dist-info}/WHEEL +0 -0
  63. {mesa-3.1.5.dist-info → mesa-3.2.0.dist-info}/licenses/LICENSE +0 -0
  64. {mesa-3.1.5.dist-info → mesa-3.2.0.dist-info}/licenses/NOTICE +0 -0
@@ -25,15 +25,20 @@ from __future__ import annotations
25
25
 
26
26
  import asyncio
27
27
  import inspect
28
+ import threading
29
+ import time
30
+ import traceback
28
31
  from collections.abc import Callable
29
32
  from typing import TYPE_CHECKING, Literal
30
33
 
31
34
  import reacton.core
32
35
  import solara
36
+ import solara.lab
33
37
 
34
38
  import mesa.visualization.components.altair_components as components_altair
35
39
  from mesa.experimental.devs.simulator import Simulator
36
40
  from mesa.mesa_logging import create_module_logger, function_logger
41
+ from mesa.visualization.command_console import CommandConsole
37
42
  from mesa.visualization.user_param import Slider
38
43
  from mesa.visualization.utils import force_update, update_counter
39
44
 
@@ -56,6 +61,8 @@ def SolaraViz(
56
61
  simulator: Simulator | None = None,
57
62
  model_params=None,
58
63
  name: str | None = None,
64
+ use_threads: bool = False,
65
+ **console_kwargs,
59
66
  ):
60
67
  """Solara visualization component.
61
68
 
@@ -75,10 +82,18 @@ def SolaraViz(
75
82
  This controls the speed of the model's automatic stepping. Defaults to 100 ms.
76
83
  render_interval (int, optional): Controls how often plots are updated during a simulation,
77
84
  allowing users to skip intermediate steps and update graphs less frequently.
85
+ use_threads: Flag for indicating whether to utilize multi-threading for model execution.
86
+ When checked, the model will utilize multiple threads,adjust based on system capabilities.
78
87
  simulator: A simulator that controls the model (optional)
79
88
  model_params (dict, optional): Parameters for (re-)instantiating a model.
80
89
  Can include user-adjustable parameters and fixed parameters. Defaults to None.
81
- name (str | None, optional): Name of the visualization. Defaults to the models class name.
90
+ name (str | None, optional): Name of the visualization. Defaults to the model's class name.
91
+ **console_kwargs (dict, optional): Arguments to pass to the command console.
92
+ Currently supported arguments:
93
+ - additional_imports: Dictionary of names to objects to import into the command console.
94
+ - Example:
95
+ >>> console_kwargs = {"additional_imports": {"numpy": np}}
96
+ >>> SolaraViz(model, console_kwargs=console_kwargs)
82
97
 
83
98
  Returns:
84
99
  solara.component: A Solara component that renders the visualization interface for the model.
@@ -94,7 +109,7 @@ def SolaraViz(
94
109
  - The `play_interval` argument controls the speed of the model's automatic stepping. A lower
95
110
  value results in faster stepping, while a higher value results in slower stepping.
96
111
  - The `render_interval` argument determines how often plots are updated during simulation. Higher values
97
- reduce update frequency,resulting in faster execution.
112
+ reduce update frequency, resulting in faster execution.
98
113
  """
99
114
  if components == "default":
100
115
  components = [
@@ -113,8 +128,10 @@ def SolaraViz(
113
128
  reactive_model_parameters = solara.use_reactive({})
114
129
  reactive_play_interval = solara.use_reactive(play_interval)
115
130
  reactive_render_interval = solara.use_reactive(render_interval)
131
+ reactive_use_threads = solara.use_reactive(use_threads)
116
132
  with solara.AppBar():
117
133
  solara.AppBarTitle(name if name else model.value.__class__.__name__)
134
+ solara.lab.ThemeToggle()
118
135
 
119
136
  with solara.Sidebar(), solara.Column():
120
137
  with solara.Card("Controls"):
@@ -134,12 +151,25 @@ def SolaraViz(
134
151
  max=100,
135
152
  step=2,
136
153
  )
154
+ if reactive_use_threads.value:
155
+ solara.Text("Increase play interval to avoid skipping plots")
156
+
157
+ def set_reactive_use_threads(value):
158
+ reactive_use_threads.set(value)
159
+
160
+ solara.Checkbox(
161
+ label="Use Threads",
162
+ value=reactive_use_threads,
163
+ on_value=set_reactive_use_threads,
164
+ )
165
+
137
166
  if not isinstance(simulator, Simulator):
138
167
  ModelController(
139
168
  model,
140
169
  model_parameters=reactive_model_parameters,
141
170
  play_interval=reactive_play_interval,
142
171
  render_interval=reactive_render_interval,
172
+ use_threads=reactive_use_threads,
143
173
  )
144
174
  else:
145
175
  SimulatorController(
@@ -148,6 +178,7 @@ def SolaraViz(
148
178
  model_parameters=reactive_model_parameters,
149
179
  play_interval=reactive_play_interval,
150
180
  render_interval=reactive_render_interval,
181
+ use_threads=reactive_use_threads,
151
182
  )
152
183
  with solara.Card("Model Parameters"):
153
184
  ModelCreator(
@@ -155,6 +186,13 @@ def SolaraViz(
155
186
  )
156
187
  with solara.Card("Information"):
157
188
  ShowSteps(model.value)
189
+ if (
190
+ CommandConsole in components
191
+ ): # If command console in components show it in sidebar
192
+ components.remove(CommandConsole)
193
+ additional_imports = console_kwargs.get("additional_imports", {})
194
+ with solara.Card("Command Console"):
195
+ CommandConsole(model.value, additional_imports=additional_imports)
158
196
 
159
197
  ComponentsView(components, model.value)
160
198
 
@@ -209,6 +247,7 @@ def ModelController(
209
247
  model_parameters: dict | solara.Reactive[dict] = None,
210
248
  play_interval: int | solara.Reactive[int] = 100,
211
249
  render_interval: int | solara.Reactive[int] = 1,
250
+ use_threads: bool | solara.Reactive[bool] = False,
212
251
  ):
213
252
  """Create controls for model execution (step, play, pause, reset).
214
253
 
@@ -217,37 +256,76 @@ def ModelController(
217
256
  model_parameters: Reactive parameters for (re-)instantiating a model.
218
257
  play_interval: Interval for playing the model steps in milliseconds.
219
258
  render_interval: Controls how often the plots are updated during simulation steps.Higher value reduce update frequency.
259
+ use_threads: Flag for indicating whether to utilize multi-threading for model execution.
220
260
  """
221
261
  playing = solara.use_reactive(False)
222
262
  running = solara.use_reactive(True)
263
+
223
264
  if model_parameters is None:
224
265
  model_parameters = {}
225
266
  model_parameters = solara.use_reactive(model_parameters)
226
-
227
- async def step():
228
- while playing.value and running.value:
229
- await asyncio.sleep(play_interval.value / 1000)
230
- do_step()
267
+ visualization_pause_event = solara.use_memo(lambda: threading.Event(), [])
268
+
269
+ error_message = solara.use_reactive(None)
270
+
271
+ def step():
272
+ try:
273
+ while running.value and playing.value:
274
+ time.sleep(play_interval.value / 1000)
275
+ do_step()
276
+ if use_threads.value:
277
+ visualization_pause_event.set()
278
+ except Exception as e:
279
+ error_message.value = f"error in step: {e}"
280
+ traceback.print_exc()
281
+ return
282
+
283
+ def visualization_task():
284
+ if use_threads.value:
285
+ try:
286
+ while playing.value and running.value:
287
+ visualization_pause_event.wait()
288
+ visualization_pause_event.clear()
289
+ force_update()
290
+
291
+ except Exception as e:
292
+ error_message.value = f"error in visualization: {e}"
293
+ traceback.print_exc()
231
294
 
232
295
  solara.lab.use_task(
233
- step, dependencies=[playing.value, running.value], prefer_threaded=False
296
+ step, dependencies=[playing.value, running.value], prefer_threaded=True
297
+ )
298
+
299
+ solara.use_thread(
300
+ visualization_task,
301
+ dependencies=[playing.value, running.value],
234
302
  )
235
303
 
236
304
  @function_logger(__name__)
237
305
  def do_step():
238
306
  """Advance the model by the number of steps specified by the render_interval slider."""
239
- for _ in range(render_interval.value):
240
- model.value.step()
307
+ if playing.value:
308
+ for _ in range(render_interval.value):
309
+ model.value.step()
310
+ running.value = model.value.running
311
+ if not playing.value:
312
+ break
313
+ if not use_threads.value:
314
+ force_update()
241
315
 
242
- running.value = model.value.running
243
-
244
- force_update()
316
+ else:
317
+ for _ in range(render_interval.value):
318
+ model.value.step()
319
+ running.value = model.value.running
320
+ force_update()
245
321
 
246
322
  @function_logger(__name__)
247
323
  def do_reset():
248
324
  """Reset the model to its initial state."""
325
+ error_message.set(None)
249
326
  playing.value = False
250
327
  running.value = True
328
+ visualization_pause_event.clear()
251
329
  _mesa_logger.log(
252
330
  10,
253
331
  f"creating new {model.value.__class__} instance with {model_parameters.value}",
@@ -274,6 +352,9 @@ def ModelController(
274
352
  disabled=playing.value or not running.value,
275
353
  )
276
354
 
355
+ if error_message.value:
356
+ solara.Error(label=error_message.value)
357
+
277
358
 
278
359
  @solara.component
279
360
  def SimulatorController(
@@ -283,6 +364,7 @@ def SimulatorController(
283
364
  model_parameters: dict | solara.Reactive[dict] = None,
284
365
  play_interval: int | solara.Reactive[int] = 100,
285
366
  render_interval: int | solara.Reactive[int] = 1,
367
+ use_threads: bool | solara.Reactive[bool] = False,
286
368
  ):
287
369
  """Create controls for model execution (step, play, pause, reset).
288
370
 
@@ -292,6 +374,7 @@ def SimulatorController(
292
374
  model_parameters: Reactive parameters for (re-)instantiating a model.
293
375
  play_interval: Interval for playing the model steps in milliseconds.
294
376
  render_interval: Controls how often the plots are updated during simulation steps.Higher values reduce update frequency.
377
+ use_threads: Flag for indicating whether to utilize multi-threading for model execution.
295
378
 
296
379
  Notes:
297
380
  The `step button` increments the step by the value specified in the `render_interval` slider.
@@ -302,27 +385,71 @@ def SimulatorController(
302
385
  if model_parameters is None:
303
386
  model_parameters = {}
304
387
  model_parameters = solara.use_reactive(model_parameters)
305
-
306
- async def step():
307
- while playing.value and running.value:
308
- await asyncio.sleep(play_interval.value / 1000)
309
- do_step()
388
+ visualization_pause_event = solara.use_memo(lambda: threading.Event(), [])
389
+ pause_step_event = solara.use_memo(lambda: threading.Event(), [])
390
+
391
+ error_message = solara.use_reactive(None)
392
+
393
+ def step():
394
+ try:
395
+ while running.value and playing.value:
396
+ time.sleep(play_interval.value / 1000)
397
+ if use_threads.value:
398
+ pause_step_event.wait()
399
+ pause_step_event.clear()
400
+ do_step()
401
+ if use_threads.value:
402
+ visualization_pause_event.set()
403
+ except Exception as e:
404
+ error_message.value = f"error in step: {e}"
405
+ traceback.print_exc()
406
+
407
+ def visualization_task():
408
+ if use_threads.value:
409
+ try:
410
+ loop = asyncio.new_event_loop()
411
+ asyncio.set_event_loop(loop)
412
+ pause_step_event.set()
413
+ while playing.value and running.value:
414
+ visualization_pause_event.wait()
415
+ visualization_pause_event.clear()
416
+ force_update()
417
+ pause_step_event.set()
418
+ except Exception as e:
419
+ error_message.value = f"error in visualization: {e}"
420
+ traceback.print_exc()
421
+ return
310
422
 
311
423
  solara.lab.use_task(
312
424
  step, dependencies=[playing.value, running.value], prefer_threaded=False
313
425
  )
426
+ solara.lab.use_task(visualization_task, dependencies=[playing.value])
314
427
 
315
428
  def do_step():
316
429
  """Advance the model by the number of steps specified by the render_interval slider."""
317
- simulator.run_for(render_interval.value)
318
- running.value = model.value.running
319
- force_update()
430
+ if playing.value:
431
+ for _ in range(render_interval.value):
432
+ simulator.run_for(1)
433
+ running.value = model.value.running
434
+ if not playing.value:
435
+ break
436
+ if not use_threads.value:
437
+ force_update()
438
+
439
+ else:
440
+ for _ in range(render_interval.value):
441
+ simulator.run_for(1)
442
+ running.value = model.value.running
443
+ force_update()
320
444
 
321
445
  def do_reset():
322
446
  """Reset the model to its initial state."""
447
+ error_message.set(None)
323
448
  playing.value = False
324
449
  running.value = True
325
450
  simulator.reset()
451
+ visualization_pause_event.clear()
452
+ pause_step_event.clear()
326
453
  model.value = model.value = model.value.__class__(
327
454
  simulator=simulator, **model_parameters.value
328
455
  )
@@ -345,6 +472,8 @@ def SimulatorController(
345
472
  on_click=do_step,
346
473
  disabled=playing.value or not running.value,
347
474
  )
475
+ if error_message.value:
476
+ solara.Error(label=error_message.value)
348
477
 
349
478
 
350
479
  def split_model_params(model_params):
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Mesa
3
- Version: 3.1.5
3
+ Version: 3.2.0
4
4
  Summary: Agent-based modeling (ABM) in Python
5
5
  Project-URL: homepage, https://github.com/projectmesa/mesa
6
6
  Project-URL: repository, https://github.com/projectmesa/mesa
7
- Author-email: Project Mesa Team <projectmesa@googlegroups.com>
7
+ Author-email: Project Mesa Team <maintainers@projectmesa.dev>
8
8
  License: Apache 2.0
9
9
  License-File: LICENSE
10
10
  License-File: NOTICE
@@ -87,12 +87,13 @@ Description-Content-Type: text/markdown
87
87
 
88
88
  # Mesa: Agent-based modeling in Python
89
89
 
90
- | | |
91
- | --- | --- |
92
- | CI/CD | [![GitHub Actions build status](https://github.com/projectmesa/mesa/workflows/build/badge.svg)](https://github.com/projectmesa/mesa/actions) [![Coverage status](https://codecov.io/gh/projectmesa/mesa/branch/main/graph/badge.svg)](https://codecov.io/gh/projectmesa/mesa) |
90
+ | | |
91
+ |---------| --- |
92
+ | CI/CD | [![GitHub Actions build status](https://github.com/projectmesa/mesa/workflows/build/badge.svg)](https://github.com/projectmesa/mesa/actions) [![Coverage status](https://codecov.io/gh/projectmesa/mesa/branch/main/graph/badge.svg)](https://codecov.io/gh/projectmesa/mesa) |
93
93
  | Package | [![PyPI - Version](https://img.shields.io/pypi/v/mesa.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/Mesa/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/mesa.svg?color=blue&label=Downloads&logo=pypi&logoColor=gold)](https://pypi.org/project/Mesa/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mesa.svg?logo=python&label=Python&logoColor=gold)](https://pypi.org/project/Mesa/) |
94
- | Meta | [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![SPEC 0 — Minimum Supported Dependencies](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0000/) |
95
- | Chat | [![chat](https://img.shields.io/matrix/project-mesa:matrix.org?label=chat&logo=Matrix)](https://matrix.to/#/#project-mesa:matrix.org) |
94
+ | Meta | [![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Hatch project](https://img.shields.io/badge/%F0%9F%A5%9A-Hatch-4051b5.svg)](https://github.com/pypa/hatch) [![SPEC 0 — Minimum Supported Dependencies](https://img.shields.io/badge/SPEC-0-green?labelColor=%23004811&color=%235CA038)](https://scientific-python.org/specs/spec-0000/) |
95
+ | Chat | [![chat](https://img.shields.io/matrix/project-mesa:matrix.org?label=chat&logo=Matrix)](https://matrix.to/#/#project-mesa:matrix.org) |
96
+ | Cite | [![DOI](https://joss.theoj.org/papers/10.21105/joss.07668/status.svg)](https://doi.org/10.21105/joss.07668) |
96
97
 
97
98
  Mesa allows users to quickly create agent-based models using built-in
98
99
  core components (such as spatial grids and agent schedulers) or
@@ -220,4 +221,7 @@ Don't forget to checkout the [Contributors guide](https://github.com/projectmesa
220
221
 
221
222
  ## Citing Mesa
222
223
 
223
- To cite Mesa in your publication, you can use the [CITATION.bib](https://github.com/projectmesa/mesa/blob/main/CITATION.bib).
224
+ To cite Mesa in your publication, you can refer to our peer-reviewed article in the Journal of Open Source Software (JOSS):
225
+ - ter Hoeven, E., Kwakkel, J., Hess, V., Pike, T., Wang, B., rht, & Kazil, J. (2025). Mesa 3: Agent-based modeling with Python in 2025. Journal of Open Source Software, 10(107), 7668. https://doi.org/10.21105/joss.07668
226
+
227
+ Our [CITATION.cff](https://github.com/projectmesa/mesa/blob/main/CITATION.cff) can be used to generate APA, BibTeX and other citation formats.
@@ -0,0 +1,105 @@
1
+ mesa/__init__.py,sha256=9HiqFLLUwxZzkQCGvh20H3HSVBaJGB8CVC3-SHYMaEA,678
2
+ mesa/agent.py,sha256=7WOqjzlLh_Lkmp_-sFnUGbRD69AZpAharCINfIo66Ow,26684
3
+ mesa/batchrunner.py,sha256=ZeBOQw6-SLnECMUyKSRThh7vecP0DV6F6fGGk8UAboA,8041
4
+ mesa/datacollection.py,sha256=vxW0KEmx6BHMM6SnKrRJJr7Eb_siGLyofwuyN8pSWXg,18483
5
+ mesa/mesa_logging.py,sha256=PEDqUaQ2Y4bkYBkrHVkGT0sF86gUdbSH1T3vCg3qQeE,4949
6
+ mesa/model.py,sha256=8QZoE8Dy-S7MGznhoeHHT1S8VeUh-UbzcBroJqlXkRY,8365
7
+ mesa/space.py,sha256=g57TiwmMCRZLwDqgaHzQfSjF1wNE6oNi4rUjzeQ9E6g,63792
8
+ mesa/discrete_space/__init__.py,sha256=wXVr3eUpJAK-Y9DRlsQxhnQAxWLsrA7X6X9QhukDyTI,1672
9
+ mesa/discrete_space/cell.py,sha256=lok80RMnby09pxbJA631v14XmrfObwxfpw8EOkcwzao,7222
10
+ mesa/discrete_space/cell_agent.py,sha256=jSGP0xLVgdAx434piwQ9cQqUnPQSlFtJkiDibPWKXe0,4253
11
+ mesa/discrete_space/cell_collection.py,sha256=4yFImIijwCdFoHu3h6k8SEjn8yaSq5NGEEJsSMp-yR0,4698
12
+ mesa/discrete_space/discrete_space.py,sha256=6axHN04oX8OUKYrq2NbGPBeymiZKQXMDW2Fefa5w8pE,6555
13
+ mesa/discrete_space/grid.py,sha256=HEakDqB8mzS21PpCjcgUx2JBJTID5Ji82xmXLZ3wOr0,10408
14
+ mesa/discrete_space/network.py,sha256=Qa29Uj1bEuMrvN9xg0oizaCM-daALjWjqr2z4nPPqFY,2598
15
+ mesa/discrete_space/property_layer.py,sha256=8W6CsB-CtB5m1kncysS7hFG2Vf6lbCrSOsyJrVMDpYs,16755
16
+ mesa/discrete_space/voronoi.py,sha256=DtJPmHHRVccBc73U1QvUSUCdjN55SGOJ5FL-GjoELMk,10181
17
+ mesa/examples/README.md,sha256=yJumn3Go4nh1oZgTUlqFGMTRYAcTnIPp-jmLFK0Mlws,3261
18
+ mesa/examples/__init__.py,sha256=UGZF04lEg5NtEumSYKgaXxKdh5BA8ixFqW9pO0omMv0,940
19
+ mesa/examples/advanced/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ mesa/examples/advanced/alliance_formation/Readme.md,sha256=A0pNRDNleAYxFbcWVHf7n3R_qsdNCLmK6NOnDXzcUTc,3223
21
+ mesa/examples/advanced/alliance_formation/__init__ .py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ mesa/examples/advanced/alliance_formation/agents.py,sha256=EQubhQX8yjhSD1OYyL4t9CfoTQ-8fJ78HH3kIsLdOwk,463
23
+ mesa/examples/advanced/alliance_formation/app.py,sha256=3nv4zctmSmP2CLnjbXvXlSi-gsz7jPLmwh_VFEPmBdU,2047
24
+ mesa/examples/advanced/alliance_formation/model.py,sha256=iMfb84uIA9s8ilfZKRLZlaGNrWeaqY1qS_gnd0rNq_o,7029
25
+ mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb,sha256=yh50ZAK2BVJyJIKsQTTxywnasqWn1IiQUVrwmZKue4w,29032
26
+ mesa/examples/advanced/epstein_civil_violence/Readme.md,sha256=RXuGIZAibz3KVkP51PGjwzcRx2R9Ettmh3qbDTPqDcg,1735
27
+ mesa/examples/advanced/epstein_civil_violence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ mesa/examples/advanced/epstein_civil_violence/agents.py,sha256=SMYKkKhNlMCXk-gmeakesxstqB-jpY44FtS8CiMl0l8,5854
29
+ mesa/examples/advanced/epstein_civil_violence/app.py,sha256=fFlPijAUDLs_WfROGIlUXRakkkfbWnytcXFTAzdRplU,1890
30
+ mesa/examples/advanced/epstein_civil_violence/model.py,sha256=_ds6Wrq2Zf66VSxamTN5gK8A3itHU5DEVcydA--hlkY,3909
31
+ mesa/examples/advanced/pd_grid/Readme.md,sha256=weEQe1qZBKUYBj3J3WyGbRHa5Ia1zje18SFctZm3esE,2242
32
+ mesa/examples/advanced/pd_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ mesa/examples/advanced/pd_grid/agents.py,sha256=giX63EUq3TzJt916dglTSMsdzkIdtyOmwSoj2ynUQ2c,1743
34
+ mesa/examples/advanced/pd_grid/analysis.ipynb,sha256=TTSY7mZlIYPjPjpW7cxr7Gzpo-NKKEBpXX4_f0V6NfI,5432
35
+ mesa/examples/advanced/pd_grid/app.py,sha256=-_fTP7f_oITKHt7dDVJou7Oa7u7v_C4Ml5yw7D1sbx8,1457
36
+ mesa/examples/advanced/pd_grid/model.py,sha256=2YrTVNVThIf0FH1vKbYef0IYeJiR8Ws6eepsH6UjMLQ,2282
37
+ mesa/examples/advanced/sugarscape_g1mt/Readme.md,sha256=_q52DMprCQGELsPCJ_jAJ6cFHBc8sE7L8WIa4a3LQPs,3535
38
+ mesa/examples/advanced/sugarscape_g1mt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ mesa/examples/advanced/sugarscape_g1mt/agents.py,sha256=foix7_00fFop6GLl5uEu1_bmeQ5oH04Fcc9-E06WWkk,8457
40
+ mesa/examples/advanced/sugarscape_g1mt/app.py,sha256=fg8ZXBoc4tPI9AfOLF0fgMk3Ey4H8xZu6tUaTwDp3Nk,1952
41
+ mesa/examples/advanced/sugarscape_g1mt/model.py,sha256=VwHaLuqrX8g6XP3wHw16Opu5vaW-kyL31pe7Mja-HvQ,5745
42
+ mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt,sha256=zZtGYciBPT4miZVnbVuoQ5TugTmGrbDWV9yb5KH6tnU,5000
43
+ mesa/examples/advanced/sugarscape_g1mt/tests.py,sha256=UNahmZTgLquSqmoi_9GcE3JP0qBHjkrHFZ15NMm0ce8,2517
44
+ mesa/examples/advanced/wolf_sheep/Readme.md,sha256=oLJSJ1o7WnExDWts8CRKyxVOMeCcp8rGZzvjufpnKZc,2736
45
+ mesa/examples/advanced/wolf_sheep/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ mesa/examples/advanced/wolf_sheep/agents.py,sha256=kqW8ITdFHtkMqF5auHoP0dHUbXk-rSMt4XI340NZ5Qg,5081
47
+ mesa/examples/advanced/wolf_sheep/app.py,sha256=MEoQzjSvXJC0ua_4okUZOucL0UnBfWRZ42ij4iQVMp4,2544
48
+ mesa/examples/advanced/wolf_sheep/model.py,sha256=mHmn5r9EdRtoOGSbubcKtlSBClKmjDIri8uhcokIeBE,4558
49
+ mesa/examples/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ mesa/examples/basic/boid_flockers/Readme.md,sha256=z4p0KZmVpH0JK2M-xnAZM7LSoRdjjR7qGe1OPOq2BzQ,873
51
+ mesa/examples/basic/boid_flockers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ mesa/examples/basic/boid_flockers/agents.py,sha256=oA0A0NilTHi0XYouYaNcMSmpKDdNYPwfS96FNqRuTUI,3309
53
+ mesa/examples/basic/boid_flockers/app.py,sha256=9Cf6f2Ctjz0yWYQHCKE2owBOmnIuXqkVkLIJz6hqGCc,1861
54
+ mesa/examples/basic/boid_flockers/model.py,sha256=RQh9GfsSPvshUQedlmEEjk1dJHuyL8o4VWiAamgH1EU,3551
55
+ mesa/examples/basic/boltzmann_wealth_model/Readme.md,sha256=tif1-GDqTGkSAYAYgMf3D3nxT3kYeZ3gCLPvuivQxsI,1956
56
+ mesa/examples/basic/boltzmann_wealth_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ mesa/examples/basic/boltzmann_wealth_model/agents.py,sha256=GF4mNEjqLS4Vg4vtdeDAetby_t69J-LcFhtQIMOBDNU,1330
58
+ mesa/examples/basic/boltzmann_wealth_model/app.py,sha256=GwyNQvwu0S5l7ASRTF70xE9ozjhtT1xAetWGlQmNtDk,2231
59
+ mesa/examples/basic/boltzmann_wealth_model/model.py,sha256=9d-x5Y2T49R4Pt1u7lY63Z0y8impZ2f47_ahrxohvaY,2828
60
+ mesa/examples/basic/boltzmann_wealth_model/st_app.py,sha256=PQ65LkYPXn-lx4lCfXuFJmzcmAfVB3oEEdIyuq9a7iU,3454
61
+ mesa/examples/basic/conways_game_of_life/Readme.md,sha256=SylexP0Owrq1n_v5mJJyqs3wFeKtOMB0pLh0oLDOcV8,1256
62
+ mesa/examples/basic/conways_game_of_life/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ mesa/examples/basic/conways_game_of_life/agents.py,sha256=pByQeucyW5UDBnl90xbRGJJNJHpM8NLuqSmft5AkVN0,1766
64
+ mesa/examples/basic/conways_game_of_life/app.py,sha256=HPzss2X3ntTOgdmg0C0EWw3lmAF7WiN9MZEgGdLW-xU,1997
65
+ mesa/examples/basic/conways_game_of_life/model.py,sha256=GGHg8Qni1R4RGQrfvJcsqG6btNTuQhCWOwS_9crU6tc,1269
66
+ mesa/examples/basic/conways_game_of_life/st_app.py,sha256=9qz3o0pOuvLZR-_aPPVHN-RIwFSNzvwWWfxCaD2K5cs,2402
67
+ mesa/examples/basic/schelling/Readme.md,sha256=LB1O3unI0a4fr2cOl3umnjeqozMfXQEVBsB45GoK1u8,1877
68
+ mesa/examples/basic/schelling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ mesa/examples/basic/schelling/agents.py,sha256=jyMzafsAhOTYOfl3rZgasYLhxW3YEHv3oOIh9Re3LmU,1517
70
+ mesa/examples/basic/schelling/analysis.ipynb,sha256=UMDoumvBFhZilwJhxl5Mou2bmDDqxguK5RdnoY2gkNc,5910
71
+ mesa/examples/basic/schelling/app.py,sha256=eqgqCu6_6jk1RrmT82e_AoEDMvy8eZ0OJnnlITpiBXQ,1067
72
+ mesa/examples/basic/schelling/model.py,sha256=dUfQ4bG-nqvYPSUcLNSI7LOTfs8IxTbVi_Clj8y2rS8,2712
73
+ mesa/examples/basic/virus_on_network/Readme.md,sha256=h3yGmF9Jl7rCuRGnXJoPqxQPs9Nr-KCMIGs3l8JYQG8,2197
74
+ mesa/examples/basic/virus_on_network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ mesa/examples/basic/virus_on_network/agents.py,sha256=yVPZCiKI53qXlsUus3vdNZ39IG0cLoY2wQXeYZHiahs,1814
76
+ mesa/examples/basic/virus_on_network/app.py,sha256=8I8VWQ7pBcOaNGyLDEO4IbNSTRy161-eWg-iEUVQ3-I,2553
77
+ mesa/examples/basic/virus_on_network/model.py,sha256=sljdQlTPeUCbmWSxnCJJv706lN3uVMF8pS1gAMNHreM,2543
78
+ mesa/experimental/__init__.py,sha256=9q6lv_NDYoWuKBzBzMdbisdxvzA-T5L6xT8quSArNT4,945
79
+ mesa/experimental/cell_space/__init__.py,sha256=IOXd0RcJP34kaHvEHv_AeN7PGpvoYPpaZYsx3Mz8dNo,1872
80
+ mesa/experimental/continuous_space/__init__.py,sha256=JkCkL4zZpe8c0GHqw4huM2-uoGOYqrCyt7J1M454kFA,269
81
+ mesa/experimental/continuous_space/continuous_space.py,sha256=UcD-nsi5oEAJzf8ZI7BU26FYn6DdJzsW-dgXqaZIrQk,9530
82
+ mesa/experimental/continuous_space/continuous_space_agents.py,sha256=859ypIiWMgjknTsER0i8Y6aCWjMpw6MC5cfoKa6l_iA,3044
83
+ mesa/experimental/devs/__init__.py,sha256=wkDrpqQ3qHGqrsOSTD-UOj-qOw0oFgnCw_ZXr9xFs90,1200
84
+ mesa/experimental/devs/eventlist.py,sha256=6igPkHJt-syLcdpFV14_n6HGej2F1cM9giDQo85fHPw,7217
85
+ mesa/experimental/devs/simulator.py,sha256=UiVRIlNodSIveD2mS_8-vj0T_FulU8vhXxSxCfsK1Vc,12991
86
+ mesa/experimental/mesa_signals/__init__.py,sha256=QjG4FSKQl5ZSzV9ctiaB7UqYDR3FARAyUc7HbGtQjX4,840
87
+ mesa/experimental/mesa_signals/mesa_signal.py,sha256=Vxo4gIV6a959MANL3RMANsGh0R9lkZTNO19XIYzvKSM,16860
88
+ mesa/experimental/mesa_signals/observable_collections.py,sha256=rHEj6BYxLHFFGzSdoDKAdtzJ6y-IHHfcP3qEDJJsY6Y,3917
89
+ mesa/experimental/mesa_signals/signals_util.py,sha256=fmq_FsIxsIvGjtmc4A9TGdBUtdliMHhEOpjRXivRDjA,1618
90
+ mesa/experimental/meta_agents/__init__.py,sha256=UpX_1WpmXtg4iKdPTcPVViCt1H9fRydA-l3a6i4KR1w,949
91
+ mesa/experimental/meta_agents/meta_agent.py,sha256=v9a09hU3kgKQdgjk5v5DDOaRCqEh_A8Xhzu9V185kZU,14801
92
+ mesa/visualization/__init__.py,sha256=h7YZnBUNrgiK5KbIikPIdQgn6KusmgiDh7tMql8Q39Y,730
93
+ mesa/visualization/command_console.py,sha256=-sVNYdXxmc5diQyqfFHUByzVSOpP3eoPcdLL2J6gwD4,17086
94
+ mesa/visualization/mpl_space_drawing.py,sha256=axIaq7MTaYIb_-ME2z5TbXufREl9jgFLebZSredyfwA,22956
95
+ mesa/visualization/solara_viz.py,sha256=coG5o0A5iCOBIqzsrlUG_S2rYrTcOYubESzj4zcW-ro,26274
96
+ mesa/visualization/user_param.py,sha256=Dl2WOwLYLf0pfLpabCZtIdFRyKZrK6Qtc3utZx5GPYg,2139
97
+ mesa/visualization/utils.py,sha256=lJHgRKF5BHLf72Tw3YpwyiWuRoIimaTKQ7xBCw_Rx3A,146
98
+ mesa/visualization/components/__init__.py,sha256=Bq3nrPikcaIo9BSs0O3zptWVLlUmAkLo3s0mEmpH1RE,3022
99
+ mesa/visualization/components/altair_components.py,sha256=cSce9_QNaJ5EF6sZ8tu2cZ4NIczocKfjdRCxiC8w0fY,16164
100
+ mesa/visualization/components/matplotlib_components.py,sha256=xQETaFyHIfmL_9JwrLIgubuIQ7-pp7TMoXT1WMmozus,5441
101
+ mesa-3.2.0.dist-info/METADATA,sha256=cpk4OAHWsBqmvJeeHOPy5W1-hy3PqmcE8khaU5af4EA,10700
102
+ mesa-3.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
103
+ mesa-3.2.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
104
+ mesa-3.2.0.dist-info/licenses/NOTICE,sha256=GbsWoK0QWv1JyZ_xer2s-jNilv0RtWl-0UrtlJANHPg,578
105
+ mesa-3.2.0.dist-info/RECORD,,
@@ -1,96 +0,0 @@
1
- mesa/__init__.py,sha256=GhG2LX8PxjjqywkipcK1yI9TMrGbX9CYuyNMGeaLT28,611
2
- mesa/agent.py,sha256=4CXMOFA9KhvTypaV_OHZGqxOR4GVwyX4x8DOtQENUQA,26130
3
- mesa/batchrunner.py,sha256=ZeBOQw6-SLnECMUyKSRThh7vecP0DV6F6fGGk8UAboA,8041
4
- mesa/datacollection.py,sha256=vxW0KEmx6BHMM6SnKrRJJr7Eb_siGLyofwuyN8pSWXg,18483
5
- mesa/mesa_logging.py,sha256=PEDqUaQ2Y4bkYBkrHVkGT0sF86gUdbSH1T3vCg3qQeE,4949
6
- mesa/model.py,sha256=VkdBea_mkWcBMxMq-pwuU23UlI1gbG4TOIyqkBfeiFo,8354
7
- mesa/space.py,sha256=MNCblKf862pdkoIAa-VpjaurmI8GJtb02W3q3QWFjTE,64458
8
- mesa/examples/README.md,sha256=TSVX0wD5C2iNAWW8OE0gl3SBZqxooJopmGKTk-7Fj2k,3262
9
- mesa/examples/__init__.py,sha256=pyPWFRUxyYtQilJECbH7LY1eYBk8VB0Yg-_SbFEEvFA,825
10
- mesa/examples/advanced/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb,sha256=yh50ZAK2BVJyJIKsQTTxywnasqWn1IiQUVrwmZKue4w,29032
12
- mesa/examples/advanced/epstein_civil_violence/Readme.md,sha256=RXuGIZAibz3KVkP51PGjwzcRx2R9Ettmh3qbDTPqDcg,1735
13
- mesa/examples/advanced/epstein_civil_violence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- mesa/examples/advanced/epstein_civil_violence/agents.py,sha256=0X4JLj2K2cl1bACkFLI6-K6tKbr2SLZlAy_kjgUDjzA,5863
15
- mesa/examples/advanced/epstein_civil_violence/app.py,sha256=fFlPijAUDLs_WfROGIlUXRakkkfbWnytcXFTAzdRplU,1890
16
- mesa/examples/advanced/epstein_civil_violence/model.py,sha256=fcTkjCRhEhDerDC1W_lrezdoWD1y5xIublkGIhCak8w,3918
17
- mesa/examples/advanced/pd_grid/Readme.md,sha256=UVUQxZRFdfymCKDdQEn3ZEwgSqgp9cKJPsU8oZpLFnY,2367
18
- mesa/examples/advanced/pd_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- mesa/examples/advanced/pd_grid/agents.py,sha256=8JnezmnwxjcqAUAgXa1iWls0Nz4yBS-TJi1TSVcHbqM,1752
20
- mesa/examples/advanced/pd_grid/analysis.ipynb,sha256=TTSY7mZlIYPjPjpW7cxr7Gzpo-NKKEBpXX4_f0V6NfI,5432
21
- mesa/examples/advanced/pd_grid/app.py,sha256=-_fTP7f_oITKHt7dDVJou7Oa7u7v_C4Ml5yw7D1sbx8,1457
22
- mesa/examples/advanced/pd_grid/model.py,sha256=-ytTSW0a_TQGTQW02k7XKAMiMak_b2XkJUw5kkGNHMQ,2291
23
- mesa/examples/advanced/sugarscape_g1mt/Readme.md,sha256=x3kKw1Rre2FPkNhGDLtdzeThmH089mxsGYUPZUeu26k,3595
24
- mesa/examples/advanced/sugarscape_g1mt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- mesa/examples/advanced/sugarscape_g1mt/agents.py,sha256=ugTNvWjQNm_jMInv9d0sOIFaChIDs-TWazN78YrDP9g,8466
26
- mesa/examples/advanced/sugarscape_g1mt/app.py,sha256=fg8ZXBoc4tPI9AfOLF0fgMk3Ey4H8xZu6tUaTwDp3Nk,1952
27
- mesa/examples/advanced/sugarscape_g1mt/model.py,sha256=s4n9SRaaMNY9CXFtry83BELZU69UJOCa4DMrw_eehr4,5763
28
- mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt,sha256=zZtGYciBPT4miZVnbVuoQ5TugTmGrbDWV9yb5KH6tnU,5000
29
- mesa/examples/advanced/sugarscape_g1mt/tests.py,sha256=UNahmZTgLquSqmoi_9GcE3JP0qBHjkrHFZ15NMm0ce8,2517
30
- mesa/examples/advanced/wolf_sheep/Readme.md,sha256=6zrtCg4Fb-hgQxqdLMpTkIYMwD6owCv8BMz_qn0N98Q,3165
31
- mesa/examples/advanced/wolf_sheep/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- mesa/examples/advanced/wolf_sheep/agents.py,sha256=lxk9nxDaIGxB7zJ0pIOF2PfOAee8lX-vG447Cklt7UQ,5090
33
- mesa/examples/advanced/wolf_sheep/app.py,sha256=IIl-gDh1O3oYIvrXXGmKHbW5Iw3ZpCn691dGwKgyI3E,2508
34
- mesa/examples/advanced/wolf_sheep/model.py,sha256=IUN1STm6jCGuzXo2sCF86r1U-dI63yhLhnI14tu9BSw,4567
35
- mesa/examples/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- mesa/examples/basic/boid_flockers/Readme.md,sha256=4KJinsLPtUciQSMzvaX3tU5r1HTUg3AFOFDKy73W5RE,894
37
- mesa/examples/basic/boid_flockers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- mesa/examples/basic/boid_flockers/agents.py,sha256=f9IpVMpuo6WPtMffLOqgKsxoG4syJt8-k9Njvh4fMN8,3232
39
- mesa/examples/basic/boid_flockers/app.py,sha256=5y52V_PRENzNGkmV_-KB5ZQeUN589i1ntJW-AIgZD0s,1323
40
- mesa/examples/basic/boid_flockers/model.py,sha256=hgYScacUAv6Yq240al41r9Iv3Iqbn4wfFVQEHyorJ3c,2981
41
- mesa/examples/basic/boltzmann_wealth_model/Readme.md,sha256=wl1ylO9KWoTiuIJKOnk2FGdcmyVUqJ5wiSbVUa3WWAc,2725
42
- mesa/examples/basic/boltzmann_wealth_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- mesa/examples/basic/boltzmann_wealth_model/agents.py,sha256=Jol2aspw--UtQn0EiReXVmlWtzpdC2o_YUTAyu1sDk4,1546
44
- mesa/examples/basic/boltzmann_wealth_model/app.py,sha256=wTQBu9A3uscTZSPqZ5jYssykGPiseye2YBjMngYI48A,2233
45
- mesa/examples/basic/boltzmann_wealth_model/model.py,sha256=ED4EFHJlrrcF12WYOEpXpPt5asK2T6uzpq_S97EtfHo,2941
46
- mesa/examples/basic/boltzmann_wealth_model/st_app.py,sha256=PQ65LkYPXn-lx4lCfXuFJmzcmAfVB3oEEdIyuq9a7iU,3454
47
- mesa/examples/basic/conways_game_of_life/Readme.md,sha256=VRgN6roF6leQ_IMYwxFypSfFjZo9jnCd-rkPTjpp7II,1453
48
- mesa/examples/basic/conways_game_of_life/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- mesa/examples/basic/conways_game_of_life/agents.py,sha256=ETn87GV8it9p0nlSn6f1qu5CDEmqokkr6Rq7KWaT-5U,1627
50
- mesa/examples/basic/conways_game_of_life/app.py,sha256=HPzss2X3ntTOgdmg0C0EWw3lmAF7WiN9MZEgGdLW-xU,1997
51
- mesa/examples/basic/conways_game_of_life/model.py,sha256=8L88m8F_YauwWeDef6UA2myQoAwC0B5sH5jsfyLn-u8,1221
52
- mesa/examples/basic/conways_game_of_life/st_app.py,sha256=9qz3o0pOuvLZR-_aPPVHN-RIwFSNzvwWWfxCaD2K5cs,2402
53
- mesa/examples/basic/schelling/Readme.md,sha256=CRKBfYtnLJLlTKLsTRQ-7gsQRxVxDooOBN5uP8PEtaU,2296
54
- mesa/examples/basic/schelling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- mesa/examples/basic/schelling/agents.py,sha256=WdDM-BYeOUuIL_2U5rlZz4Rs_5orstHY2Z6G6zvQEyg,1224
56
- mesa/examples/basic/schelling/analysis.ipynb,sha256=UMDoumvBFhZilwJhxl5Mou2bmDDqxguK5RdnoY2gkNc,5910
57
- mesa/examples/basic/schelling/app.py,sha256=eqgqCu6_6jk1RrmT82e_AoEDMvy8eZ0OJnnlITpiBXQ,1067
58
- mesa/examples/basic/schelling/model.py,sha256=ZNTK42pJnIJfsnqaI0ZXFxw9xtWPXkUMIemMr4uXmW8,2766
59
- mesa/examples/basic/virus_on_network/Readme.md,sha256=qmXGx4Fo0tRBvJiiJ684bkWJPn2gcFaiikLwgc5APWI,2336
60
- mesa/examples/basic/virus_on_network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- mesa/examples/basic/virus_on_network/agents.py,sha256=a_WhqYblJlW6od67eXfU-nb7IMRyYpgxtf0le--VYoA,1975
62
- mesa/examples/basic/virus_on_network/app.py,sha256=8I8VWQ7pBcOaNGyLDEO4IbNSTRy161-eWg-iEUVQ3-I,2553
63
- mesa/examples/basic/virus_on_network/model.py,sha256=jQoCmvygwCvhUrlL0l7V8GcDLv94CgwtuK7DDGU8q8g,2813
64
- mesa/experimental/__init__.py,sha256=hSGXGvsVANvqhgA994HcLBLIRC2WhSF3e_w2gvoCMUo,943
65
- mesa/experimental/cell_space/__init__.py,sha256=0A3YTen0Lk-e3Q73VEXK7N2UEHb9f50gW11H_jx7DXc,1744
66
- mesa/experimental/cell_space/cell.py,sha256=Dl0ek7W_vgAZOp6zXBvkwYTG7E36OQ-4zZ5bW43mKtw,6600
67
- mesa/experimental/cell_space/cell_agent.py,sha256=LOTLKR2To9hU-igKsauA5sikS7k8wgwlt-Pi0C7lGU0,4262
68
- mesa/experimental/cell_space/cell_collection.py,sha256=VnD3I4bqnwgFxKSzTElYYJIBFJGdaEaNTggrbFKgPrc,4715
69
- mesa/experimental/cell_space/discrete_space.py,sha256=qNGez9SV4E83Outs_12suuS0ZtTHcwyv6ZB1xzTXUWk,3846
70
- mesa/experimental/cell_space/grid.py,sha256=VTPjqzryAX6I9EunuqSvZvYD2zHznlt6Ct7HXQ_7STQ,10426
71
- mesa/experimental/cell_space/network.py,sha256=ujN2dV1i9hcXh6H0s7gwTuPT6gh7BCaziOUYPCybQKk,1862
72
- mesa/experimental/cell_space/property_layer.py,sha256=HFpBWOjI7PFU_K8VDb_pl9h62MftCBWL7PUKQNT3Ke8,17379
73
- mesa/experimental/cell_space/voronoi.py,sha256=FXJD8ci81Jil3FaL7ZFNfMPGvXvg3uym5Ooo1ZqKSKs,10199
74
- mesa/experimental/continuous_space/__init__.py,sha256=JkCkL4zZpe8c0GHqw4huM2-uoGOYqrCyt7J1M454kFA,269
75
- mesa/experimental/continuous_space/continuous_space.py,sha256=UcD-nsi5oEAJzf8ZI7BU26FYn6DdJzsW-dgXqaZIrQk,9530
76
- mesa/experimental/continuous_space/continuous_space_agents.py,sha256=859ypIiWMgjknTsER0i8Y6aCWjMpw6MC5cfoKa6l_iA,3044
77
- mesa/experimental/devs/__init__.py,sha256=wkDrpqQ3qHGqrsOSTD-UOj-qOw0oFgnCw_ZXr9xFs90,1200
78
- mesa/experimental/devs/eventlist.py,sha256=6igPkHJt-syLcdpFV14_n6HGej2F1cM9giDQo85fHPw,7217
79
- mesa/experimental/devs/simulator.py,sha256=UiVRIlNodSIveD2mS_8-vj0T_FulU8vhXxSxCfsK1Vc,12991
80
- mesa/experimental/mesa_signals/__init__.py,sha256=QjG4FSKQl5ZSzV9ctiaB7UqYDR3FARAyUc7HbGtQjX4,840
81
- mesa/experimental/mesa_signals/mesa_signal.py,sha256=Vxo4gIV6a959MANL3RMANsGh0R9lkZTNO19XIYzvKSM,16860
82
- mesa/experimental/mesa_signals/observable_collections.py,sha256=rHEj6BYxLHFFGzSdoDKAdtzJ6y-IHHfcP3qEDJJsY6Y,3917
83
- mesa/experimental/mesa_signals/signals_util.py,sha256=fmq_FsIxsIvGjtmc4A9TGdBUtdliMHhEOpjRXivRDjA,1618
84
- mesa/visualization/__init__.py,sha256=wnafHqOc7q-niu8HDOLwcmwuYu5BuvdjLTHmfpyXAoA,664
85
- mesa/visualization/mpl_space_drawing.py,sha256=9byWxbKHVVT5GLmu-6U0qVFddThEag612JBGYmZiWps,22686
86
- mesa/visualization/solara_viz.py,sha256=AoMVDdjMc99qCClAvsFXg-jBNPaDF5kfIhXa5Hd57MA,21052
87
- mesa/visualization/user_param.py,sha256=Dl2WOwLYLf0pfLpabCZtIdFRyKZrK6Qtc3utZx5GPYg,2139
88
- mesa/visualization/utils.py,sha256=lJHgRKF5BHLf72Tw3YpwyiWuRoIimaTKQ7xBCw_Rx3A,146
89
- mesa/visualization/components/__init__.py,sha256=Bq3nrPikcaIo9BSs0O3zptWVLlUmAkLo3s0mEmpH1RE,3022
90
- mesa/visualization/components/altair_components.py,sha256=7OdVdZOvAx4p3j6iux6FqUYrWT0OADBIhFGf6EeGcb4,6071
91
- mesa/visualization/components/matplotlib_components.py,sha256=xQETaFyHIfmL_9JwrLIgubuIQ7-pp7TMoXT1WMmozus,5441
92
- mesa-3.1.5.dist-info/METADATA,sha256=53ulsosj9Q4C7l43NSV8ZLN_Y9a7KGCFTPM_ayHcYTA,10197
93
- mesa-3.1.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
94
- mesa-3.1.5.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
95
- mesa-3.1.5.dist-info/licenses/NOTICE,sha256=GbsWoK0QWv1JyZ_xer2s-jNilv0RtWl-0UrtlJANHPg,578
96
- mesa-3.1.5.dist-info/RECORD,,
File without changes