11from collections import UserDict
22import pickle
3+ from typing import List , Tuple
34
4- 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 ]
511
612
713class DeterministicCache (UserDict ):
@@ -29,7 +35,7 @@ class DeterministicCache(UserDict):
2935 methods to save/load the cache to/from a file.
3036 """
3137
32- def __init__ (self , file_name = None ):
38+ def __init__ (self , file_name : str = None ) -> None :
3339 """
3440 Parameters
3541 ----------
@@ -42,7 +48,7 @@ def __init__(self, file_name=None):
4248 self .load (file_name )
4349
4450 @staticmethod
45- def _key_transform (key ) :
51+ def _key_transform (key : CachePlayerKey ) -> CacheKey :
4652 """
4753 Parameters
4854 ----------
@@ -51,16 +57,16 @@ def _key_transform(key):
5157 """
5258 return key [0 ].name , key [1 ].name , key [2 ]
5359
54- def __delitem__ (self , key ):
60+ def __delitem__ (self , key : CachePlayerKey ):
5561 return super ().__delitem__ (self ._key_transform (key ))
5662
57- def __getitem__ (self , key ) :
63+ def __getitem__ (self , key : CachePlayerKey ) -> List [ Tuple [ Action , Action ]] :
5864 return super ().__getitem__ (self ._key_transform (key ))
5965
6066 def __contains__ (self , key ):
6167 return super ().__contains__ (self ._key_transform (key ))
6268
63- def __setitem__ (self , key , value ):
69+ def __setitem__ (self , key : CachePlayerKey , value ):
6470 """Overrides the UserDict.__setitem__ method in order to validate
6571 the key/value and also to set the turns attribute"""
6672 if not self .mutable :
@@ -78,7 +84,7 @@ def __setitem__(self, key, value):
7884 super ().__setitem__ (self ._key_transform (key ), value )
7985
8086 @staticmethod
81- def _is_valid_key (key ) :
87+ def _is_valid_key (key : CachePlayerKey ) -> bool :
8288 """Validate a proposed dictionary key.
8389
8490 Parameters
@@ -116,7 +122,7 @@ def _is_valid_key(key):
116122 return True
117123
118124 @staticmethod
119- def _is_valid_value (value ) :
125+ def _is_valid_value (value : List ) -> bool :
120126 """Validate a proposed dictionary value.
121127
122128 Parameters
@@ -133,7 +139,7 @@ def _is_valid_value(value):
133139
134140 return True
135141
136- def save (self , file_name ) :
142+ def save (self , file_name : str ) -> bool :
137143 """Serialise the cache dictionary to a file.
138144
139145 Parameters
@@ -145,7 +151,7 @@ def save(self, file_name):
145151 pickle .dump (self .data , io )
146152 return True
147153
148- def load (self , file_name ) :
154+ def load (self , file_name : str ) -> bool :
149155 """Load a previously saved cache into the dictionary.
150156
151157 Parameters
0 commit comments