1
1
from collections import UserDict
2
2
import pickle
3
- from typing import Tuple
3
+ from typing import List , Tuple
4
4
5
- from axelrod import Player
5
+ from .actions import Action
6
+ from .player import Player
7
+
8
+
9
+ CachePlayerKey = Tuple [Player , Player , int ]
10
+ CacheKey = Tuple [str , str , int ]
6
11
7
12
8
13
class DeterministicCache (UserDict ):
@@ -30,7 +35,7 @@ class DeterministicCache(UserDict):
30
35
methods to save/load the cache to/from a file.
31
36
"""
32
37
33
- def __init__ (self , file_name : str = None ):
38
+ def __init__ (self , file_name : str = None ) -> None :
34
39
"""
35
40
Parameters
36
41
----------
@@ -43,7 +48,7 @@ def __init__(self, file_name: str=None):
43
48
self .load (file_name )
44
49
45
50
@staticmethod
46
- def _key_transform (key : Tuple [ str , str , int ]) :
51
+ def _key_transform (key : CachePlayerKey ) -> CacheKey :
47
52
"""
48
53
Parameters
49
54
----------
@@ -52,16 +57,16 @@ def _key_transform(key: Tuple[str, str, int]):
52
57
"""
53
58
return key [0 ].name , key [1 ].name , key [2 ]
54
59
55
- def __delitem__ (self , key : Tuple [ str , str , int ] ):
60
+ def __delitem__ (self , key : CachePlayerKey ):
56
61
return super ().__delitem__ (self ._key_transform (key ))
57
62
58
- def __getitem__ (self , key : Tuple [str , str , int ]) :
63
+ def __getitem__ (self , key : CachePlayerKey ) -> List [ Tuple [Action , Action ]] :
59
64
return super ().__getitem__ (self ._key_transform (key ))
60
65
61
- def __contains__ (self , key : Tuple [ str , str , int ] ):
66
+ def __contains__ (self , key ):
62
67
return super ().__contains__ (self ._key_transform (key ))
63
68
64
- def __setitem__ (self , key : Tuple [ str , str , int ] , value ):
69
+ def __setitem__ (self , key : CachePlayerKey , value ):
65
70
"""Overrides the UserDict.__setitem__ method in order to validate
66
71
the key/value and also to set the turns attribute"""
67
72
if not self .mutable :
@@ -79,7 +84,7 @@ def __setitem__(self, key: Tuple[str, str, int], value):
79
84
super ().__setitem__ (self ._key_transform (key ), value )
80
85
81
86
@staticmethod
82
- def _is_valid_key (key : Tuple [ str , str , int ] ) -> bool :
87
+ def _is_valid_key (key : CachePlayerKey ) -> bool :
83
88
"""Validate a proposed dictionary key.
84
89
85
90
Parameters
@@ -117,7 +122,7 @@ def _is_valid_key(key: Tuple[str, str, int]) -> bool:
117
122
return True
118
123
119
124
@staticmethod
120
- def _is_valid_value (value ) -> bool :
125
+ def _is_valid_value (value : List ) -> bool :
121
126
"""Validate a proposed dictionary value.
122
127
123
128
Parameters
@@ -134,7 +139,7 @@ def _is_valid_value(value) -> bool:
134
139
135
140
return True
136
141
137
- def save (self , file_name : str ):
142
+ def save (self , file_name : str ) -> bool :
138
143
"""Serialise the cache dictionary to a file.
139
144
140
145
Parameters
0 commit comments