Skip to content

Commit 5c2f815

Browse files
refactor(event_source): use standard collections for types (#6479)
Using generics types Co-authored-by: Ana Falcão <[email protected]>
1 parent 4ebea7f commit 5c2f815

File tree

53 files changed

+132
-21
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+132
-21
lines changed

aws_lambda_powertools/utilities/data_classes/active_mq_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
from __future__ import annotations
22

33
from functools import cached_property
4-
from typing import Any, Iterator
4+
from typing import TYPE_CHECKING, Any
55

66
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
77
from aws_lambda_powertools.utilities.data_classes.shared_functions import base64_decode
88

9+
if TYPE_CHECKING:
10+
from collections.abc import Iterator
11+
912

1013
class ActiveMQMessage(DictWrapper):
1114
@property

aws_lambda_powertools/utilities/data_classes/common.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,17 @@
99
import base64
1010
import json
1111
import warnings
12+
from collections.abc import Mapping
1213
from functools import cached_property
13-
from typing import TYPE_CHECKING, Any, Callable, Iterator, Mapping, overload
14+
from typing import TYPE_CHECKING, Any, overload
1415

1516
from typing_extensions import deprecated
1617

1718
from aws_lambda_powertools.warnings import PowertoolsDeprecationWarning
1819

1920
if TYPE_CHECKING:
21+
from collections.abc import Callable, Iterator
22+
2023
from aws_lambda_powertools.shared.headers_serializer import BaseHeadersSerializer
2124

2225
from aws_lambda_powertools.utilities.data_classes.shared_functions import (

aws_lambda_powertools/utilities/data_classes/dynamo_db_stream_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22

33
from enum import Enum
44
from functools import cached_property
5-
from typing import Any, Iterator
5+
from typing import TYPE_CHECKING, Any
66

77
from aws_lambda_powertools.shared.dynamodb_deserializer import TypeDeserializer
88
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
99

10+
if TYPE_CHECKING:
11+
from collections.abc import Iterator
12+
1013

1114
class StreamViewType(Enum):
1215
"""The type of data from the modified DynamoDB item that was captured in this stream record"""

aws_lambda_powertools/utilities/data_classes/event_source.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from __future__ import annotations
22

3-
from typing import TYPE_CHECKING, Any, Callable
3+
from typing import TYPE_CHECKING, Any
44

55
from aws_lambda_powertools.middleware_factory import lambda_handler_decorator
66

77
if TYPE_CHECKING:
8+
from collections.abc import Callable
9+
810
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
911
from aws_lambda_powertools.utilities.typing import LambdaContext
1012

aws_lambda_powertools/utilities/data_classes/kafka_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
import base64
44
from functools import cached_property
5-
from typing import Any, Iterator
5+
from typing import TYPE_CHECKING, Any
66

77
from aws_lambda_powertools.utilities.data_classes.common import CaseInsensitiveDict, DictWrapper
88

9+
if TYPE_CHECKING:
10+
from collections.abc import Iterator
11+
912

1013
class KafkaEventRecord(DictWrapper):
1114
@property

aws_lambda_powertools/utilities/data_classes/kinesis_firehose_event.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@
55
import warnings
66
from dataclasses import dataclass, field
77
from functools import cached_property
8-
from typing import TYPE_CHECKING, Any, Callable, ClassVar, Iterator
8+
from typing import TYPE_CHECKING, Any, ClassVar
99

1010
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
1111

1212
if TYPE_CHECKING:
13+
from collections.abc import Callable, Iterator
14+
1315
from typing_extensions import Literal
1416

1517

aws_lambda_powertools/utilities/data_classes/kinesis_stream_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
import base64
44
import json
55
import zlib
6-
from typing import Iterator
6+
from typing import TYPE_CHECKING
77

88
from aws_lambda_powertools.utilities.data_classes.cloud_watch_logs_event import (
99
CloudWatchLogsDecodedData,
1010
)
1111
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
1212

13+
if TYPE_CHECKING:
14+
from collections.abc import Iterator
15+
1316

1417
class KinesisStreamRecordPayload(DictWrapper):
1518
@property

aws_lambda_powertools/utilities/data_classes/s3_batch_operation_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import warnings
44
from dataclasses import dataclass, field
5-
from typing import Any, Iterator, Literal
5+
from typing import TYPE_CHECKING, Any, Literal
66
from urllib.parse import unquote_plus
77

88
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
@@ -11,6 +11,9 @@
1111
VALID_RESULT_CODES: tuple[str, str, str] = ("Succeeded", "TemporaryFailure", "PermanentFailure")
1212
RESULT_CODE_TYPE = Literal["Succeeded", "TemporaryFailure", "PermanentFailure"]
1313

14+
if TYPE_CHECKING:
15+
from collections.abc import Iterator
16+
1417

1518
@dataclass(repr=False, order=False)
1619
class S3BatchOperationResponseRecord:

aws_lambda_powertools/utilities/data_classes/s3_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
from __future__ import annotations
22

3-
from typing import Iterator
3+
from typing import TYPE_CHECKING
44
from urllib.parse import unquote_plus
55

66
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
77
from aws_lambda_powertools.utilities.data_classes.event_bridge_event import (
88
EventBridgeEvent,
99
)
1010

11+
if TYPE_CHECKING:
12+
from collections.abc import Iterator
13+
1114

1215
class S3Identity(DictWrapper):
1316
@property

aws_lambda_powertools/utilities/data_classes/ses_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from __future__ import annotations
22

3-
from typing import Iterator
3+
from typing import TYPE_CHECKING
44

55
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
66

7+
if TYPE_CHECKING:
8+
from collections.abc import Iterator
9+
710

811
class SESMailHeader(DictWrapper):
912
@property

aws_lambda_powertools/utilities/data_classes/sns_event.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from __future__ import annotations
22

3-
from typing import Iterator
3+
from typing import TYPE_CHECKING
44

55
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
66

7+
if TYPE_CHECKING:
8+
from collections.abc import Iterator
9+
710

811
class SNSMessageAttribute(DictWrapper):
912
@property

aws_lambda_powertools/utilities/data_classes/sqs_event.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
from __future__ import annotations
22

33
from functools import cached_property
4-
from typing import Any, Dict, ItemsView, Iterator, TypeVar
4+
from typing import TYPE_CHECKING, Any, ItemsView, Iterator, TypeVar
55

66
from aws_lambda_powertools.utilities.data_classes import S3Event
77
from aws_lambda_powertools.utilities.data_classes.common import DictWrapper
88
from aws_lambda_powertools.utilities.data_classes.sns_event import SNSMessage
99

10+
if TYPE_CHECKING:
11+
from collections.abc import Iterator
12+
1013

1114
class SQSRecordAttributes(DictWrapper):
1215
@property
@@ -86,7 +89,7 @@ def data_type(self) -> str:
8689
return self["dataType"]
8790

8891

89-
class SQSMessageAttributes(Dict[str, SQSMessageAttribute]):
92+
class SQSMessageAttributes(dict[str, SQSMessageAttribute]):
9093
def __getitem__(self, key: str) -> SQSMessageAttribute | None: # type: ignore
9194
item = super().get(key)
9295
return None if item is None else SQSMessageAttribute(item) # type: ignore

tests/unit/data_classes/_boto3/test_code_pipeline_job_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import json
24
import zipfile
35
from io import StringIO

tests/unit/data_classes/required_dependencies/test_active_mq_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes.active_mq_event import (

tests/unit/data_classes/required_dependencies/test_alb_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import ALBEvent
24
from tests.functional.utils import load_event
35

tests/unit/data_classes/required_dependencies/test_api_gateway_authorizer.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes.api_gateway_authorizer_event import (

tests/unit/data_classes/required_dependencies/test_api_gateway_authorizer_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes.api_gateway_authorizer_event import (

tests/unit/data_classes/required_dependencies/test_api_gateway_authorizer_websocket_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes.api_gateway_authorizer_event import (

tests/unit/data_classes/required_dependencies/test_api_gateway_proxy_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import (
24
APIGatewayProxyEvent,
35
APIGatewayProxyEventV2,

tests/unit/data_classes/required_dependencies/test_api_gateway_websocket_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import json
24

35
from aws_lambda_powertools.utilities.data_classes import APIGatewayWebSocketEvent

tests/unit/data_classes/required_dependencies/test_appsync_authorizer_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes.appsync_authorizer_event import (
24
AppSyncAuthorizerEvent,
35
AppSyncAuthorizerResponse,

tests/unit/data_classes/required_dependencies/test_appsync_resolver_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes import AppSyncResolverEvent

tests/unit/data_classes/required_dependencies/test_aws_config_rule_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import json
24

35
from aws_lambda_powertools.utilities.data_classes import AWSConfigRuleEvent

tests/unit/data_classes/required_dependencies/test_bedrock_agent_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import BedrockAgentEvent
24
from tests.functional.utils import load_event
35

tests/unit/data_classes/required_dependencies/test_cloud_watch_alarm_event.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
from __future__ import annotations
2+
13
import json
2-
from typing import Dict, List
34

45
from aws_lambda_powertools.utilities.data_classes import CloudWatchAlarmEvent
56
from tests.functional.utils import load_event
@@ -36,7 +37,7 @@ def test_cloud_watch_alarm_event_single_metric():
3637
assert parsed_event.alarm_data.configuration.alarm_actions_suppressor_extension_period is None
3738
assert parsed_event.alarm_data.configuration.alarm_actions_suppressor_wait_period is None
3839

39-
assert isinstance(parsed_event.alarm_data.configuration.metrics, List)
40+
assert isinstance(parsed_event.alarm_data.configuration.metrics, list)
4041
# metric position 0
4142
metric_0 = parsed_event.alarm_data.configuration.metrics[0]
4243
raw_metric_0 = raw_event["alarmData"]["configuration"]["metrics"][0]
@@ -53,7 +54,7 @@ def test_cloud_watch_alarm_event_single_metric():
5354
assert metric_1.metric_stat.stat == raw_metric_1["metricStat"]["stat"]
5455
assert metric_1.metric_stat.period == raw_metric_1["metricStat"]["period"]
5556
assert metric_1.metric_stat.unit is None
56-
assert isinstance(metric_1.metric_stat.metric, Dict)
57+
assert isinstance(metric_1.metric_stat.metric, dict)
5758

5859

5960
def test_cloud_watch_alarm_event_composite_metric():
@@ -102,4 +103,4 @@ def test_cloud_watch_alarm_event_composite_metric():
102103
parsed_event.alarm_data.configuration.alarm_actions_suppressor
103104
== raw_event["alarmData"]["configuration"]["actionsSuppressor"]
104105
)
105-
assert isinstance(parsed_event.alarm_data.configuration.metrics, List)
106+
assert isinstance(parsed_event.alarm_data.configuration.metrics, list)

tests/unit/data_classes/required_dependencies/test_cloud_watch_custom_widget_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import (
24
CloudWatchDashboardCustomWidgetEvent,
35
)

tests/unit/data_classes/required_dependencies/test_cloud_watch_logs_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import CloudWatchLogsEvent
24
from tests.functional.utils import load_event
35

tests/unit/data_classes/required_dependencies/test_cloudformation_custom_resource_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes import (

tests/unit/data_classes/required_dependencies/test_code_deploy_lifecycle_hook_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes import (

tests/unit/data_classes/required_dependencies/test_cognito_user_pool_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from secrets import compare_digest
24

35
from aws_lambda_powertools.utilities.data_classes.cognito_user_pool_event import (

tests/unit/data_classes/required_dependencies/test_connect_contact_flow_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes.connect_contact_flow_event import (
24
ConnectContactFlowChannel,
35
ConnectContactFlowEndpointType,

tests/unit/data_classes/required_dependencies/test_dynamo_db_stream_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from decimal import Clamped, Context, Inexact, Overflow, Rounded, Underflow
24

35
from aws_lambda_powertools.utilities.data_classes.dynamo_db_stream_event import (

tests/unit/data_classes/required_dependencies/test_event_bridge_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import EventBridgeEvent
24
from tests.functional.utils import load_event
35

tests/unit/data_classes/required_dependencies/test_iot_registry_events.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from datetime import datetime
24

35
from aws_lambda_powertools.utilities.data_classes.iot_registry_event import (

tests/unit/data_classes/required_dependencies/test_kafka_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import pytest
24

35
from aws_lambda_powertools.utilities.data_classes import KafkaEvent

tests/unit/data_classes/required_dependencies/test_kinesis_firehose_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import KinesisFirehoseEvent
24
from tests.functional.utils import load_event
35

tests/unit/data_classes/required_dependencies/test_kinesis_firehose_response.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import (
24
KinesisFirehoseDataTransformationRecord,
35
KinesisFirehoseDataTransformationRecordMetadata,

tests/unit/data_classes/required_dependencies/test_kinesis_stream_event.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import base64
24
import json
35

tests/unit/data_classes/required_dependencies/test_lambda_function_url.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from aws_lambda_powertools.utilities.data_classes import LambdaFunctionUrlEvent
24
from aws_lambda_powertools.utilities.data_classes.api_gateway_proxy_event import RequestContextV2Authorizer
35
from tests.functional.utils import load_event

0 commit comments

Comments
 (0)