@@ -43,7 +43,7 @@ def add(self, node: DoubleLinkedListNode) -> None:
4343 prev = self .rear .prev
4444 if prev is None :
4545 raise ValueError ("Invalid list state" )
46-
46+
4747 prev .next = node
4848 node .prev = prev
4949 self .rear .prev = node
@@ -53,7 +53,7 @@ def remove(self, node: DoubleLinkedListNode) -> DoubleLinkedListNode | None:
5353 """Remove node from list"""
5454 if node .prev is None or node .next is None :
5555 return None
56-
56+
5757 node .prev .next = node .next
5858 node .next .prev = node .prev
5959 node .prev = node .next = None
@@ -111,27 +111,28 @@ def put(self, key: Any, value: Any) -> None:
111111
112112def lru_cache (size : int = 128 ) -> Callable [[Callable [P , R ]], Callable [P , R ]]:
113113 """LRU Cache decorator"""
114+
114115 def decorator_func (func : Callable [P , R ]) -> Callable [P , R ]:
115116 cache = LRUCache (size )
116-
117+
117118 @wraps (func )
118119 def wrapper (* args : P .args , ** kwargs : P .kwargs ) -> R :
119120 key = (args , tuple (sorted (kwargs .items ())))
120- cached = cache .get (key )
121- if cached is not None :
121+ if (cached := cache .get (key )) is not None :
122122 return cached
123-
123+
124124 result = func (* args , ** kwargs )
125125 cache .put (key , result )
126126 return result
127-
127+
128128 # Add cache_info attribute
129129 wrapper .cache_info = lambda : cache # type: ignore[attr-defined]
130130 return wrapper
131-
131+
132132 return decorator_func
133133
134134
135135if __name__ == "__main__" :
136136 import doctest
137+
137138 doctest .testmod ()
0 commit comments