From 7838364241d69587c1a7ab7ed91f9e08813acc90 Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Tue, 15 Apr 2025 16:49:27 +0100 Subject: [PATCH 1/3] Using generics types --- aws_lambda_powertools/logging/buffer/functions.py | 3 ++- aws_lambda_powertools/logging/formatter.py | 4 +++- aws_lambda_powertools/logging/formatters/datadog.py | 4 +++- aws_lambda_powertools/logging/logger.py | 4 +++- aws_lambda_powertools/logging/utils.py | 4 +++- tests/functional/logger/required_dependencies/test_logger.py | 3 ++- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/aws_lambda_powertools/logging/buffer/functions.py b/aws_lambda_powertools/logging/buffer/functions.py index cc266354e91..cbd453bcb00 100644 --- a/aws_lambda_powertools/logging/buffer/functions.py +++ b/aws_lambda_powertools/logging/buffer/functions.py @@ -2,10 +2,11 @@ import sys import time -from typing import TYPE_CHECKING, Any, Mapping +from typing import TYPE_CHECKING, Any if TYPE_CHECKING: import logging + from collections.abc import Mapping def _create_buffer_record( diff --git a/aws_lambda_powertools/logging/formatter.py b/aws_lambda_powertools/logging/formatter.py index a330b043f75..2d9b07776bc 100644 --- a/aws_lambda_powertools/logging/formatter.py +++ b/aws_lambda_powertools/logging/formatter.py @@ -11,12 +11,14 @@ from contextvars import ContextVar from datetime import datetime, timezone from functools import partial -from typing import TYPE_CHECKING, Any, Callable, Generator, Iterable +from typing import TYPE_CHECKING, Any from aws_lambda_powertools.shared import constants from aws_lambda_powertools.shared.functions import powertools_dev_is_set if TYPE_CHECKING: + from collections.abc import Callable, Generator, Iterable + from aws_lambda_powertools.logging.types import LogRecord, LogStackTrace RESERVED_LOG_ATTRS = ( diff --git a/aws_lambda_powertools/logging/formatters/datadog.py b/aws_lambda_powertools/logging/formatters/datadog.py index 4f140d93683..03c8c11e4d5 100644 --- a/aws_lambda_powertools/logging/formatters/datadog.py +++ b/aws_lambda_powertools/logging/formatters/datadog.py @@ -1,10 +1,12 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any, Callable +from typing import TYPE_CHECKING, Any from aws_lambda_powertools.logging.formatter import LambdaPowertoolsFormatter if TYPE_CHECKING: + from collections.abc import Callable + from aws_lambda_powertools.logging.types import LogRecord diff --git a/aws_lambda_powertools/logging/logger.py b/aws_lambda_powertools/logging/logger.py index cb190030432..3dae687e7e6 100644 --- a/aws_lambda_powertools/logging/logger.py +++ b/aws_lambda_powertools/logging/logger.py @@ -14,7 +14,7 @@ import sys import warnings from contextlib import contextmanager -from typing import IO, TYPE_CHECKING, Any, Callable, Generator, Iterable, Mapping, TypeVar, cast, overload +from typing import IO, TYPE_CHECKING, Any, TypeVar, cast, overload from aws_lambda_powertools.logging.buffer.cache import LoggerBufferCache from aws_lambda_powertools.logging.buffer.functions import _check_minimum_buffer_log_level, _create_buffer_record @@ -45,6 +45,8 @@ from aws_lambda_powertools.warnings import PowertoolsUserWarning if TYPE_CHECKING: + from collections.abc import Callable, Generator, Iterable, Mapping + from aws_lambda_powertools.logging.buffer.config import LoggerBufferConfig from aws_lambda_powertools.shared.types import AnyCallableT diff --git a/aws_lambda_powertools/logging/utils.py b/aws_lambda_powertools/logging/utils.py index ccf704579e3..91a683ee0ce 100644 --- a/aws_lambda_powertools/logging/utils.py +++ b/aws_lambda_powertools/logging/utils.py @@ -1,9 +1,11 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Callable +from typing import TYPE_CHECKING if TYPE_CHECKING: + from collections.abc import Callable + from aws_lambda_powertools.logging.logger import Logger PACKAGE_LOGGER = "aws_lambda_powertools" diff --git a/tests/functional/logger/required_dependencies/test_logger.py b/tests/functional/logger/required_dependencies/test_logger.py index a33c59521ed..21fd7c612ed 100644 --- a/tests/functional/logger/required_dependencies/test_logger.py +++ b/tests/functional/logger/required_dependencies/test_logger.py @@ -9,8 +9,9 @@ import string import sys from collections import namedtuple +from collections.abc import Callable, Iterable from datetime import datetime, timezone -from typing import Any, Callable, Dict, Iterable, List, Optional, Union +from typing import Any, Dict, List, Optional, Union import pytest From c6aa911c793644cc1a2f884d30137eca881c9df0 Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Tue, 15 Apr 2025 16:59:55 +0100 Subject: [PATCH 2/3] Using generics types --- aws_lambda_powertools/logging/formatter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws_lambda_powertools/logging/formatter.py b/aws_lambda_powertools/logging/formatter.py index 2d9b07776bc..503dc0021b3 100644 --- a/aws_lambda_powertools/logging/formatter.py +++ b/aws_lambda_powertools/logging/formatter.py @@ -70,7 +70,7 @@ def append_context_keys(self, **additional_keys: Any) -> Generator[None, None, N yield # These specific thread-safe methods are necessary to manage shared context in concurrent environments. - # They prevent race conditions and ensure data consistency across multiple threads. + # They prevent race conditions and ensure data consistency across multiple threads and logger. def thread_safe_append_keys(self, **additional_keys) -> None: raise NotImplementedError() From 58634180715b65219894c13d3dd6cecac0598d22 Mon Sep 17 00:00:00 2001 From: Leandro Damascena Date: Tue, 15 Apr 2025 17:35:13 +0100 Subject: [PATCH 3/3] Using generics types --- .../logger/required_dependencies/test_logger.py | 14 ++++++++------ .../test_logger_powertools_formatter.py | 2 ++ .../required_dependencies/test_logger_utils.py | 2 ++ .../test_logger_with_package_logger.py | 2 ++ .../test_powertools_logger_buffer.py | 2 ++ .../test_logger_buffer_cache.py | 2 ++ .../test_logger_buffer_config.py | 2 ++ .../test_logger_buffer_functions.py | 2 ++ 8 files changed, 22 insertions(+), 6 deletions(-) diff --git a/tests/functional/logger/required_dependencies/test_logger.py b/tests/functional/logger/required_dependencies/test_logger.py index 21fd7c612ed..d0dc6f52dd6 100644 --- a/tests/functional/logger/required_dependencies/test_logger.py +++ b/tests/functional/logger/required_dependencies/test_logger.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import functools import inspect import io @@ -11,7 +13,7 @@ from collections import namedtuple from collections.abc import Callable, Iterable from datetime import datetime, timezone -from typing import Any, Dict, List, Optional, Union +from typing import Any import pytest @@ -834,12 +836,12 @@ def test_logger_custom_powertools_formatter_clear_state(stdout, service_name, la class CustomFormatter(LambdaPowertoolsFormatter): def __init__( self, - json_serializer: Optional[Callable[[Dict], str]] = None, - json_deserializer: Optional[Callable[[Union[Dict, str, bool, int, float]], str]] = None, - json_default: Optional[Callable[[Any], Any]] = None, - datefmt: Optional[str] = None, + json_serializer: Callable[[dict], str] | None = None, + json_deserializer: Callable[[dict, str, bool, int, float], str] | None = None, + json_default: Callable[[Any], Any] | None = None, + datefmt: str | None = None, use_datetime_directive: bool = False, - log_record_order: Optional[List[str]] = None, + log_record_order: list[str] | None = None, utc: bool = False, **kwargs, ): diff --git a/tests/functional/logger/required_dependencies/test_logger_powertools_formatter.py b/tests/functional/logger/required_dependencies/test_logger_powertools_formatter.py index a5189d783d7..2b6f9349340 100644 --- a/tests/functional/logger/required_dependencies/test_logger_powertools_formatter.py +++ b/tests/functional/logger/required_dependencies/test_logger_powertools_formatter.py @@ -1,5 +1,7 @@ """aws_lambda_logging tests.""" +from __future__ import annotations + import io import json import os diff --git a/tests/functional/logger/required_dependencies/test_logger_utils.py b/tests/functional/logger/required_dependencies/test_logger_utils.py index 53a94d612ad..f0a2baf3cf4 100644 --- a/tests/functional/logger/required_dependencies/test_logger_utils.py +++ b/tests/functional/logger/required_dependencies/test_logger_utils.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import io import json import logging diff --git a/tests/functional/logger/required_dependencies/test_logger_with_package_logger.py b/tests/functional/logger/required_dependencies/test_logger_with_package_logger.py index 2dfd6016333..e34972b34ad 100644 --- a/tests/functional/logger/required_dependencies/test_logger_with_package_logger.py +++ b/tests/functional/logger/required_dependencies/test_logger_with_package_logger.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import io import json import logging diff --git a/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py b/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py index 44e87d6102c..3c149d6dfed 100644 --- a/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py +++ b/tests/functional/logger/required_dependencies/test_powertools_logger_buffer.py @@ -1,5 +1,7 @@ """aws_lambda_logging tests.""" +from __future__ import annotations + import io import json import random diff --git a/tests/unit/logger/required_dependencies/test_logger_buffer_cache.py b/tests/unit/logger/required_dependencies/test_logger_buffer_cache.py index 00ae7696281..814331844a2 100644 --- a/tests/unit/logger/required_dependencies/test_logger_buffer_cache.py +++ b/tests/unit/logger/required_dependencies/test_logger_buffer_cache.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from aws_lambda_powertools.logging.buffer.cache import LoggerBufferCache diff --git a/tests/unit/logger/required_dependencies/test_logger_buffer_config.py b/tests/unit/logger/required_dependencies/test_logger_buffer_config.py index 1cb0f1a5f0d..6c3061b1d87 100644 --- a/tests/unit/logger/required_dependencies/test_logger_buffer_config.py +++ b/tests/unit/logger/required_dependencies/test_logger_buffer_config.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import pytest from aws_lambda_powertools.logging.buffer import LoggerBufferConfig diff --git a/tests/unit/logger/required_dependencies/test_logger_buffer_functions.py b/tests/unit/logger/required_dependencies/test_logger_buffer_functions.py index 5a714b095d2..c4e80ec3058 100644 --- a/tests/unit/logger/required_dependencies/test_logger_buffer_functions.py +++ b/tests/unit/logger/required_dependencies/test_logger_buffer_functions.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from aws_lambda_powertools.logging.buffer.functions import _check_minimum_buffer_log_level