@@ -29,7 +29,7 @@ async def save_cache(self) -> None:
2929 cache_data_to_save : dict [str , str ] = {}
3030 for mac , node_type in self ._nodetypes .items ():
3131 cache_data_to_save [mac ] = node_type .name
32- _LOGGER .debug ("Save NodeTypes for %s Nodes" , str (len (cache_data_to_save )))
32+ _LOGGER .debug ("Save NodeTypes for %s Nodes" , (len (cache_data_to_save )))
3333 await self .write_cache (
3434 cache_data_to_save , True
3535 ) # rewrite set to True is required
@@ -47,9 +47,9 @@ async def restore_cache(self) -> None:
4747 node_type : NodeType | None = None
4848 # Backward-compatible parsing: support full enums, enum names, or numeric values
4949 val = node_value .strip ()
50- key = val .split ("." , 1 )[1 ] if val .startswith ("NodeType." ) else val
50+ key = ( val .split ("." , 1 )[1 ] if val .startswith ("NodeType." ) else val ). upper ()
5151 node_type = NodeType .__members__ .get (key ) # e.g., "CIRCLE"
52- if node_type is None and val . isdigit (): # e.g., "2"
52+ if node_type is None :
5353 try :
5454 node_type = NodeType (int (val ))
5555 except ValueError :
@@ -92,5 +92,9 @@ async def prune_cache(self, registry: list[str]) -> None:
9292 continue
9393 if (node_type := self .get_nodetype (mac )) is not None :
9494 new_nodetypes [mac ] = node_type
95+
96+ if new_nodetypes == self ._nodetypes :
97+ _LOGGER .debug ("prune_cache: no changes; skipping save" )
98+ return
9599 self ._nodetypes = new_nodetypes
96100 await self .save_cache ()
0 commit comments