1414from asyncio import iscoroutinefunction
1515from collections .abc import Callable , Iterator
1616from contextlib import contextmanager
17+ from dataclasses import dataclass
1718from datetime import datetime
1819from inspect import getframeinfo , stack
1920from pathlib import Path
@@ -584,31 +585,32 @@ def set_parent_module_log_level(
584585 logging .getLogger (parent_module ).setLevel (desired_log_level )
585586
586587
587- def _store_logger_state (loggers : list [logging .Logger ]) -> list [dict [str , Any ]]:
588- """Store the original state of loggers for later restoration."""
588+ @dataclass (frozen = True )
589+ class _LoggerState :
590+ logger : logging .Logger
591+ handlers : list [logging .Handler ]
592+ propagate : bool
593+
594+
595+ def _store_logger_state (loggers : list [logging .Logger ]) -> list [_LoggerState ]:
589596 return [
590- {
591- "logger" : logger ,
592- "handlers" : logger .handlers .copy (),
593- "propagate" : logger .propagate ,
594- }
597+ _LoggerState (logger , logger .handlers .copy (), logger .propagate )
595598 for logger in loggers
596599 ]
597600
598601
599- def _restore_logger_state (original_state : list [dict [str , Any ]]) -> None :
600- """Restore loggers to their original state."""
602+ def _restore_logger_state (original_state : list [_LoggerState ]) -> None :
601603 for state in original_state :
602- logger = state [ " logger" ]
604+ logger = state . logger
603605 logger .handlers .clear ()
604- logger .handlers .extend (state [ " handlers" ] )
605- logger .propagate = state [ " propagate" ]
606+ logger .handlers .extend (state . handlers )
607+ logger .propagate = state . propagate
606608
607609
608610def _apply_comprehensive_logging_setup (
609611 all_loggers : list [logging .Logger ],
610612 root_handler : logging .Handler ,
611- ) -> list [dict [ str , Any ] ]:
613+ ) -> list [_LoggerState ]:
612614 """
613615 Apply comprehensive logging setup: clear all handlers, ensure propagation,
614616 and set up root logger with the provided handler.
@@ -644,6 +646,10 @@ def _apply_comprehensive_logging_setup(
644646 logger .handlers .clear ()
645647 logger .propagate = True
646648
649+ # Set up root logger with the provided handler only
650+ root_logger .handlers .clear ()
651+ root_logger .addHandler (root_handler )
652+
647653 if loggers_modified :
648654 _logger .info (
649655 "Modified %d loggers for comprehensive logging: %s" ,
@@ -656,8 +662,4 @@ def _apply_comprehensive_logging_setup(
656662 ),
657663 )
658664
659- # Set up root logger with the provided handler only
660- root_logger .handlers .clear ()
661- root_logger .addHandler (root_handler )
662-
663665 return original_logger_state
0 commit comments