@@ -51,17 +51,19 @@ def add(self, node: DoubleLinkedListNode[T, U]) -> None:
5151 prev = self .rear .prev
5252 if not prev :
5353 raise ValueError ("Invalid list state" )
54-
54+
5555 prev .next = node
5656 node .prev = prev
5757 self .rear .prev = node
5858 node .next = self .rear
5959
60- def remove (self , node : DoubleLinkedListNode [T , U ]) -> DoubleLinkedListNode [T , U ] | None :
60+ def remove (
61+ self , node : DoubleLinkedListNode [T , U ]
62+ ) -> DoubleLinkedListNode [T , U ] | None :
6163 """Remove node from list"""
6264 if not node .prev or not node .next :
6365 return None
64-
66+
6567 node .prev .next = node .next
6668 node .next .prev = node .prev
6769 node .prev = node .next = None
@@ -95,6 +97,7 @@ def get(self, key: T) -> U | None:
9597 return node .val
9698 self .misses += 1
9799 return None
100+
98101 def put (self , key : T , value : U ) -> None :
99102 """Set value for key"""
100103 if key in self .cache :
@@ -118,6 +121,7 @@ def put(self, key: T, value: U) -> None:
118121 @classmethod
119122 def decorator (cls , size : int = 128 ) -> Callable [[Callable [P , R ]], Callable [P , R ]]:
120123 """LRU Cache decorator"""
124+
121125 def decorator_func (func : Callable [P , R ]) -> Callable [P , R ]:
122126 cache = cls [Any , R ](size )
123127
@@ -131,10 +135,11 @@ def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
131135
132136 wrapper .cache_info = lambda : cache # Direct attribute assignment
133137 return wrapper
134-
138+
135139 return decorator_func
136140
137141
138142if __name__ == "__main__" :
139143 import doctest
144+
140145 doctest .testmod ()
0 commit comments