5252try :
5353 from pympler .asizeof import Asizer
5454
55- def _get_size_of (val : Any , * , recurse = True ) -> int :
55+ def _get_size_of (val : Any , * , recurse : bool = True ) -> int :
5656 """Get an estimate of the size in bytes of the object.
5757
5858 Args:
@@ -71,7 +71,7 @@ def _get_size_of(val: Any, *, recurse=True) -> int:
7171
7272except ImportError :
7373
74- def _get_size_of (val : Any , * , recurse = True ) -> int :
74+ def _get_size_of (val : Any , * , recurse : bool = True ) -> int :
7575 return 0
7676
7777
@@ -85,15 +85,6 @@ def _get_size_of(val: Any, *, recurse=True) -> int:
8585# a general type var, distinct from either KT or VT
8686T = TypeVar ("T" )
8787
88-
89- def enumerate_leaves (node , depth ):
90- if depth == 0 :
91- yield node
92- else :
93- for n in node .values ():
94- yield from enumerate_leaves (n , depth - 1 )
95-
96-
9788P = TypeVar ("P" )
9889
9990
@@ -102,7 +93,7 @@ class _TimedListNode(ListNode[P]):
10293
10394 __slots__ = ["last_access_ts_secs" ]
10495
105- def update_last_access (self , clock : Clock ):
96+ def update_last_access (self , clock : Clock ) -> None :
10697 self .last_access_ts_secs = int (clock .time ())
10798
10899
@@ -115,7 +106,7 @@ def update_last_access(self, clock: Clock):
115106
116107
117108@wrap_as_background_process ("LruCache._expire_old_entries" )
118- async def _expire_old_entries (clock : Clock , expiry_seconds : int ):
109+ async def _expire_old_entries (clock : Clock , expiry_seconds : int ) -> None :
119110 """Walks the global cache list to find cache entries that haven't been
120111 accessed in the given number of seconds.
121112 """
@@ -163,7 +154,7 @@ async def _expire_old_entries(clock: Clock, expiry_seconds: int):
163154 logger .info ("Dropped %d items from caches" , i )
164155
165156
166- def setup_expire_lru_cache_entries (hs : "HomeServer" ):
157+ def setup_expire_lru_cache_entries (hs : "HomeServer" ) -> None :
167158 """Start a background job that expires all cache entries if they have not
168159 been accessed for the given number of seconds.
169160 """
@@ -183,7 +174,7 @@ def setup_expire_lru_cache_entries(hs: "HomeServer"):
183174 )
184175
185176
186- class _Node :
177+ class _Node ( Generic [ KT , VT ]) :
187178 __slots__ = [
188179 "_list_node" ,
189180 "_global_list_node" ,
@@ -197,8 +188,8 @@ class _Node:
197188 def __init__ (
198189 self ,
199190 root : "ListNode[_Node]" ,
200- key ,
201- value ,
191+ key : KT ,
192+ value : VT ,
202193 cache : "weakref.ReferenceType[LruCache]" ,
203194 clock : Clock ,
204195 callbacks : Collection [Callable [[], None ]] = (),
@@ -409,7 +400,7 @@ def evict() -> None:
409400
410401 def synchronized (f : FT ) -> FT :
411402 @wraps (f )
412- def inner (* args , ** kwargs ) :
403+ def inner (* args : Any , ** kwargs : Any ) -> Any :
413404 with lock :
414405 return f (* args , ** kwargs )
415406
@@ -418,17 +409,19 @@ def inner(*args, **kwargs):
418409 cached_cache_len = [0 ]
419410 if size_callback is not None :
420411
421- def cache_len ():
412+ def cache_len () -> int :
422413 return cached_cache_len [0 ]
423414
424415 else :
425416
426- def cache_len ():
417+ def cache_len () -> int :
427418 return len (cache )
428419
429420 self .len = synchronized (cache_len )
430421
431- def add_node (key , value , callbacks : Collection [Callable [[], None ]] = ()):
422+ def add_node (
423+ key : KT , value : VT , callbacks : Collection [Callable [[], None ]] = ()
424+ ) -> None :
432425 node = _Node (
433426 list_root ,
434427 key ,
@@ -446,7 +439,7 @@ def add_node(key, value, callbacks: Collection[Callable[[], None]] = ()):
446439 if caches .TRACK_MEMORY_USAGE and metrics :
447440 metrics .inc_memory_usage (node .memory )
448441
449- def move_node_to_front (node : _Node ):
442+ def move_node_to_front (node : _Node ) -> None :
450443 node .move_to_front (real_clock , list_root )
451444
452445 def delete_node (node : _Node ) -> int :
@@ -488,7 +481,7 @@ def cache_get(
488481 default : Optional [T ] = None ,
489482 callbacks : Collection [Callable [[], None ]] = (),
490483 update_metrics : bool = True ,
491- ):
484+ ) -> Union [ None , T , VT ] :
492485 node = cache .get (key , None )
493486 if node is not None :
494487 move_node_to_front (node )
@@ -502,7 +495,9 @@ def cache_get(
502495 return default
503496
504497 @synchronized
505- def cache_set (key : KT , value : VT , callbacks : Iterable [Callable [[], None ]] = ()):
498+ def cache_set (
499+ key : KT , value : VT , callbacks : Iterable [Callable [[], None ]] = ()
500+ ) -> None :
506501 node = cache .get (key , None )
507502 if node is not None :
508503 # We sometimes store large objects, e.g. dicts, which cause
@@ -547,7 +542,7 @@ def cache_pop(key: KT, default: T) -> Union[T, VT]:
547542 ...
548543
549544 @synchronized
550- def cache_pop (key : KT , default : Optional [T ] = None ):
545+ def cache_pop (key : KT , default : Optional [T ] = None ) -> Union [ None , T , VT ] :
551546 node = cache .get (key , None )
552547 if node :
553548 delete_node (node )
@@ -612,25 +607,25 @@ def cache_contains(key: KT) -> bool:
612607 self .contains = cache_contains
613608 self .clear = cache_clear
614609
615- def __getitem__ (self , key ) :
610+ def __getitem__ (self , key : KT ) -> VT :
616611 result = self .get (key , self .sentinel )
617612 if result is self .sentinel :
618613 raise KeyError ()
619614 else :
620- return result
615+ return cast ( VT , result )
621616
622- def __setitem__ (self , key , value ) :
617+ def __setitem__ (self , key : KT , value : VT ) -> None :
623618 self .set (key , value )
624619
625- def __delitem__ (self , key , value ) :
620+ def __delitem__ (self , key : KT , value : VT ) -> None :
626621 result = self .pop (key , self .sentinel )
627622 if result is self .sentinel :
628623 raise KeyError ()
629624
630- def __len__ (self ):
625+ def __len__ (self ) -> int :
631626 return self .len ()
632627
633- def __contains__ (self , key ) :
628+ def __contains__ (self , key : KT ) -> bool :
634629 return self .contains (key )
635630
636631 def set_cache_factor (self , factor : float ) -> bool :
0 commit comments