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