Mesa 3.0.1__py3-none-any.whl → 3.0.2__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.

Potentially problematic release.


This version of Mesa might be problematic. Click here for more details.

mesa/__init__.py CHANGED
@@ -24,7 +24,7 @@ __all__ = [
24
24
  ]
25
25
 
26
26
  __title__ = "mesa"
27
- __version__ = "3.0.1"
27
+ __version__ = "3.0.2"
28
28
  __license__ = "Apache 2.0"
29
29
  _this_year = datetime.datetime.now(tz=datetime.timezone.utc).date().year
30
30
  __copyright__ = f"Copyright {_this_year} Project Mesa Team"
@@ -8,14 +8,12 @@ The model generates mass uprising as self-reinforcing processes: if enough agent
8
8
 
9
9
  ## How to Run
10
10
 
11
- To run the model interactively, run ``EpsteinCivilViolenceServer.py`` in this directory. e.g.
11
+ To run the model interactively, in this directory, run the following command
12
12
 
13
13
  ```
14
- $ python EpsteinCivilViolenceServer.py
14
+ $ solara run app.py
15
15
  ```
16
16
 
17
- Then open your browser to [http://127.0.0.1:8521/](http://127.0.0.1:8521/) and press Reset, then Run.
18
-
19
17
  ## Files
20
18
 
21
19
  * ``model.py``: Core model code.
@@ -4,7 +4,7 @@ from matplotlib.figure import Figure
4
4
 
5
5
  from mesa.examples.advanced.sugarscape_g1mt.agents import Trader
6
6
  from mesa.examples.advanced.sugarscape_g1mt.model import SugarscapeG1mt
7
- from mesa.visualization import SolaraViz, make_plot_component
7
+ from mesa.visualization import Slider, SolaraViz, make_plot_component
8
8
 
9
9
 
10
10
  def SpaceDrawer(model):
@@ -49,13 +49,29 @@ def SpaceDrawer(model):
49
49
  model_params = {
50
50
  "width": 50,
51
51
  "height": 50,
52
+ # Population parameters
53
+ "initial_population": Slider(
54
+ "Initial Population", value=200, min=50, max=500, step=10
55
+ ),
56
+ # Agent endowment parameters
57
+ "endowment_min": Slider("Min Initial Endowment", value=25, min=5, max=30, step=1),
58
+ "endowment_max": Slider("Max Initial Endowment", value=50, min=30, max=100, step=1),
59
+ # Metabolism parameters
60
+ "metabolism_min": Slider("Min Metabolism", value=1, min=1, max=3, step=1),
61
+ "metabolism_max": Slider("Max Metabolism", value=5, min=3, max=8, step=1),
62
+ # Vision parameters
63
+ "vision_min": Slider("Min Vision", value=1, min=1, max=3, step=1),
64
+ "vision_max": Slider("Max Vision", value=5, min=3, max=8, step=1),
65
+ # Trade parameter
66
+ "enable_trade": {"type": "Checkbox", "value": True, "label": "Enable Trading"},
52
67
  }
53
68
 
54
- model1 = SugarscapeG1mt(50, 50)
69
+ model1 = SugarscapeG1mt()
55
70
 
56
71
  page = SolaraViz(
57
72
  model1,
58
73
  components=[SpaceDrawer, make_plot_component(["Trader", "Price"])],
74
+ model_params=model_params,
59
75
  name="Sugarscape {G1, M, T}",
60
76
  play_interval=150,
61
77
  )
@@ -83,7 +83,7 @@ lineplot_component = make_plot_component(
83
83
  )
84
84
 
85
85
  simulator = ABMSimulator()
86
- model = WolfSheep(simulator, grass=True)
86
+ model = WolfSheep(simulator=simulator, grass=True)
87
87
 
88
88
  page = SolaraViz(
89
89
  model,
@@ -54,13 +54,14 @@ class Boid(Agent):
54
54
  self.cohere_factor = cohere
55
55
  self.separate_factor = separate
56
56
  self.match_factor = match
57
+ self.neighbors = []
57
58
 
58
59
  def step(self):
59
60
  """Get the Boid's neighbors, compute the new vector, and move accordingly."""
60
- neighbors = self.model.space.get_neighbors(self.pos, self.vision, False)
61
+ self.neighbors = self.model.space.get_neighbors(self.pos, self.vision, False)
61
62
 
62
63
  # If no neighbors, maintain current direction
63
- if not neighbors:
64
+ if not self.neighbors:
64
65
  new_pos = self.pos + self.direction * self.speed
65
66
  self.model.space.move_agent(self, new_pos)
66
67
  return
@@ -71,7 +72,7 @@ class Boid(Agent):
71
72
  separation_vector = np.zeros(2) # Separation vector
72
73
 
73
74
  # Calculate the contribution of each neighbor to the three behaviors
74
- for neighbor in neighbors:
75
+ for neighbor in self.neighbors:
75
76
  heading = self.model.space.get_heading(self.pos, neighbor.pos)
76
77
  distance = self.model.space.get_distance(self.pos, neighbor.pos)
77
78
 
@@ -86,7 +87,7 @@ class Boid(Agent):
86
87
  match_vector += neighbor.direction
87
88
 
88
89
  # Weight each behavior by its factor and normalize by number of neighbors
89
- n = len(neighbors)
90
+ n = len(self.neighbors)
90
91
  cohere = cohere * self.cohere_factor
91
92
  separation_vector = separation_vector * self.separate_factor
92
93
  match_vector = match_vector * self.match_factor
@@ -3,10 +3,7 @@ from mesa.visualization import Slider, SolaraViz, make_space_component
3
3
 
4
4
 
5
5
  def boid_draw(agent):
6
- if not agent.neighbors: # Only for the first Frame
7
- neighbors = len(agent.model.space.get_neighbors(agent.pos, agent.vision, False))
8
- else:
9
- neighbors = len(agent.neighbors)
6
+ neighbors = len(agent.neighbors)
10
7
 
11
8
  if neighbors <= 1:
12
9
  return {"color": "red", "size": 20}
@@ -51,7 +48,7 @@ model = BoidFlockers()
51
48
 
52
49
  page = SolaraViz(
53
50
  model,
54
- [make_space_component(agent_portrayal=boid_draw, backend="matplotlib")],
51
+ components=[make_space_component(agent_portrayal=boid_draw, backend="matplotlib")],
55
52
  model_params=model_params,
56
53
  name="Boid Flocking Model",
57
54
  )
@@ -20,12 +20,34 @@ def post_process(ax):
20
20
 
21
21
 
22
22
  model_params = {
23
- "width": 50,
24
- "height": 50,
23
+ "width": {
24
+ "type": "SliderInt",
25
+ "value": 50,
26
+ "label": "Width",
27
+ "min": 5,
28
+ "max": 60,
29
+ "step": 1,
30
+ },
31
+ "height": {
32
+ "type": "SliderInt",
33
+ "value": 50,
34
+ "label": "Height",
35
+ "min": 5,
36
+ "max": 60,
37
+ "step": 1,
38
+ },
39
+ "initial_fraction_alive": {
40
+ "type": "SliderFloat",
41
+ "value": 0.2,
42
+ "label": "Cells initially alive",
43
+ "min": 0,
44
+ "max": 1,
45
+ "step": 0.01,
46
+ },
25
47
  }
26
48
 
27
49
  # Create initial model instance
28
- model1 = ConwaysGameOfLife(50, 50)
50
+ model1 = ConwaysGameOfLife()
29
51
 
30
52
  # Create visualization elements. The visualization elements are solara components
31
53
  # that receive the model instance as a "prop" and display it in a certain way.
@@ -6,7 +6,7 @@ from mesa.space import SingleGrid
6
6
  class ConwaysGameOfLife(Model):
7
7
  """Represents the 2-dimensional array of cells in Conway's Game of Life."""
8
8
 
9
- def __init__(self, width=50, height=50, seed=None):
9
+ def __init__(self, width=50, height=50, initial_fraction_alive=0.2, seed=None):
10
10
  """Create a new playing area of (width, height) cells."""
11
11
  super().__init__(seed=seed)
12
12
  # Use a simple grid, where edges wrap around.
@@ -16,7 +16,7 @@ class ConwaysGameOfLife(Model):
16
16
  # ALIVE and some to DEAD.
17
17
  for _contents, (x, y) in self.grid.coord_iter():
18
18
  cell = Cell((x, y), self)
19
- if self.random.random() < 0.1:
19
+ if self.random.random() < initial_fraction_alive:
20
20
  cell.state = cell.ALIVE
21
21
  self.grid.place_agent(cell, (x, y))
22
22
 
@@ -26,7 +26,7 @@ model_params = {
26
26
  "height": 20,
27
27
  }
28
28
 
29
- model1 = Schelling(20, 20, 0.8, 0.2, 3)
29
+ model1 = Schelling()
30
30
 
31
31
  HappyPlot = make_plot_component({"happy": "tab:green"})
32
32
 
@@ -24,23 +24,12 @@ To install the dependencies use pip and the requirements.txt in this directory.
24
24
 
25
25
  ## How to Run
26
26
 
27
- To run the model interactively, run ``mesa runserver`` in this directory. e.g.
27
+ To run the model interactively, in this directory, run the following command
28
28
 
29
29
  ```
30
- $ mesa runserver
30
+ $ solara run app.py
31
31
  ```
32
32
 
33
- Then open your browser to [http://127.0.0.1:8521/](http://127.0.0.1:8521/) and press Reset, then Run.
34
-
35
- or
36
-
37
- Directly run the file ``run.py`` in the terminal. e.g.
38
-
39
- ```
40
- $ python run.py
41
- ```
42
-
43
-
44
33
  ## Files
45
34
 
46
35
  * ``model.py``: Contains the agent class, and the overall model class.
@@ -103,7 +103,7 @@ model1 = VirusOnNetwork()
103
103
 
104
104
  page = SolaraViz(
105
105
  model1,
106
- [
106
+ components=[
107
107
  SpacePlot,
108
108
  StatePlot,
109
109
  get_resistant_susceptible_ratio,
@@ -43,10 +43,10 @@ if TYPE_CHECKING:
43
43
  @solara.component
44
44
  def SolaraViz(
45
45
  model: Model | solara.Reactive[Model],
46
- *,
47
46
  components: list[reacton.core.Component]
48
47
  | list[Callable[[Model], reacton.core.Component]]
49
48
  | Literal["default"] = "default",
49
+ *,
50
50
  play_interval: int = 100,
51
51
  simulator: Simulator | None = None,
52
52
  model_params=None,
@@ -276,7 +276,7 @@ def SimulatorController(
276
276
  running.value = True
277
277
  simulator.reset()
278
278
  model.value = model.value = model.value.__class__(
279
- simulator, **model_parameters.value
279
+ simulator=simulator, **model_parameters.value
280
280
  )
281
281
 
282
282
  def do_play_pause():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: Mesa
3
- Version: 3.0.1
3
+ Version: 3.0.2
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
@@ -1,4 +1,4 @@
1
- mesa/__init__.py,sha256=8B9IpZf-BdiuFZqO7WrQ9uT9O6Pe0o7oUr0U-q4v_xI,657
1
+ mesa/__init__.py,sha256=VuQfSpSoRqzqyiVdHe0lS5yFYaNIaZDHkacxmDc6oT4,657
2
2
  mesa/agent.py,sha256=k85bw5iVX0MmaVlJg3mG_liobN_sIVsrZf76YZ_hMyA,25289
3
3
  mesa/batchrunner.py,sha256=sMFLTxj5avP_-HGO0leLVuxXK2dH0xdPopvhAmawwRQ,7213
4
4
  mesa/datacollection.py,sha256=xyb07aBpd-HSDh5bk-XcVqGiDu5bfaLlxj5eDlGIwqY,16138
@@ -9,7 +9,7 @@ mesa/examples/README.md,sha256=dNn8kv0BNQem3NNhO5mbOANQoK8UUYOo7rnkCFV9tnE,2882
9
9
  mesa/examples/__init__.py,sha256=fP1vcexySnKowS2CKhfeyYLt058VpIkK26EOo3btyO0,825
10
10
  mesa/examples/advanced/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  mesa/examples/advanced/epstein_civil_violence/Epstein Civil Violence.ipynb,sha256=yh50ZAK2BVJyJIKsQTTxywnasqWn1IiQUVrwmZKue4w,29032
12
- mesa/examples/advanced/epstein_civil_violence/Readme.md,sha256=IEU5IZTe5EbvAA2vkYxiIw8vK3O0MZcjbxzn8I2cQic,1874
12
+ mesa/examples/advanced/epstein_civil_violence/Readme.md,sha256=RXuGIZAibz3KVkP51PGjwzcRx2R9Ettmh3qbDTPqDcg,1735
13
13
  mesa/examples/advanced/epstein_civil_violence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  mesa/examples/advanced/epstein_civil_violence/agents.py,sha256=0X4JLj2K2cl1bACkFLI6-K6tKbr2SLZlAy_kjgUDjzA,5863
15
15
  mesa/examples/advanced/epstein_civil_violence/app.py,sha256=puJmjkEevHyilfDpnkE65Y2ax6JEyOALg-IEtK8jBKk,1787
@@ -23,20 +23,20 @@ mesa/examples/advanced/pd_grid/model.py,sha256=DiHGeX7fR1slvcAzbmDCxnmXJ2Txjmju_
23
23
  mesa/examples/advanced/sugarscape_g1mt/Readme.md,sha256=x3kKw1Rre2FPkNhGDLtdzeThmH089mxsGYUPZUeu26k,3595
24
24
  mesa/examples/advanced/sugarscape_g1mt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  mesa/examples/advanced/sugarscape_g1mt/agents.py,sha256=zE7zbO2_OaQiFDq_-t-0hv4ButBWv26dnS1zaPc3_ZE,10183
26
- mesa/examples/advanced/sugarscape_g1mt/app.py,sha256=PYuHoAH4AfU8fbrkBpY-ZW8evwz5izLEP8srN1CHp_Y,1946
26
+ mesa/examples/advanced/sugarscape_g1mt/app.py,sha256=ZB0jIBG6sLrVXxmuQyqqhJyaSCLvWmbe8oqgn7oaWcs,2781
27
27
  mesa/examples/advanced/sugarscape_g1mt/model.py,sha256=NFQRqwuOwP3kz1fNNPEm2XkdbS0G3-TgneiJdQZHqck,6111
28
28
  mesa/examples/advanced/sugarscape_g1mt/sugar-map.txt,sha256=zZtGYciBPT4miZVnbVuoQ5TugTmGrbDWV9yb5KH6tnU,5000
29
29
  mesa/examples/advanced/sugarscape_g1mt/tests.py,sha256=UNahmZTgLquSqmoi_9GcE3JP0qBHjkrHFZ15NMm0ce8,2517
30
30
  mesa/examples/advanced/wolf_sheep/Readme.md,sha256=6zrtCg4Fb-hgQxqdLMpTkIYMwD6owCv8BMz_qn0N98Q,3165
31
31
  mesa/examples/advanced/wolf_sheep/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  mesa/examples/advanced/wolf_sheep/agents.py,sha256=SISizN_alheFAXEP3NaeQTx22SPs0v3pRYqXKRyuXCo,3801
33
- mesa/examples/advanced/wolf_sheep/app.py,sha256=PwXnrjqlx73I4nlXiG7himbscwyvr9LrueHXbSOqCA0,2498
33
+ mesa/examples/advanced/wolf_sheep/app.py,sha256=IIl-gDh1O3oYIvrXXGmKHbW5Iw3ZpCn691dGwKgyI3E,2508
34
34
  mesa/examples/advanced/wolf_sheep/model.py,sha256=UYUY8GP6YA64mbJkWDr9eUSZlE8naxv8-a2qaGPdUXE,4531
35
35
  mesa/examples/basic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
36
  mesa/examples/basic/boid_flockers/Readme.md,sha256=4KJinsLPtUciQSMzvaX3tU5r1HTUg3AFOFDKy73W5RE,894
37
37
  mesa/examples/basic/boid_flockers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- mesa/examples/basic/boid_flockers/agents.py,sha256=OgmiMCgUa1723v8cBGI0SVAld2U4ZJguE3vqFF5JihU,3779
39
- mesa/examples/basic/boid_flockers/app.py,sha256=5wKzyctjTq3iX1MJc69l3753a_iyYhFq3kv54h7dGSE,1289
38
+ mesa/examples/basic/boid_flockers/agents.py,sha256=72oL4jWEiJfSgshSEcL44irptIY6WAQDRAQ0cO2MxS8,3827
39
+ mesa/examples/basic/boid_flockers/app.py,sha256=CLXzUJ8-9FdrNVElGsAas6l37n_qSv8akH4hXEZQ8OY,1141
40
40
  mesa/examples/basic/boid_flockers/model.py,sha256=scy0OaYzQVY5vVarsI7dUydynwoH3-uYoYcsBTtwtyA,3399
41
41
  mesa/examples/basic/boltzmann_wealth_model/Readme.md,sha256=wl1ylO9KWoTiuIJKOnk2FGdcmyVUqJ5wiSbVUa3WWAc,2725
42
42
  mesa/examples/basic/boltzmann_wealth_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -47,19 +47,19 @@ mesa/examples/basic/boltzmann_wealth_model/st_app.py,sha256=X8C7w294UidciQqiiuBW
47
47
  mesa/examples/basic/conways_game_of_life/Readme.md,sha256=VRgN6roF6leQ_IMYwxFypSfFjZo9jnCd-rkPTjpp7II,1453
48
48
  mesa/examples/basic/conways_game_of_life/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
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=DrA1CwiT43rDMZGSDO62B77_QymySkq486IeV9K8nJY,1433
51
- mesa/examples/basic/conways_game_of_life/model.py,sha256=c7lwSelxTplbQlbfGjBSevS2TEg5DFJA8bvhbYbyD_s,1174
50
+ mesa/examples/basic/conways_game_of_life/app.py,sha256=Q2Z16x2D9e8BYErn7xIvgdwyxKeeQKO2wNPbxi2acEw,1894
51
+ mesa/examples/basic/conways_game_of_life/model.py,sha256=8L88m8F_YauwWeDef6UA2myQoAwC0B5sH5jsfyLn-u8,1221
52
52
  mesa/examples/basic/conways_game_of_life/st_app.py,sha256=_poqU2VR4rfiiq4WFXTbOUSW7liuM86iq913mW6LS50,2400
53
53
  mesa/examples/basic/schelling/Readme.md,sha256=CRKBfYtnLJLlTKLsTRQ-7gsQRxVxDooOBN5uP8PEtaU,2296
54
54
  mesa/examples/basic/schelling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  mesa/examples/basic/schelling/agents.py,sha256=BzipyAU5d_H4DoTm3xkeZLDazsr49rbaVr_kyk1rDJA,937
56
56
  mesa/examples/basic/schelling/analysis.ipynb,sha256=JDJy6-U6eO-LrHWxZr1c3lkvtoY0DNHa-kJ4J-Z-wwo,5804
57
- mesa/examples/basic/schelling/app.py,sha256=DlePd3iTkBSzurRy1vbZXlAugpxcEMFFR5Iy6b9RWp8,973
57
+ mesa/examples/basic/schelling/app.py,sha256=UDIL6MBIfFPLNT8D9Y0sV0aJwfgQR9aNZxq5png8Gbs,954
58
58
  mesa/examples/basic/schelling/model.py,sha256=ruqiMNBBsWV81srYZgdsfDVwgMWYuw2VAzSQhsK5E98,2762
59
- mesa/examples/basic/virus_on_network/Readme.md,sha256=UnCkKiJK7wVw40a-oDR6qdf3QpCsBhgNOVZg-2UXPlc,2528
59
+ mesa/examples/basic/virus_on_network/Readme.md,sha256=qmXGx4Fo0tRBvJiiJ684bkWJPn2gcFaiikLwgc5APWI,2336
60
60
  mesa/examples/basic/virus_on_network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
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=Bxjm2FHxnbjQd3V1absTM4GDOrWOlOYZtYMn3Yy0Ol8,2439
62
+ mesa/examples/basic/virus_on_network/app.py,sha256=6bkIYXj1cdhhBksVT5UN8OrrZFVrHJXRzIknhlQcuu4,2450
63
63
  mesa/examples/basic/virus_on_network/model.py,sha256=jQoCmvygwCvhUrlL0l7V8GcDLv94CgwtuK7DDGU8q8g,2813
64
64
  mesa/experimental/UserParam.py,sha256=f32nmFjroe76HpxU75ZCEOqFW2nAsDfmqIf8kQ1zt-E,2086
65
65
  mesa/experimental/__init__.py,sha256=faBYyHSp-sFQPaBx8-WsLToVKCndpSzpt18HmNZtasM,385
@@ -81,15 +81,15 @@ mesa/experimental/devs/examples/epstein_civil_violence.py,sha256=E8YSV3O5ihKsntG
81
81
  mesa/experimental/devs/examples/wolf_sheep.py,sha256=1eb1CfYNQoprqSJat-LPYPvwWH1ENQdj39viEqwSk0s,8103
82
82
  mesa/visualization/__init__.py,sha256=o30F2VApnDJ6Zq0_U5_wBnj-6-Bu7FGPsOq3A6p2EqA,743
83
83
  mesa/visualization/mpl_space_drawing.py,sha256=yf3Sc7pm5EJLxfWQdtR-9PcUtZveEEjar1WUr7qwI4o,20057
84
- mesa/visualization/solara_viz.py,sha256=zdM4OXol7-LGg0mSYm3XbxaEqKJPPqlxxuA5rY5G60o,17937
84
+ mesa/visualization/solara_viz.py,sha256=pGtfjFfFMLwF9vmy5btiHRZww6NGoiKu0tzNdhZaYj4,17947
85
85
  mesa/visualization/user_param.py,sha256=Dl2WOwLYLf0pfLpabCZtIdFRyKZrK6Qtc3utZx5GPYg,2139
86
86
  mesa/visualization/utils.py,sha256=lJHgRKF5BHLf72Tw3YpwyiWuRoIimaTKQ7xBCw_Rx3A,146
87
87
  mesa/visualization/components/__init__.py,sha256=Bq3nrPikcaIo9BSs0O3zptWVLlUmAkLo3s0mEmpH1RE,3022
88
88
  mesa/visualization/components/altair_components.py,sha256=wotpFFQgMY-ZR3lNVm_fRos-iDg0Wjnj6Tk67_7f1SQ,5847
89
89
  mesa/visualization/components/matplotlib_components.py,sha256=xQETaFyHIfmL_9JwrLIgubuIQ7-pp7TMoXT1WMmozus,5441
90
- mesa-3.0.1.dist-info/METADATA,sha256=9jjOsPVzWuvIfpzrmHt1zghWhA4F64f3KRzbc_tJBmE,9782
91
- mesa-3.0.1.dist-info/WHEEL,sha256=3U_NnUcV_1B1kPkYaPzN-irRckL5VW_lytn0ytO_kRY,87
92
- mesa-3.0.1.dist-info/entry_points.txt,sha256=IOcQtetGF8l4wHpOs_hGb19Rz-FS__BMXOJR10IBPsA,39
93
- mesa-3.0.1.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
94
- mesa-3.0.1.dist-info/licenses/NOTICE,sha256=GbsWoK0QWv1JyZ_xer2s-jNilv0RtWl-0UrtlJANHPg,578
95
- mesa-3.0.1.dist-info/RECORD,,
90
+ mesa-3.0.2.dist-info/METADATA,sha256=msHzQcCASIeP1Wv3W5SUyYLJiZ3GOeC5-dT1GMLlHCw,9782
91
+ mesa-3.0.2.dist-info/WHEEL,sha256=3U_NnUcV_1B1kPkYaPzN-irRckL5VW_lytn0ytO_kRY,87
92
+ mesa-3.0.2.dist-info/entry_points.txt,sha256=IOcQtetGF8l4wHpOs_hGb19Rz-FS__BMXOJR10IBPsA,39
93
+ mesa-3.0.2.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
94
+ mesa-3.0.2.dist-info/licenses/NOTICE,sha256=GbsWoK0QWv1JyZ_xer2s-jNilv0RtWl-0UrtlJANHPg,578
95
+ mesa-3.0.2.dist-info/RECORD,,
File without changes