From 35833acd9af54c13b3a08271621a4f66c97188e5 Mon Sep 17 00:00:00 2001 From: "T.J. Gaffney" Date: Tue, 5 Nov 2024 13:02:24 -0600 Subject: [PATCH 1/4] Change cache pattern --- axelrod/match.py | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/axelrod/match.py b/axelrod/match.py index 19c83abd9..0e9160a55 100644 --- a/axelrod/match.py +++ b/axelrod/match.py @@ -130,7 +130,8 @@ def _cache_update_required(self): A boolean to show whether the deterministic cache should be updated. """ return ( - not self.noise + not self.is_stochastic + and not self.noise and self._cache.mutable and not (any(Classifiers["stochastic"](p) for p in self.players)) ) @@ -182,25 +183,25 @@ def play(self): turns = self.turns cache_key = (self.players[0], self.players[1]) - if self._stochastic or not self._cached_enough_turns(cache_key, turns): - for p in self.players: - if self.reset: - p.reset() - p.set_match_attributes(**self.match_attributes) - # Generate a random seed for the player, if stochastic - if Classifiers["stochastic"](p): - p.set_seed(self._random.random_seed_int()) - result = [] - for _ in range(turns): - plays = self.simultaneous_play( - self.players[0], self.players[1], self.noise - ) - result.append(plays) - - if self._cache_update_required: - self._cache[cache_key] = result - else: - result = self._cache[cache_key][:turns] + if self._cached_enough_turns(cache_key, turns): + return self._cache[cache_key][:turns] + + for p in self.players: + if self.reset: + p.reset() + p.set_match_attributes(**self.match_attributes) + # Generate a random seed for the player, if stochastic + if Classifiers["stochastic"](p): + p.set_seed(self._random.random_seed_int()) + result = [] + for _ in range(turns): + plays = self.simultaneous_play( + self.players[0], self.players[1], self.noise + ) + result.append(plays) + + if self._cache_update_required: + self._cache[cache_key] = result self.result = result return result From 8c49ea37fe3eb9a2b33ff728609588e80f68938a Mon Sep 17 00:00:00 2001 From: "T.J. Gaffney" Date: Mon, 11 Nov 2024 08:08:43 -0600 Subject: [PATCH 2/4] Fix typo --- axelrod/match.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/axelrod/match.py b/axelrod/match.py index 0e9160a55..72ed483aa 100644 --- a/axelrod/match.py +++ b/axelrod/match.py @@ -130,7 +130,7 @@ def _cache_update_required(self): A boolean to show whether the deterministic cache should be updated. """ return ( - not self.is_stochastic + not self._stochastic and not self.noise and self._cache.mutable and not (any(Classifiers["stochastic"](p) for p in self.players)) @@ -195,9 +195,7 @@ def play(self): p.set_seed(self._random.random_seed_int()) result = [] for _ in range(turns): - plays = self.simultaneous_play( - self.players[0], self.players[1], self.noise - ) + plays = self.simultaneous_play(self.players[0], self.players[1], self.noise) result.append(plays) if self._cache_update_required: From 9e36c761b3911d2b7031b78ca9223af53755d8e1 Mon Sep 17 00:00:00 2001 From: "T.J. Gaffney" Date: Mon, 11 Nov 2024 09:07:14 -0600 Subject: [PATCH 3/4] Fix minor bug, set self.cache on early exit --- axelrod/match.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/axelrod/match.py b/axelrod/match.py index 72ed483aa..82ff56302 100644 --- a/axelrod/match.py +++ b/axelrod/match.py @@ -184,7 +184,8 @@ def play(self): cache_key = (self.players[0], self.players[1]) if self._cached_enough_turns(cache_key, turns): - return self._cache[cache_key][:turns] + self.result = self._cache[cache_key][:turns] + return self.result for p in self.players: if self.reset: @@ -202,7 +203,7 @@ def play(self): self._cache[cache_key] = result self.result = result - return result + return self.result def scores(self): """Returns the scores of the previous Match plays.""" From 9a5f9da5dac0ea6dfb1bac05aaa3e7482a4b95d2 Mon Sep 17 00:00:00 2001 From: "T.J. Gaffney" Date: Mon, 11 Nov 2024 09:59:39 -0600 Subject: [PATCH 4/4] Run black with line length --- axelrod/match.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/axelrod/match.py b/axelrod/match.py index 82ff56302..a72af171d 100644 --- a/axelrod/match.py +++ b/axelrod/match.py @@ -196,7 +196,9 @@ def play(self): p.set_seed(self._random.random_seed_int()) result = [] for _ in range(turns): - plays = self.simultaneous_play(self.players[0], self.players[1], self.noise) + plays = self.simultaneous_play( + self.players[0], self.players[1], self.noise + ) result.append(plays) if self._cache_update_required: