Skip to content

Commit 6cd3fd8

Browse files
committedJul 5, 2020
Fix makes_use_of
1 parent 0669a19 commit 6cd3fd8

8 files changed

+101
-48
lines changed
 

‎.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ docker-compose.yml
119119
# Mypy files
120120
.mypy_cache/
121121

122+
test_outputs/classifier_test.yaml
122123
test_outputs/stochastic_tournament_0.csv
123124
test_outputs/stochastic_tournament_1.csv
124125
test_outputs/test_fingerprint.csv

‎axelrod/classifier.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ def classify_player(self, player: Type[Player]) -> T:
8484
manipulates_state,
8585
]
8686

87+
all_classifiers_map = {c.name: c.classify_player for c in all_classifiers}
88+
8789

8890
def rebuild_classifier_table(
8991
classifiers: List[Classifier],
@@ -216,7 +218,13 @@ def try_lookup() -> Any:
216218
return player.classifier[key]
217219

218220
# Try to find the name in the all_player_dicts, read from disk.
219-
return try_lookup()
221+
lookup = try_lookup()
222+
if lookup is not None:
223+
return lookup
224+
225+
# If we can't find it, then return a function that calculates fresh.
226+
global all_classifiers_map
227+
return all_classifiers_map[key](player)
220228

221229
return classify_player_for_this_classifier
222230

‎axelrod/data/all_classifiers.yml

+69-36
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ AON2:
4141
Adaptive:
4242
inspects_source: false
4343
long_run_time: false
44-
makes_use_of: !!set {}
44+
makes_use_of: !!set
45+
game: null
4546
manipulates_source: false
4647
manipulates_state: false
4748
memory_depth: .inf
@@ -146,7 +147,8 @@ Appeaser:
146147
Arrogant QLearner:
147148
inspects_source: false
148149
long_run_time: false
149-
makes_use_of: !!set {}
150+
makes_use_of: !!set
151+
game: null
150152
manipulates_source: false
151153
manipulates_state: false
152154
memory_depth: .inf
@@ -187,7 +189,8 @@ Bully:
187189
Bush Mosteller:
188190
inspects_source: false
189191
long_run_time: false
190-
makes_use_of: !!set {}
192+
makes_use_of: !!set
193+
game: null
191194
manipulates_source: false
192195
manipulates_state: false
193196
memory_depth: .inf
@@ -203,7 +206,8 @@ Calculator:
203206
Cautious QLearner:
204207
inspects_source: false
205208
long_run_time: false
206-
makes_use_of: !!set {}
209+
makes_use_of: !!set
210+
game: null
207211
manipulates_source: false
208212
manipulates_state: false
209213
memory_depth: .inf
@@ -307,7 +311,8 @@ DBS:
307311
Darwin:
308312
inspects_source: true
309313
long_run_time: false
310-
makes_use_of: !!set {}
314+
makes_use_of: !!set
315+
game: null
311316
manipulates_source: false
312317
manipulates_state: true
313318
memory_depth: .inf
@@ -509,7 +514,8 @@ First by Davis:
509514
First by Downing:
510515
inspects_source: false
511516
long_run_time: false
512-
makes_use_of: !!set {}
517+
makes_use_of: !!set
518+
game: null
513519
manipulates_source: false
514520
manipulates_state: false
515521
memory_depth: .inf
@@ -575,6 +581,7 @@ First by Tideman and Chieruzzi:
575581
inspects_source: false
576582
long_run_time: false
577583
makes_use_of: !!set
584+
game: null
578585
length: null
579586
manipulates_source: false
580587
manipulates_state: false
@@ -647,7 +654,8 @@ Fortress4:
647654
GTFT:
648655
inspects_source: false
649656
long_run_time: false
650-
makes_use_of: !!set {}
657+
makes_use_of: !!set
658+
game: null
651659
manipulates_source: false
652660
manipulates_state: false
653661
memory_depth: 1
@@ -839,7 +847,8 @@ Hard Tit For Tat:
839847
Hesitant QLearner:
840848
inspects_source: false
841849
long_run_time: false
842-
makes_use_of: !!set {}
850+
makes_use_of: !!set
851+
game: null
843852
manipulates_source: false
844853
manipulates_state: false
845854
memory_depth: .inf
@@ -871,7 +880,8 @@ Inverse Punisher:
871880
Knowledgeable Worse and Worse:
872881
inspects_source: false
873882
long_run_time: false
874-
makes_use_of: !!set {}
883+
makes_use_of: !!set
884+
length: null
875885
manipulates_source: false
876886
manipulates_state: false
877887
memory_depth: .inf
@@ -999,55 +1009,62 @@ Meta Mixer:
9991009
Meta Winner:
10001010
inspects_source: false
10011011
long_run_time: true
1002-
makes_use_of: !!set {}
1012+
makes_use_of: !!set
1013+
game: null
10031014
manipulates_source: false
10041015
manipulates_state: false
10051016
memory_depth: .inf
10061017
stochastic: true
10071018
Meta Winner Deterministic:
10081019
inspects_source: false
10091020
long_run_time: true
1010-
makes_use_of: !!set {}
1021+
makes_use_of: !!set
1022+
game: null
10111023
manipulates_source: false
10121024
manipulates_state: false
10131025
memory_depth: .inf
10141026
stochastic: true
10151027
Meta Winner Ensemble:
10161028
inspects_source: false
10171029
long_run_time: true
1018-
makes_use_of: !!set {}
1030+
makes_use_of: !!set
1031+
game: null
10191032
manipulates_source: false
10201033
manipulates_state: false
10211034
memory_depth: .inf
10221035
stochastic: true
10231036
Meta Winner Finite Memory:
10241037
inspects_source: false
10251038
long_run_time: true
1026-
makes_use_of: !!set {}
1039+
makes_use_of: !!set
1040+
game: null
10271041
manipulates_source: false
10281042
manipulates_state: false
10291043
memory_depth: .inf
10301044
stochastic: true
10311045
Meta Winner Long Memory:
10321046
inspects_source: false
10331047
long_run_time: true
1034-
makes_use_of: !!set {}
1048+
makes_use_of: !!set
1049+
game: null
10351050
manipulates_source: false
10361051
manipulates_state: false
10371052
memory_depth: .inf
10381053
stochastic: true
10391054
Meta Winner Memory One:
10401055
inspects_source: false
10411056
long_run_time: true
1042-
makes_use_of: !!set {}
1057+
makes_use_of: !!set
1058+
game: null
10431059
manipulates_source: false
10441060
manipulates_state: false
10451061
memory_depth: .inf
10461062
stochastic: true
10471063
Meta Winner Stochastic:
10481064
inspects_source: false
10491065
long_run_time: true
1050-
makes_use_of: !!set {}
1066+
makes_use_of: !!set
1067+
game: null
10511068
manipulates_source: false
10521069
manipulates_state: false
10531070
memory_depth: .inf
@@ -1113,39 +1130,40 @@ N Tit(s) For M Tat(s):
11131130
NMWE Deterministic:
11141131
inspects_source: false
11151132
long_run_time: true
1116-
makes_use_of: !!set {}
1133+
makes_use_of: &id001 !!set
1134+
game: null
11171135
manipulates_source: false
11181136
manipulates_state: false
11191137
memory_depth: .inf
11201138
stochastic: true
11211139
NMWE Finite Memory:
11221140
inspects_source: false
11231141
long_run_time: true
1124-
makes_use_of: !!set {}
1142+
makes_use_of: *id001
11251143
manipulates_source: false
11261144
manipulates_state: false
11271145
memory_depth: .inf
11281146
stochastic: true
11291147
NMWE Long Memory:
11301148
inspects_source: false
11311149
long_run_time: true
1132-
makes_use_of: !!set {}
1150+
makes_use_of: *id001
11331151
manipulates_source: false
11341152
manipulates_state: false
11351153
memory_depth: .inf
11361154
stochastic: true
11371155
NMWE Memory One:
11381156
inspects_source: false
11391157
long_run_time: true
1140-
makes_use_of: !!set {}
1158+
makes_use_of: *id001
11411159
manipulates_source: false
11421160
manipulates_state: false
11431161
memory_depth: .inf
11441162
stochastic: true
11451163
NMWE Stochastic:
11461164
inspects_source: false
11471165
long_run_time: true
1148-
makes_use_of: !!set {}
1166+
makes_use_of: *id001
11491167
manipulates_source: false
11501168
manipulates_state: false
11511169
memory_depth: .inf
@@ -1177,15 +1195,16 @@ Nice Average Copier:
11771195
Nice Meta Winner:
11781196
inspects_source: false
11791197
long_run_time: true
1180-
makes_use_of: !!set {}
1198+
makes_use_of: !!set
1199+
game: null
11811200
manipulates_source: false
11821201
manipulates_state: false
11831202
memory_depth: .inf
11841203
stochastic: true
11851204
Nice Meta Winner Ensemble:
11861205
inspects_source: false
11871206
long_run_time: true
1188-
makes_use_of: !!set {}
1207+
makes_use_of: *id001
11891208
manipulates_source: false
11901209
manipulates_state: false
11911210
memory_depth: .inf
@@ -1410,7 +1429,8 @@ Ripoff:
14101429
Risky QLearner:
14111430
inspects_source: false
14121431
long_run_time: false
1413-
makes_use_of: !!set {}
1432+
makes_use_of: !!set
1433+
game: null
14141434
manipulates_source: false
14151435
manipulates_state: false
14161436
memory_depth: .inf
@@ -1490,7 +1510,8 @@ Second by Gladstein:
14901510
Second by GraaskampKatzen:
14911511
inspects_source: false
14921512
long_run_time: false
1493-
makes_use_of: !!set {}
1513+
makes_use_of: !!set
1514+
game: null
14941515
manipulates_source: false
14951516
manipulates_state: false
14961517
memory_depth: .inf
@@ -1546,7 +1567,8 @@ Second by RichardHufford:
15461567
Second by Rowsam:
15471568
inspects_source: false
15481569
long_run_time: false
1549-
makes_use_of: !!set {}
1570+
makes_use_of: !!set
1571+
game: null
15501572
manipulates_source: false
15511573
manipulates_state: false
15521574
memory_depth: .inf
@@ -1562,7 +1584,8 @@ Second by Tester:
15621584
Second by Tideman and Chieruzzi:
15631585
inspects_source: false
15641586
long_run_time: false
1565-
makes_use_of: !!set {}
1587+
makes_use_of: !!set
1588+
game: null
15661589
manipulates_source: false
15671590
manipulates_state: false
15681591
memory_depth: .inf
@@ -1683,6 +1706,7 @@ Stalker:
16831706
inspects_source: false
16841707
long_run_time: false
16851708
makes_use_of: !!set
1709+
game: null
16861710
length: null
16871711
manipulates_source: false
16881712
manipulates_state: false
@@ -1899,55 +1923,62 @@ Worse and Worse 3:
18991923
ZD-Extort-2:
19001924
inspects_source: false
19011925
long_run_time: false
1902-
makes_use_of: !!set {}
1926+
makes_use_of: !!set
1927+
game: null
19031928
manipulates_source: false
19041929
manipulates_state: false
19051930
memory_depth: 1
19061931
stochastic: true
19071932
ZD-Extort-2 v2:
19081933
inspects_source: false
19091934
long_run_time: false
1910-
makes_use_of: !!set {}
1935+
makes_use_of: !!set
1936+
game: null
19111937
manipulates_source: false
19121938
manipulates_state: false
19131939
memory_depth: 1
19141940
stochastic: true
19151941
ZD-Extort-4:
19161942
inspects_source: false
19171943
long_run_time: false
1918-
makes_use_of: !!set {}
1944+
makes_use_of: !!set
1945+
game: null
19191946
manipulates_source: false
19201947
manipulates_state: false
19211948
memory_depth: 1
19221949
stochastic: true
19231950
ZD-Extort3:
19241951
inspects_source: false
19251952
long_run_time: false
1926-
makes_use_of: !!set {}
1953+
makes_use_of: !!set
1954+
game: null
19271955
manipulates_source: false
19281956
manipulates_state: false
19291957
memory_depth: 1
19301958
stochastic: true
19311959
ZD-Extortion:
19321960
inspects_source: false
19331961
long_run_time: false
1934-
makes_use_of: !!set {}
1962+
makes_use_of: !!set
1963+
game: null
19351964
manipulates_source: false
19361965
manipulates_state: false
19371966
memory_depth: 1
19381967
stochastic: true
19391968
ZD-GEN-2:
19401969
inspects_source: false
19411970
long_run_time: false
1942-
makes_use_of: !!set {}
1971+
makes_use_of: !!set
1972+
game: null
19431973
manipulates_source: false
19441974
manipulates_state: false
19451975
memory_depth: 1
19461976
stochastic: true
19471977
ZD-GTFT-2:
19481978
inspects_source: false
19491979
long_run_time: false
1950-
makes_use_of: !!set {}
1980+
makes_use_of: !!set
1981+
game: null
19511982
manipulates_source: false
19521983
manipulates_state: false
19531984
memory_depth: 1
@@ -1963,15 +1994,17 @@ ZD-Mem2:
19631994
ZD-Mischief:
19641995
inspects_source: false
19651996
long_run_time: false
1966-
makes_use_of: !!set {}
1997+
makes_use_of: !!set
1998+
game: null
19671999
manipulates_source: false
19682000
manipulates_state: false
19692001
memory_depth: 1
19702002
stochastic: true
19712003
ZD-SET-2:
19722004
inspects_source: false
19732005
long_run_time: false
1974-
makes_use_of: !!set {}
2006+
makes_use_of: !!set
2007+
game: null
19752008
manipulates_source: false
19762009
manipulates_state: false
19772010
memory_depth: 1

‎axelrod/makes_use_of.py

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import inspect
22
import re
3-
from typing import Callable, Set, Text, Type
3+
from typing import Callable, Set, Text, Type, Union
44

55
from axelrod.player import Player
66

@@ -16,9 +16,22 @@ def method_makes_use_of(method: Callable) -> Set[Text]:
1616

1717

1818
def makes_use_of(player: Type[Player]) -> Set[Text]:
19+
if not isinstance(player, Player):
20+
player = player()
21+
1922
result = set()
2023
for method in inspect.getmembers(player, inspect.ismethod):
2124
if method[0] == "__init__":
2225
continue
2326
result.update(method_makes_use_of(method[1]))
2427
return result
28+
29+
30+
# def makes_use_of_variant(
31+
# player_or_method: Union[Callable, Type[Player]], verbose=False
32+
# ) -> Set[Text]:
33+
# """A version of makes_use_of that works on functions or player classes."""
34+
# try:
35+
# return method_makes_use_of(player_or_method)
36+
# except:
37+
# return makes_use_of(player_or_method)

‎axelrod/strategy_transformers.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from axelrod.strategies.sequence_player import SequencePlayer
1818
from .action import Action
19-
from .makes_use_of import method_makes_use_of
19+
from .makes_use_of import *
2020
from .player import Player
2121
from .random_ import random_choice
2222

@@ -133,11 +133,10 @@ def strategy(self, opponent):
133133
classifier = reclassifier(original_classifier, *args, **kwargs)
134134
else:
135135
classifier = original_classifier
136-
strategy_wrapper_uses = method_makes_use_of(strategy_wrapper)
137-
if "makes_use_of" in classifier:
138-
classifier["makes_use_of"].update(strategy_wrapper_uses)
139-
elif strategy_wrapper_uses:
140-
classifier["makes_use_of"] = strategy_wrapper_uses
136+
classifier_makes_use_of = makes_use_of(PlayerClass)
137+
classifier_makes_use_of.update(
138+
method_makes_use_of(strategy_wrapper))
139+
classifier["makes_use_of"] = classifier_makes_use_of
141140

142141
# Define the new __repr__ method to add the wrapper arguments
143142
# at the end of the name

‎axelrod/tests/strategies/test_axelrod_second.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ class TestTranquilizer(TestPlayer):
165165
expected_classifier = {
166166
"memory_depth": float("inf"),
167167
"stochastic": True,
168-
"makes_use_of": {"game"},
168+
"makes_use_of": set(),
169169
"long_run_time": False,
170170
"inspects_source": False,
171171
"manipulates_source": False,
@@ -1823,7 +1823,7 @@ class TestRowsam(TestPlayer):
18231823
expected_classifier = {
18241824
"memory_depth": float("inf"),
18251825
"stochastic": False,
1826-
"makes_use_of": set("game"),
1826+
"makes_use_of": {"game"},
18271827
"long_run_time": False,
18281828
"inspects_source": False,
18291829
"manipulates_source": False,

‎axelrod/tests/strategies/test_darwin.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class TestDarwin(TestPlayer):
1414
expected_classifier = {
1515
"memory_depth": float("inf"),
1616
"stochastic": False,
17-
"makes_use_of": set(),
17+
"makes_use_of": {"game"},
1818
"long_run_time": False,
1919
"inspects_source": True,
2020
"manipulates_source": False,

‎axelrod/tests/strategies/test_player.py

-1
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,6 @@ def classifier_test(self, expected_class_classifier=None):
637637
),
638638
)
639639

640-
641640
class TestMatch(unittest.TestCase):
642641
"""Test class for heads up play between two given players. Plays an
643642
axelrod match between the two players."""

0 commit comments

Comments
 (0)
Please sign in to comment.