44import  os 
55import  random 
66import  sys 
7- from  typing  import  Any , Callable , Dict , Iterable , Optional , Union 
7+ from  typing  import  Any , Callable , Dict , Iterable , Optional , TypeVar ,  Union 
88
99import  jmespath 
1010
1919
2020is_cold_start  =  True 
2121
22+ PowertoolsFormatter  =  TypeVar ("PowertoolsFormatter" , bound = BasePowertoolsFormatter )
23+ 
2224
2325def  _is_cold_start () ->  bool :
2426    """Verifies whether is cold start 
@@ -70,8 +72,8 @@ class Logger(logging.Logger):  # lgtm [py/missing-call-to-init]
7072        sample rate for debug calls within execution context defaults to 0.0 
7173    stream: sys.stdout, optional 
7274        valid output for a logging stream, by default sys.stdout 
73-     logger_formatter: BasePowertoolsFormatter , optional 
74-         custom logging formatter that implements BasePowertoolsFormatter  
75+     logger_formatter: PowertoolsFormatter , optional 
76+         custom logging formatter that implements PowertoolsFormatter  
7577    logger_handler: logging.Handler, optional 
7678        custom logging handler e.g. logging.FileHandler("file.log") 
7779
@@ -87,7 +89,7 @@ class Logger(logging.Logger):  # lgtm [py/missing-call-to-init]
8789    json_default : Callable, optional 
8890        function to coerce unserializable values, by default `str()` 
8991
90-         Only used when no custom JSON encoder  is set 
92+         Only used when no custom formatter  is set 
9193    utc : bool, optional 
9294        set logging timestamp to UTC, by default False to continue to use local time as per stdlib 
9395    log_record_order : list, optional 
@@ -170,7 +172,7 @@ def __init__(
170172        child : bool  =  False ,
171173        sampling_rate : float  =  None ,
172174        stream : sys .stdout  =  None ,
173-         logger_formatter : Optional [BasePowertoolsFormatter ] =  None ,
175+         logger_formatter : Optional [PowertoolsFormatter ] =  None ,
174176        logger_handler : Optional [logging .Handler ] =  None ,
175177        ** kwargs ,
176178    ):
@@ -198,7 +200,7 @@ def __getattr__(self, name):
198200        return  getattr (self ._logger , name )
199201
200202    def  _get_logger (self ):
201-         """  Returns a Logger named {self.service}, or {self.service.filename} for child loggers""" 
203+         """Returns a Logger named {self.service}, or {self.service.filename} for child loggers""" 
202204        logger_name  =  self .service 
203205        if  self .child :
204206            logger_name  =  f"{ self .service } { self ._get_caller_filename ()}  
@@ -346,7 +348,7 @@ def registered_handler(self) -> logging.Handler:
346348        return  handlers [0 ]
347349
348350    @property  
349-     def  registered_formatter (self ) ->  Optional [BasePowertoolsFormatter ]:
351+     def  registered_formatter (self ) ->  Optional [PowertoolsFormatter ]:
350352        """Convenience property to access logger formatter""" 
351353        return  self .registered_handler .formatter 
352354
@@ -384,7 +386,7 @@ def set_correlation_id(self, value: str):
384386
385387    @staticmethod  
386388    def  _get_log_level (level : Union [str , int , None ]) ->  Union [str , int ]:
387-         """  Returns preferred log level set by the customer in upper case  """ 
389+         """Returns preferred log level set by the customer in upper case""" 
388390        if  isinstance (level , int ):
389391            return  level 
390392
@@ -396,7 +398,7 @@ def _get_log_level(level: Union[str, int, None]) -> Union[str, int]:
396398
397399    @staticmethod  
398400    def  _get_caller_filename ():
399-         """  Return caller filename by finding the caller frame  """ 
401+         """Return caller filename by finding the caller frame""" 
400402        # Current frame         => _get_logger() 
401403        # Previous frame        => logger.py 
402404        # Before previous frame => Caller 
0 commit comments